"Holds back a query's response until a condition is met; every field in the response reflects the data at that moment. Fails with an error after about a minute. Has no effect in mutations and subscriptions." directive @await( "Waits until this object exists, or with `deletedOrGone: true`, until it is deleted or no longer exists." node: AwaitNodeInput, "Whether to wait until the annotated field resolves to a non-null value without errors." notNull: Boolean ) on FIELD "This directive allows results to be deferred during execution" directive @defer( "Deferred behaviour is controlled by this argument" if: Boolean! = true, "A unique label that represents the fragment being deferred" label: String ) on FRAGMENT_SPREAD | INLINE_FRAGMENT directive @deprecated(reason: String) on SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION "This directive disables error propagation when a non nullable field returns null for the given operation." directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Indicates an Input Object is a OneOf Input Object." directive @oneOf on INPUT_OBJECT "The field is `null` only when an error is reported for it. `levels` lists the list depths this applies to, where `0` is the field itself and `1` its items." directive @semanticNonNull(levels: [Int!] = [0]) on FIELD_DEFINITION "Directs the executor to skip this field or fragment when the `if` argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Exposes a URL that specifies the behaviour of this scalar." directive @specifiedBy( "The URL that specifies the behaviour of this scalar." url: String! ) on SCALAR "A set of recipients a broadcast is sent to." interface Audience implements Node { broadcast: Broadcast! id: ID! } "A document attached to an auto message." interface AutoMessageAttachment implements Node { id: ID! } "Who an auto message is sent to." interface AutoMessageRecipient implements Node { id: ID! } "What causes an auto message to be sent." interface AutoMessageTrigger implements Node { id: ID! } "An account held by Attendium that payments are received into or refunded from." interface BankAccount implements Node { id: ID! name: String! } "A set of guests, passes or invitations created or updated together in one operation." interface Batch implements Node { createdAt: DateTime! id: ID! } "A message sent to one or more audiences, such as a push notification." interface Broadcast implements Node & PermissionControlledNode { createdAt: DateTime! creator: User! currentUserHasPermission(permission: Permission!): Boolean! "Why the broadcast failed; set only while `status` is `FAILED`." errorMessage: String "A reference identifying the failure for Attendium support; set only while `status` is `FAILED`." errorReference: String failedCount: Int! id: ID! pendingCount: Int! scheduledAt: DateTime sentAt: DateTime sentCount: Int! status: BroadcastStatus! "The total number of deliveries; `null` until the broadcast starts sending." totalCount: Int userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "A page of a list, paginated by offset-based cursors in the style of . `last` requires `before`, and omitting both `first` and `last` returns all remaining items." interface Connection { pageInfo: PageInfo! } interface Edge { "The item's zero-based position in the full list; pass it as `after` or `before`." cursor: String! } "An object whose available features depend on its account's subscription plan and any feature overrides." interface FeatureControlledNode { id: ID! } "A fee charged on a purchase." interface Fee implements Node { "Whether the seller pays the fee instead of it being added to the buyer's total." absorbed: Boolean! "The fee amount, excluding taxes." amount: Decimal! "A localized description of the fee." description: String! id: ID! taxes: [Tax!]! } "A rule for a fee charged on purchases, set on a payment service provider, a payment service provider account or a single purchase." interface FeeRule implements Node { "Whether the seller pays the fee instead of the buyer." absorbed: Boolean! id: ID! infoUrl: String parent: FeeRuleParent! taxRules: [TaxRule!]! } "Something fee rules can be set on." interface FeeRuleParent implements Node { feeRuleAbsorbedOptions: [FeeRuleAbsorbedOptions!]! feeRules: [FeeRule!]! id: ID! } "A stored file, such as an image or attachment." interface IFile implements Node { contentType: String! id: ID! "The image height in pixels; `null` if the file is not an image." imageHeight: Float "The image width in pixels; `null` if the file is not an image." imageWidth: Float name: String! url: String! } "A product Attendium sells to accounts." interface IProduct implements Node { id: ID! name: String! "The price in the currency of the country with this `Country.code`, or of the requester's country when omitted, falling back to USD when that country can't be determined. `null` when the product has no price in that currency. Fails with a not-found error when no country has the given code." price(countryCode: String): Price prices: [Price!]! published: Boolean! purchasableByInvoice: Boolean! } "A link guests use to sign up for or buy tickets on a set of guest lists. With an invitation template, the template supplies the title, messages, files, form fields, reply-to address and confirmation setting. See ." interface Invitation implements Node { "Markdown shown to guests after they sign up or buy, on their order page and in the confirmation email; supports `{{guest.name}}`, `{{guest.firstName}}`, `{{guest.lastName}}` and `{{event.name}}`." acceptedMessage: String "Markdown shown on the invitation page and in invitation emails; `{{event.name}}` is replaced by the event name. See ." additionalInformationMessage: String "The files `additionalInformationMessage` references by ID or name." additionalInformationMessageFiles: [IFile!]! "The guest lists guests can currently get tickets from, with the remaining ticket counts." availableGuestListConfigurations( "The purchase order's auth code, which grants access to it." purchaseOrderAuthCode: String, "A purchase order whose reserved tickets count as available." purchaseOrderId: ID ): [InvitationAvailableGuestListConfiguration!]! confirmationEmailUserDetailName: String @deprecated(reason : "Use confirmationMessagesEnabled instead") "Whether guests get confirmation emails. Without an invitation template, always `true` when an offered guest list has a price." confirmationMessagesEnabled: Boolean! createdAt: DateTime! creationBatch: Batch creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currentUserHasPermission(permission: Permission!): Boolean! deleted: Boolean! "The reply-to address of invitation and confirmation emails." emailReplyTo: EmailAddress event: Event @deprecated(reason : "Use guestListConfigurations instead; an invitation can span several events.") files: [IFile!]! "The current availability of each guest list configuration." guestListConfigurationStatuses: [InvitationGuestListConfigurationStatus!]! "The guest lists the invitation offers; the invitation template's when the invitation has none." guestListConfigurations: [InvitationGuestListConfiguration!]! id: ID! invitationTemplate: InvitationTemplate lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! lastShareDate: DateTime @deprecated(reason : "Use lastSharedAt instead") "When the invitation was last shared; emailing it sets this." lastSharedAt: DateTime "The maximum number of tickets the invitation can issue across all its guest lists; `null` means no overall limit." maxTicketCount: Int "A label for your own reference, not shown to guests." name: String "Markdown shown on the invitation page when no offered guest list has tickets left; `{{event.name}}` is replaced by the event name." notEnoughTicketsAvailableMessage: String "The files `notEnoughTicketsAvailableMessage` references by ID or name." notEnoughTicketsAvailableMessageFiles: [IFile!]! "The first image referenced in `additionalInformationMessage`; `null` if none." previewImage: File "The user who created the invitation. Guests get tickets through this user's permissions." referenceUser: User! "When guests can no longer get tickets through the invitation; `null` means no deadline." registrationDeadline: DateTime "`additionalInformationMessage` with `{{event.name}}` replaced by the event name." renderedAdditionalInformationMessage: String "`notEnoughTicketsAvailableMessage` with `{{event.name}}` replaced by the event name." renderedNotEnoughTicketsAvailableMessage: String replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") "The number of tickets issued through the invitation." ticketCount: Int "The heading of the invitation page and the sender name of invitation and confirmation emails; `null` means the event name." title: String userDetailFields: [UserDetailField!]! userDetails: [InvitationUserDetail!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "An object whose use depends on its account having accepted Attendium legal documents, such as the terms of service." interface LegalDocumentControlledNode { id: ID! } "A restriction on how many guests a user can add, or when. See ." interface Limit { "The limit of the same type and user inherited from a template that this limit replaces, if any." overriddenLimit: Limit parent: Node! "The user the limit applies to; `null` means everyone: a count limit then caps the total across all users, and a date limit applies to each user." principal: User user: User @deprecated(reason : "Use principal instead") } "An object with a globally unique ID." interface Node { id: ID! } "A payment service provider that processes payments for purchase orders." interface PaymentServiceProvider implements FeeRuleParent & Node { feeRuleAbsorbedOptions: [FeeRuleAbsorbedOptions!]! feeRules: [FeeRule!]! id: ID! name: String! } "An account's connection to a payment service provider, through which it receives payments." interface PaymentServiceProviderAccount implements FeeRuleParent & Node { account: Account! feeRuleAbsorbedOptions: [FeeRuleAbsorbedOptions!]! feeRules: [FeeRule!]! id: ID! name: String "Whether onboarding with the payment service provider is complete." onboarded: Boolean! "A link for completing onboarding with the payment service provider. Errors once `onboarded` is `true`." onboardingUrl: String! paymentServiceProvider: PaymentServiceProvider! "The currencies of the account's ticket purchase fee rules." presentmentCurrencies: [Currency!]! } "An object that users access through permissions. See ." interface PermissionControlledNode implements Node { "Whether the current user has the permission on this object, directly, through a permission that implies it, or inherited from a parent object." currentUserHasPermission(permission: Permission!): Boolean! id: ID! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "A line item in a purchase order." interface Purchase implements Node { appliedCreditNotes: [CreditNote!]! "A description of the purchase in the request's locale." description: String! discounts: [PurchaseDiscount!]! fees: [Fee!]! "The price times quantity plus the fees and VAT the buyer pays, before discounts." grossAmount: Decimal! id: ID! "The price times quantity minus discounts, before fees and VAT." netAmount: Decimal! price: Price purchaseOrder: PurchaseOrder! quantity: Int! "The amount the buyer pays: the net amount plus the fees and VAT the buyer pays." totalAmount: Decimal! version: Int! } "A discount applied to a purchase." interface PurchaseDiscount implements Node { "The amount deducted from the purchase; always positive." amount: Decimal! "A localized description of the discount." description: String! id: ID! purchase: Purchase! } "A voucher that discounts Attendium products when applied to a purchase order." interface PurchaseDiscountVoucher implements Node { "The only buyer account that can use the voucher, or `null` when any account can." account: Account code: String expirationDate: DateTime @deprecated(reason : "Use expiresAt instead") "When the voucher expires, or `null` when it never does." expiresAt: DateTime id: ID! "The maximum number of uses across placed, uncancelled orders, or `null` for no limit." maxUseCount: Int "The maximum number of uses within a single purchase, or `null` for no limit." maxUseCountPerPurchase: Int "The products the voucher discounts." products: [IProduct!]! } "A tax charged on a purchase or a fee." interface Tax { "Whether the seller bears the tax instead of it being added to the buyer's total." absorbed: Boolean! amount: Decimal! "A localized description of the tax, including its rate and base amount." description: String! "The localized name of the tax." name: String! "The tax rate as a fraction, such as `0.25` for 25%." rate: Decimal! } "A rule for a tax charged on purchases or fees, set on a country, an account, a purchase or a fee rule." interface TaxRule implements Node { id: ID! name: String! "The tax rate as a fraction of at most 1, such as `0.25` for 25%." rate: Decimal } "Money moved on a bank account, such as an invoice payment or a refund. Amounts are positive for money received and negative for money paid back." interface Transaction implements Node { "When the transaction was booked on the bank account; `null` until known." accountedAt: DateTime accountingDate: DateTime @deprecated(reason : "Use accountedAt instead") "The amount as booked on the bank account, in `currency`; `null` until known." amount: Decimal bankAccount: BankAccount! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") "The currency of `amount`; `null` until known." currency: Currency id: ID! invoice: Invoice originalAmount: Decimal! originalCurrency: Currency! "The bank's or payment service provider's identifier for the transaction." reference: String } "A custom guest field defined on an event, event template, pass type or invitation. See ." interface UserDetailField { name: String! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } "Details for paying an invoice by bank transfer." union PaymentDetails = InternationalBankAccountPaymentDetails | SwedishBankgiroNumberPaymentDetails "An organization using Attendium, which owns its users, venues and pass types." type Account implements FeatureControlledNode & LegalDocumentControlledNode & Node & PermissionControlledNode { addressLine1: String addressLine2: String billingEmailAddress: String city: String contactName: String @deprecated(reason : "No replacement.") country: Country county: String createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") "The email address of the account's computer security incident response team (CSIRT)." csirtEmailAddress: String currentUserHasPermission(permission: Permission!): Boolean! defaultCurrency: Currency "The sender the account's emails to guests are sent from while it is `sendable`; `null` sends them from Attendium's own address." defaultEmailSender: EmailSender domains: [AccountDomain!]! "The senders the account's emails to guests can be sent from." emailSenders: [EmailSender!]! "Whether the account tracks free tickets. The setting does not restrict free tickets: the API accepts them either way." freeTicketTrackingEnabled: Boolean! id: ID! industryCategory: IndustryCategory "A note copied onto the account's future invoices, such as a purchase order number." invoiceNote: String invoices(overdue: Boolean): [Invoice!]! @deprecated(reason : "Use invoicesConnection instead") "The account's invoices, newest first, excluding canceled ones." invoicesConnection(after: String, before: String, first: Int, last: Int): InvoiceConnection! name: String paymentMethods: [PaymentMethod!]! "The account's payment service provider accounts that the current user can access." paymentServiceProviderAccounts( "Onboarding states to include; omitting it or passing both values returns all." onboarded: [Boolean!] ): [PaymentServiceProviderAccount!]! phoneNumber: String postalCode: String "Whether the account has no tax ID and is based in an EU member state other than Attendium's." recommendedToSetTaxId: Boolean! recommendedToSetVatRegistrationNumber: Boolean! @deprecated(reason : "Use recommendedToSetTaxId instead") "Whether the account is blocked from creating venues, events, event templates and pass types." restricted: Boolean! taxId: String taxRules: [TaxRule!]! timeZone: TimeZone! type: AccountType userAccessPermissions: [UserAccessPermission!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") users: [User!]! vatRegistrationNumber: String @deprecated(reason : "Use taxId instead") } "A domain an account has added, with the DNS record that proves the account controls it." type AccountDomain implements Node { "The TXT record to publish to prove ownership." dnsRecords: [CheckedDnsRecord!]! domain: Domain! id: ID! "Whether the ownership record in `dnsRecords` was found at the last verification." verified: Boolean! } "A user's login with an Attendium username and password." type AttendiumIdentity implements Node { id: ID! username: String! } "An email sent automatically when something happens in an event; requires the `ADMINISTER` permission on the event. See ." type AutoMessage implements Node { attachments: [AutoMessageAttachment!]! "The email body in Markdown. The placeholders `{{event.name}}`, `{{guestList.name}}`, `{{guest.name}}`, `{{guest.firstName}}`, `{{guest.lastName}}`, `{{guestEmailAddress}}` and `{{guestConfirmationUrl}}` are replaced with the triggering guest's values." body: String event: Event! "Files uploaded for the body. Files whose ID or name the body doesn't contain are deleted when the auto message is created or changed." files: [IFile!]! id: ID! recipients: [AutoMessageRecipient!]! replyTo: EmailAddress replyToEmailAddress: String @deprecated(reason : "Use replyTo instead") "The email subject; supports the same placeholders as `body`." subject: String triggers: [AutoMessageTrigger!]! } type CancelEmailBroadcastPayload { emailBroadcast: EmailBroadcast! } type CancelPushBroadcastPayload { pushBroadcast: PushBroadcast! } "The return of a chargeback's funds after the dispute was decided in the seller's favor." type ChargebackReversedTransaction implements Node & Transaction { accountedAt: DateTime accountingDate: DateTime @deprecated(reason : "Use accountedAt instead") amount: Decimal bankAccount: BankAccount! chargebackTransaction: ChargebackTransaction! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currency: Currency id: ID! invoice: Invoice originalAmount: Decimal! originalCurrency: Currency! reference: String } "A payment reversed by the payer's bank after a dispute." type ChargebackTransaction implements Node & Transaction { accountedAt: DateTime accountingDate: DateTime @deprecated(reason : "Use accountedAt instead") amount: Decimal bankAccount: BankAccount! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currency: Currency id: ID! invoice: Invoice originalAmount: Decimal! originalCurrency: Currency! paymentTransaction: PaymentTransaction! reference: String } "A custom field where any number of options can be chosen." type CheckboxesUserDetailField implements UserDetailField { name: String! options: [UserDetailFieldOption!]! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } "A DNS record to publish for a domain, with the result of its last check." type CheckedDnsRecord { "The fully qualified record name." name: String! "The record type, such as `TXT`." type: String! "The record value in zone-file form: double-quoted strings of up to 255 characters each." value: String! "Whether the record was found at the last verification." verified: Boolean! } type ClearGuestListsPayload { guestLists: [GuestList!]! } type CopyEventPayload { event: Event! } "A country with its currency and tax settings." type Country implements Node { "The ISO 3166-1 alpha-2 code, such as `SE`." code: String! currency: Currency! euMember: Boolean! id: ID! "The country name, localized." name: String! standardVatRule: VatRule taxRules: [TaxRule!] } type CreateAutoMessageAttachmentsPayload { attachments: [AutoMessageAttachment!]! } type CreateAutoMessageFilesPayload { files: [IFile!]! } type CreateAutoMessagePayload { autoMessage: AutoMessage! } type CreateAutoMessageRecipientsPayload { recipients: [AutoMessageRecipient!]! } type CreateAutoMessageTriggersPayload { triggers: [AutoMessageTrigger!]! } type CreateEmailBroadcastPayload { emailBroadcast: EmailBroadcast! } type CreateEmailSenderPayload { account: Account! emailSender: EmailSender! } type CreateEventPayload { event: Event! } type CreateEventTemplatePayload { eventTemplate: EventTemplate! } type CreateGuestConfirmationPayload { guestConfirmation: GuestConfirmation! } type CreateGuestEntryConfirmationPayload @deprecated(reason : "Use createGuestConfirmation instead") { guestEntryConfirmation: GuestConfirmation! } type CreateGuestListPayload { guestList: GuestList! } type CreateGuestListTemplatesPayload { guestListTemplates: [GuestListTemplate!]! } type CreateGuestListsPayload { guestLists: [GuestList!]! } type CreateInvitationFilesPayload { files: [IFile!]! } type CreateInvitationPayload { invitation: Invitation! } type CreateInvitationTemplateFilesPayload { files: [IFile!]! } type CreateInvitationTemplatePayload { invitationTemplate: InvitationTemplate! } type CreateInvitationsPayload { invitations: [Invitation!]! } type CreatePassTypePayload { passType: PassType! } type CreatePermanentGuestListPayload @deprecated(reason : "Use CreatePassTypePayload instead") { permanentGuestList: PermanentGuestList! } type CreatePushBroadcastPayload { pushBroadcast: PushBroadcast! } type CreateTaxRulesPayload { taxRules: [TaxRule!]! } type CreateUserPayload { user: User! } type CreateVenuePayload { venue: Venue! } "A document crediting all or part of an invoiced purchase, such as for a refund." type CreditNote implements Node { feeCredits: [FeeCredit!]! id: ID! "The credited part of the purchase's net amount, excluding fees and taxes." netAmount: Decimal! } type Currency { "The ISO 4217 code, such as `SEK`." code: String! decimalCount: Int! } type DeclinePersonalInvitationPayload { invitation: PersonalInvitation! } type DeleteAccountDomainPayload { account: Account! } type DeleteAudiencePayload { deletedAudienceId: ID! } type DeleteAutoMessageAttachmentsPayload { deletedAttachmentIds: [ID!]! } type DeleteAutoMessagePayload { deletedAutoMessageId: ID! } type DeleteAutoMessageRecipientsPayload { deletedRecipientIds: [ID!]! } type DeleteAutoMessageTriggersPayload { deletedTriggerIds: [ID!]! } type DeleteEmailBroadcastPayload { deletedEmailBroadcastId: ID! } type DeleteEmailSenderPayload { account: Account! } type DeleteEventPayload { deletedEventId: ID! } type DeleteEventTemplatePayload { deletedEventTemplateId: ID! } type DeleteEventUserDetailsPayload { deletedUserDetailIds: [ID!]! } type DeleteFilesPayload { deletedFileIds: [ID!]! } type DeleteGuestListPayload { deletedGuestListId: ID! } type DeleteGuestListTemplatesPayload { deletedGuestListTemplateIds: [ID!]! } type DeleteGuestListsPayload { deletedGuestListIds: [ID!]! @deprecated(reason : "Use guestLists instead") guestLists: [GuestList!]! } type DeleteInvitationPayload { deletedInvitationId: ID! } type DeleteInvitationTemplatePayload { deletedInvitationTemplateId: ID! } type DeletePassTypePayload { deletedPassTypeId: ID! } type DeletePassUserDetailsPayload { passes: [Pass!]! } type DeletePermanentGuestListPayload @deprecated(reason : "Use DeletePassTypePayload instead") { deletedPermanentGuestListId: ID! } type DeletePermanentGuestListUserDetailsPayload @deprecated(reason : "Use DeletePassUserDetailsPayload instead") { entries: [PermanentGuestListEntry!]! } type DeletePushBroadcastPayload { deletedPushBroadcastId: ID! } type DeleteTaxRulesPayload { deletedTaxRuleIds: [ID!]! } type DeleteUserPayload { deletedUserId: ID! } type DeleteVenuePayload { deletedVenueId: ID! } "An email sending domain, shared by every account that adds a domain of that name. Verification states are as of the last verification." type Domain implements Node { "Whether the DKIM record in `dnsRecords` is verified." dkimVerified: Boolean! "The DKIM record to publish." dnsRecords: [CheckedDnsRecord!]! id: ID! "The domain name, in lowercase." name: String! "Whether the domain's SPF record authorizes Attendium, directly or through an included record." spfVerified: Boolean! "Whether the domain is verified for sending email." verified: Boolean! } "A custom field with a single choice among options shown in a dropdown." type DropdownUserDetailField implements UserDetailField { name: String! options: [UserDetailFieldOption!]! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } type EmailAddress { address: String! name: String } "A custom field holding an email address." type EmailAddressUserDetailField implements UserDetailField { name: String! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } "A recipient with a fixed email address." type EmailAutoMessageRecipient implements AutoMessageRecipient & Node { emailAddress: String! id: ID! } "An email sent to the guests or invitees matched by its audiences. Recipients without an email address, or who have unsubscribed, are skipped." type EmailBroadcast implements Broadcast & Node & PermissionControlledNode { audiences: [Audience!]! "The message in Markdown. `{{variable}}` placeholders are replaced per recipient." body: String! "The number of sent emails rejected by the recipients' mail servers, permanently or temporarily. An email can be both delivered and bounced." bouncedCount: Int! "The number of sent emails the recipients reported as spam." complainedCount: Int! createdAt: DateTime! creator: User! currentUserHasPermission(permission: Permission!): Boolean! "The number of sent emails accepted by the recipients' mail servers. Reports arrive within minutes of sending; emails sent before reports were recorded count zero." deliveredCount: Int! errorMessage: String errorReference: String failedCount: Int! id: ID! "The number of emails not yet sent, failed or cancelled." pendingCount: Int! recipientEnrichments: [EmailEnrichmentKind!]! "The Reply-To address, or `null` for none." replyTo: EmailAddress scheduledAt: DateTime sentAt: DateTime sentCount: Int! status: BroadcastStatus! "The subject line. `{{variable}}` placeholders are replaced per recipient." subject: String! "The number of emails created for the broadcast, or `null` while it is a draft or scheduled." totalCount: Int userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } type EmailBroadcastConnection implements Connection { edges: [EmailBroadcastEdge!]! pageInfo: PageInfo! } type EmailBroadcastEdge implements Edge { cursor: String! node: EmailBroadcast! } type EmailInvitationPayload { invitation: Invitation! } type EmailInvitationsPayload { invitationCount: Int! invitations: [Invitation!]! } "A name and address on one of an account's domains that its emails to guests can be sent from." type EmailSender implements Node { "The account domain the address is on. Requires `ADMINISTER` on the account." accountDomain: AccountDomain! address: String! id: ID! "The name recipients see. On an `attendium.com` subdomain it is followed by `(via Attendium)`." name: String! "Whether emails can be sent from it now: its domain and the account's ownership of it are verified." sendable: Boolean! } type EmptyPayload { dummy: String @deprecated(reason : "Use success instead") success: Boolean! } "A set of guest lists for an occasion at a venue, with a start and end time. See ." type Event implements FeatureControlledNode & Node & PermissionControlledNode { autoMessages: [AutoMessage!]! "The senders emails about the event can be sent from, besides Attendium's own address. Requires `SEND_MESSAGES`." availableEmailSenders: [EmailSender!]! beginDate: DateTime @deprecated(reason : "Use startDate instead") @semanticNonNull(levels : [0]) "The currency of the event's ticket prices; defaults to the account's default currency." currency: Currency currentUserHasPermission(permission: Permission!): Boolean! "The event's own user detail fields plus a text field for every other user detail name its guests have." effectiveUserDetailFields: [UserDetailField!]! endDate: DateTime @deprecated(reason : "Use endsAt instead") @semanticNonNull(levels : [0]) endsAt: DateTime @semanticNonNull(levels : [0]) eventTemplate: EventTemplate "Whether the event's account tracks free guests. Free tickets may exist even when `false`. See ." freeTicketTrackingEnabled: Boolean! guestLists( anyOfPermissions: [Permission!] @deprecated(reason : "Use permissions instead"), "Only guest lists on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] ): [GuestList!]! id: ID! invitationCount: Int! @deprecated(reason : "Use the root invitationCount query instead") invitationTemplates(anyOfPermissions: [Permission!] = [USE_INVITATION_TEMPLATES] @deprecated(reason : "Use permissions instead"), permissions: [Permission!] = [USE_INVITATION_TEMPLATES]): [InvitationTemplate!]! @deprecated(reason : "Use the root invitationTemplates query instead") invitations(types: [InvitationType!]): [Invitation!]! @deprecated(reason : "Use the root invitations query instead") "The limits set on the event, including those inherited from its event template." limits: [Limit!]! "The event's name, falling back to its event template's name and then its venue's name." name: String "The name set on the event itself; `null` when the name is inherited." ownedName: String paymentServiceProviderAccount: PaymentServiceProviderAccount "The users credited with adding the event's tickets, among the tickets the current user can view." referenceUsers: [User!]! startDate: DateTime @deprecated(reason : "Use startsAt instead") @semanticNonNull(levels : [0]) startsAt: DateTime @semanticNonNull(levels : [0]) "The tax rules of the event's account." taxRules: [TaxRule!]! userAccessPermissions: [UserAccessPermission!]! "The fields defined for the event's user details, including those inherited from its event template. Empty without permission to view user detail fields." userDetailFields: [UserDetailField!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") venue: Venue @semanticNonNull(levels : [0]) } type EventConnection implements Connection { edges: [EventEdge!]! pageInfo: PageInfo! } type EventEdge implements Edge { cursor: String! node: Event! } "A reusable structure of guest lists, custom fields, limits and permissions for recurring events. See ." type EventTemplate implements Node & PermissionControlledNode { archived: Boolean! currentUserHasPermission(permission: Permission!): Boolean! "The permissions inherited by every event using the template." eventUserAccessPermissions: [UserAccessPermission!]! "Whether free-ticket tracking is enabled on the venue's account (`Account.freeTicketTrackingEnabled`). Free tickets may still exist when `false`." freeTicketTrackingEnabled: Boolean! guestListTemplates( anyOfPermissions: [Permission!] @deprecated(reason : "Use permissions instead"), "Only guest list templates on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] ): [GuestListTemplate!]! id: ID! limits: [Limit!]! name: String! userDetailFields: [UserDetailField!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") venue: Venue! } type EventTemplateConnection implements Connection { edges: [EventTemplateEdge!]! pageInfo: PageInfo! } type EventTemplateEdge implements Edge { cursor: String! node: EventTemplate! } "A batch of changes delivered by the `eventUpdate` subscription." type EventUpdate { event: Event guestLists: [GuestList!] "The fraction of the initial load delivered so far, from `0` to `1`; `null` for later changes." progress: Float tickets: [Ticket!] userDetails: [UserDetail!] } "The part of a fee credited by a credit note." type FeeCredit implements Node { amount: Decimal! fee: Fee! id: ID! } "The allowed `FeeRule.absorbed` values for one fee rule type. Types without an entry allow any value." type FeeRuleAbsorbedOptions { options: [Boolean!]! "The fee rule type name, such as `TicketPurchaseFeeRule`." type: String } "A general-purpose stored file." type File implements IFile & Node { contentType: String! id: ID! "The image height in pixels; `null` if the file is not an image." imageHeight: Float "The image width in pixels; `null` if the file is not an image." imageWidth: Float name: String! url: String! } "A limit on the number of free guests a user can add." type FreeTicketCountLimit implements Limit { "The maximum number of free guests; `null` means unlimited." maxCount: Int "The limit of the same type and user inherited from a template that this limit replaces, if any." overriddenLimit: Limit parent: Node! "The user the limit applies to; `null` means everyone: a count limit then caps the total across all users, and a date limit applies to each user." principal: User user: User @deprecated(reason : "Use principal instead") } "A snapshot, shared as a link or PDF, confirming that guests are on an event's guest lists. See ." type GuestConfirmation implements Node { id: ID! tickets: [Ticket!]! "The link to share with the guests." url: String! } "A guest on a guest list, grouping that guest's tickets on it." type GuestEntry { tickets: [Ticket!]! userDetails: [UserDetail!]! } "A trigger that sends the auto message when a guest is added to a guest list they weren't already on, until the event ends." type GuestEntryAddedAutoMessageTrigger implements AutoMessageTrigger & Node { "Whether the trigger applies only to guests added through an invitation (`true`) or only to guests added otherwise (`false`); `null` applies to both. A signup with any ticket through an invitation counts as added through an invitation." byInvitation: Boolean "The guest lists the trigger applies to; `null` means all of the event's guest lists." guestLists: [GuestList!] id: ID! } type GuestEntryBulkActionPayload { changedCount: Int! } type GuestEntryConnection implements Connection { edges: [GuestEntryEdge!]! pageInfo: PageInfo! } type GuestEntryEdge implements Edge { cursor: String! node: GuestEntry! } "Guest entry selection criteria, as saved on an email broadcast." type GuestEntryFilter { checkedIn: Boolean deletedUserDetailsForQueryMatching: Boolean @deprecated(reason : "Deleted user details are excluded automatically; this field will be removed") events: [Event!] exactQueryMatching: Boolean! guestLists: [GuestList!] invitations: [Invitation!] queries: [String!] query: String referenceUsers: [User!] reverseGuestNamesForQueryMatching: Boolean! userDetailNames: [String!] userDetailNamesForQueryMatching: [String!] } "A broadcast audience of the guests matching a guest entry filter, evaluated when the broadcast is sent." type GuestEntryFilterAudience implements Audience & Node { broadcast: Broadcast! guestEntryFilter: GuestEntryFilter! id: ID! } "A group of an event's guests, each with tickets and user details. See ." type GuestList implements Node & PermissionControlledNode { "The display color as a hex code with a leading `#`, such as `#e15241`; `null` means none." color: String currentUserHasPermission(permission: Permission!): Boolean! deleted: Boolean! event: Event @semanticNonNull(levels : [0]) "The fee rules of the event's payment service provider account that support the event's currency; empty when the event has no such account." feeRules: [FeeRule!]! guestListTemplate: GuestListTemplate id: ID! lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! "The limits set on the guest list, including those inherited from its guest list template." limits: [Limit!]! name: String! passType: PassType permanentGuestList: PermanentGuestList @deprecated(reason : "Use passType instead") price: Price "The Base64-encoded public key that verifies the signatures of the guest list's tickets." publicSigningKey: String! "Whether each guest gets one QR code for all their tickets on the guest list. See ." showGuestEntryBarcodes: Boolean! "Whether each ticket gets its own QR code. See ." showTicketBarcodes: Boolean! "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String taxRules: [TaxRule!]! "The number of non-deleted tickets, optionally only those matching `free` and `used`." ticketCount(free: Boolean, used: Boolean): Int! userAccessPermissions: [UserAccessPermission!]! "The user detail fields of the linked pass type; empty when the guest list isn't linked to one." userDetailFields: [UserDetailField!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") version: Int! } type GuestListConnection implements Connection { edges: [GuestListEdge!]! pageInfo: PageInfo! } type GuestListEdge implements Edge { cursor: String! node: GuestList! } "A guest list that every event using the event template gets. See ." type GuestListTemplate implements Node & PermissionControlledNode { "The display color as a hex code with a leading `#`, such as `#e15241`; `null` means none." color: String currentUserHasPermission(permission: Permission!): Boolean! eventTemplate: EventTemplate! "The permissions inherited by every guest list created from the template." guestListUserAccessPermissions: [UserAccessPermission!]! id: ID! limits: [Limit!]! name: String! passType: PassType permanentGuestList: PermanentGuestList @deprecated(reason : "Use passType instead") "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "A batch created by an import. See ." type ImportBatch implements Batch & Node { createdAt: DateTime! filename: String id: ID! method: ImportBatchMethod! } "Details for paying an invoice by international bank transfer." type InternationalBankAccountPaymentDetails { bicCode: String! iban: String! } "A guest list guests can currently get tickets from through an invitation." type InvitationAvailableGuestListConfiguration { "The percentage discount on the guest list's price: `100` for free tickets, otherwise `0`." discountRate: Decimal! guestList: GuestList! "The number of tickets still available; `null` means unlimited." maxTicketCount: Int "The maximum number of tickets one sign-up can include, capped at `maxTicketCount`." maxTicketCountPerGuest: Int } type InvitationBulkActionPayload { changedCount: Int! } type InvitationConnection implements Connection { edges: [InvitationEdge!]! pageInfo: PageInfo! } type InvitationEdge implements Edge { cursor: String! node: Invitation! } "Invitation selection criteria, as saved on an email broadcast." type InvitationFilter { events: [Event!] invitationTemplates: [InvitationTemplate!] personalInvitationResponses: [PersonalInvitationResponse] query: String shared: Boolean userDetailNames: [String!] } "A guest list an invitation offers, with its limits." type InvitationGuestListConfiguration { "Whether the tickets are added as free tickets." freeTickets: Boolean! guestList: GuestList! "The maximum number of tickets the invitation can add to this guest list; `null` means no limit." maxTicketCount: Int "The maximum number of tickets one sign-up can include." maxTicketCountPerGuest: Int! } "The current availability of a guest list an invitation offers." type InvitationGuestListConfigurationStatus { "Whether guests can currently get tickets from this guest list. `false` once its event has ended, the invitation's `registrationDeadline` has passed, or the invitation's creator can no longer add tickets to it." available: Boolean! configuration: InvitationGuestListConfiguration! "The number of tickets still available from this guest list through the invitation, after all limits; `null` means unlimited." effectiveMaxTicketCount: Int } "A reusable invitation design whose settings and messages are shared by every invitation using it. See ." type InvitationTemplate implements Node { "Markdown shown to guests after they sign up or buy, on their order page and in the confirmation email; supports `{{guest.name}}`, `{{guest.firstName}}`, `{{guest.lastName}}` and `{{event.name}}`." acceptedMessage: String "Markdown shown on the invitation page and in invitation emails; `{{event.name}}` is replaced by the event name." additionalInformationMessage: String archived: Boolean! "Whether people who sign up get a confirmation email, which makes the email address field required. Always `true` when a configured guest list has a price." confirmationMessagesEnabled: Boolean createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") "Markdown intended for guests who decline a personal invitation; not currently shown to guests." declinedMessage: String emailReplyTo: EmailAddress event: Event @deprecated(reason : "No replacement.") files: [IFile!]! guestListConfigurations: [InvitationGuestListConfiguration!]! id: ID! name: String "Markdown shown on the invitation page when no offered guest list has tickets left; `{{event.name}}` is replaced by the event name." notEnoughTicketsAvailableMessage: String "The first image file referenced in `additionalInformationMessage`, or `null` when there is none." previewImage: File "The user who created the template, who always has access to it." referenceUser: User! replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") "The heading of the invitation page and the sender name of invitation and confirmation emails; `null` means the event name." title: String userAccessPermissions: [UserAccessPermission!]! userDetailFields: [UserDetailField!]! } type InvitationTemplateConnection implements Connection { edges: [InvitationTemplateEdge!]! pageInfo: PageInfo! } type InvitationTemplateEdge implements Edge { cursor: String! node: InvitationTemplate! } "A user detail stored on an invitation, such as the invitee's email address." type InvitationUserDetail { name: String! value: String } "An invoice from a seller account to a buyer. Buyer and seller details are captured when the invoice is created. Amounts are in `currency` and negative on credit invoices." type Invoice implements Node { account: Account @deprecated(reason : "Use buyer instead") "The amount still owed after payments and credits. Always zero on service fee invoices." amountDue: Decimal! automaticallyCreated: Boolean! "The buyer's account; `null` when the buyer has none." buyer: Account buyerAddress: String @deprecated(reason : "Use the individual buyer address fields instead") buyerAddressLine1: String buyerAddressLine2: String buyerCity: String buyerContactName: String @deprecated(reason : "No replacement.") buyerCountry: Country buyerCounty: String "The buyer email address of the invoiced purchase order; `null` on service fee invoices." buyerEmailAddress: String buyerName: String "The invoice note set on the buyer's account." buyerNote: String buyerPostalCode: String buyerTaxId: String buyerVatRegistrationNumber: String @deprecated(reason : "Use buyerTaxId instead") canceled: Boolean! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") "The credit invoice that credits this invoice in full, if any." creditInvoice: Invoice creditNote: CreditNote creditNotes: [CreditNote!]! @deprecated(reason : "Use creditNote instead") "On a credit invoice, the invoice it credits." creditedInvoice: Invoice currency: Currency customerAddressLine1: String @deprecated(reason : "Use buyerAddressLine1 instead") customerAddressLine2: String @deprecated(reason : "Use buyerAddressLine2 instead") customerCity: String @deprecated(reason : "Use buyerCity instead") customerContactName: String @deprecated(reason : "Use buyerContactName instead") customerCountry: Country @deprecated(reason : "Use buyerCountry instead") customerCounty: String @deprecated(reason : "Use buyerCounty instead") customerName: String @deprecated(reason : "Use buyerName instead") customerNote: String @deprecated(reason : "Use buyerNote instead") customerPostalCode: String @deprecated(reason : "Use buyerPostalCode instead") customerVatRegistrationNumber: String @deprecated(reason : "Use buyerVatRegistrationNumber instead") dueAt: DateTime! id: ID! "The localized name of the invoice's type." name: String! "The amount excluding tax and any fees added for the buyer." netAmount: Decimal! "The invoice number, sequential per seller." number: String! "Whether a positive amount is still due after the due date." overdue: Boolean! overdueReminderSentDates: [DateTime!]! "The excess paid that is still owed back to the buyer after refunds. Zero except on standard invoices, which include their credit invoices." overpaidAmount: Decimal! "The sum of payments received, excluding refunds." paidAmount: Decimal! "Details for paying by bank transfer; empty unless the purchase order includes a product purchasable by invoice." paymentDetails: [PaymentDetails!]! paymentDueDate: DateTime! @deprecated(reason : "Use dueAt instead") "The end of the period the invoice covers: the service fee period, or the latest subscription end on the purchase order." periodEndAt: DateTime "The start of the period the invoice covers: the service fee period, or the earliest subscription activation on the purchase order." periodStartAt: DateTime purchaseOrder: PurchaseOrder sellerAddress: String @deprecated(reason : "Use the individual seller address fields instead") sellerAddressLine1: String sellerAddressLine2: String sellerCity: String sellerCountry: Country sellerCounty: String sellerName: String sellerPostalCode: String sellerTaxId: String sellerVatRegistrationNumber: String @deprecated(reason : "Use sellerTaxId instead") "On a service fee invoice, the purchases whose service fees it covers." serviceFeePurchases: [Purchase!]! servicePeriodEndAt: DateTime @deprecated(reason : "Use periodEndAt instead") servicePeriodStartAt: DateTime @deprecated(reason : "Use periodStartAt instead") settled: Boolean! "The net amount plus fees added for the buyer, excluding tax." subtotalAmount: Decimal! taxSummaries: [TaxSummary!]! taxes: [TaxSummary!]! @deprecated(reason : "Use taxSummaries instead") "The subtotal plus any charged VAT." totalAmount: Decimal! transactions: [Transaction!]! type: InvoiceType! "Whether the seller has written the invoice off as bad debt." uncollectible: Boolean! vatChargeRule: VatChargeRule! } type InvoiceConnection implements Connection { edges: [InvoiceEdge!]! pageInfo: PageInfo! } type InvoiceEdge implements Edge { cursor: String! node: Invoice! } "One version of an Attendium legal document, such as the terms of service." type LegalDocument implements Node { changeSummary: String "The document text in Markdown." content: String id: ID! "The path of the public page showing the latest version, relative to the website root. `null` when the document has no public page." path: String title: String type: LegalDocumentType version: Int! } "A limit on the latest time a user can add guests." type MaxTicketCreationDateLimit implements Limit { "The latest time guests can be added; `null` means no restriction." maxCreatedAt: DateTime maxCreationDate: DateTime @deprecated(reason : "Use maxCreatedAt instead") "The limit of the same type and user inherited from a template that this limit replaces, if any." overriddenLimit: Limit parent: Node! "The user the limit applies to; `null` means everyone: a count limit then caps the total across all users, and a date limit applies to each user." principal: User user: User @deprecated(reason : "Use principal instead") } "A limit on the earliest time a user can add guests." type MinTicketCreationDateLimit implements Limit { "The earliest time guests can be added; `null` means no restriction." minCreatedAt: DateTime minCreationDate: DateTime @deprecated(reason : "Use minCreatedAt instead") "The limit of the same type and user inherited from a template that this limit replaces, if any." overriddenLimit: Limit parent: Node! "The user the limit applies to; `null` means everyone: a count limit then caps the total across all users, and a date limit applies to each user." principal: User user: User @deprecated(reason : "Use principal instead") } "A custom field with a single choice among options that are all shown." type MultipleChoiceUserDetailField implements UserDetailField { name: String! options: [UserDetailFieldOption!]! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } type Mutation { "Cancels a draft, scheduled or sending broadcast. Emails not yet sent are cancelled." cancelEmailBroadcast(input: CancelEmailBroadcastInput!): CancelEmailBroadcastPayload! "Cancels a draft, scheduled or sending broadcast, cancelling its pending deliveries." cancelPushBroadcast(input: CancelPushBroadcastInput!): CancelPushBroadcastPayload! "Changes the ticket count of every guest entry matching the filter. `changedCount` excludes entries already at the resulting count." changeGuestEntryTicketCounts(input: ChangeGuestEntryTicketCountsInput!): GuestEntryBulkActionPayload! "Changes the ticket count of every pass matching the filter. `changedCount` excludes passes already at the resulting count." changePassTicketCounts(input: ChangePassTicketCountsInput!): PassBulkActionPayload! "Deletes all tickets and user details on the guest lists, keeping the lists themselves." clearGuestLists(input: ClearGuestListsInput!): ClearGuestListsPayload! "Creates an event with the source event's guest lists, user detail fields and event template. If the source event has an event template, the copy keeps the template's venue and `venueId` and `newVenue` are ignored." copyEvent(input: CopyEventInput!): CopyEventPayload! createAutoMessage(input: CreateAutoMessageInput!): CreateAutoMessagePayload! createAutoMessageAttachments(input: CreateAutoMessageAttachmentsInput!): CreateAutoMessageAttachmentsPayload! "Uploads files for use in an auto message's body." createAutoMessageFiles(input: CreateAutoMessageFilesInput!): CreateAutoMessageFilesPayload! createAutoMessageRecipients(input: CreateAutoMessageRecipientsInput!): CreateAutoMessageRecipientsPayload! createAutoMessageTriggers(input: CreateAutoMessageTriggersInput!): CreateAutoMessageTriggersPayload! "Creates an email broadcast as a draft, or schedules or sends it when `scheduledAt` is set." createEmailBroadcast(input: CreateEmailBroadcastInput!): CreateEmailBroadcastPayload! "Adds a sender the account's emails to guests can be sent from; the address must be new to the account. Requires `ADMINISTER` on the account." createEmailSender(input: CreateEmailSenderInput!): CreateEmailSenderPayload! createEvent(input: CreateEventInput!): CreateEventPayload! createEventTemplate(input: CreateEventTemplateInput!): CreateEventTemplatePayload! "Creates a guest confirmation covering the given guests on the given guest lists. Requires the `ADD_TICKETS` permission for those guests." createGuestConfirmation(input: CreateGuestConfirmationInput!): CreateGuestConfirmationPayload! createGuestEntryConfirmation(input: CreateGuestEntryConfirmationInput!): CreateGuestEntryConfirmationPayload! @deprecated(reason : "Use createGuestConfirmation instead") createGuestList(input: CreateGuestListInput!): CreateGuestListPayload! createGuestListTemplates(input: CreateGuestListTemplatesInput!): CreateGuestListTemplatesPayload! createGuestLists(input: CreateGuestListsInput!): CreateGuestListsPayload! createInvitation(input: CreateInvitationInput!): CreateInvitationPayload! "Adds files to the invitation. A message uses a file by containing its ID or name." createInvitationFiles(input: CreateInvitationFilesInput!): CreateInvitationFilesPayload! createInvitationTemplate(input: CreateInvitationTemplateInput!): CreateInvitationTemplatePayload! createInvitationTemplateFiles(input: CreateInvitationTemplateFilesInput!): CreateInvitationTemplateFilesPayload! createInvitations(input: CreateInvitationsInput!): CreateInvitationsPayload! createPassType(input: CreatePassTypeInput!): CreatePassTypePayload! createPermanentGuestList(input: CreatePermanentGuestListInput!): CreatePermanentGuestListPayload! @deprecated(reason : "Use createPassType instead") createPushBroadcast(input: CreatePushBroadcastInput!): CreatePushBroadcastPayload! createTaxRules(input: CreateTaxRulesInput!): CreateTaxRulesPayload! "Creates a user in the account given by `accountId`, which is required. With `emailSetupInstructions`, also emails the user a link for choosing a password." createUser(input: CreateUserInput!): CreateUserPayload! createVenue(input: CreateVenueInput!): CreateVenuePayload! "Records the invitee's decline with an optional reason. Fails if the invitation already has a response." declinePersonalInvitation(input: DeclinePersonalInvitationInput!): DeclinePersonalInvitationPayload! "Removes a domain, and the senders on it, from the account; emails are sent from Attendium's own address again if one of them was the default. Requires `ADMINISTER` on the account." deleteAccountDomain(input: DeleteAccountDomainInput!): DeleteAccountDomainPayload! deleteAudience(input: DeleteAudienceInput!): DeleteAudiencePayload! deleteAutoMessage(input: DeleteAutoMessageInput!): DeleteAutoMessagePayload! deleteAutoMessageAttachments(input: DeleteAutoMessageAttachmentsInput!): DeleteAutoMessageAttachmentsPayload! deleteAutoMessageRecipients(input: DeleteAutoMessageRecipientsInput!): DeleteAutoMessageRecipientsPayload! deleteAutoMessageTriggers(input: DeleteAutoMessageTriggersInput!): DeleteAutoMessageTriggersPayload! deleteEmailBroadcast(input: DeleteEmailBroadcastInput!): DeleteEmailBroadcastPayload! "Removes a sender; when it was the account's default, the account's emails are sent from Attendium's own address again. Requires `ADMINISTER` on its account." deleteEmailSender(input: DeleteEmailSenderInput!): DeleteEmailSenderPayload! deleteEvent(input: DeleteEventInput!): DeleteEventPayload! deleteEventTemplate(input: DeleteEventTemplateInput!): DeleteEventTemplatePayload! "Deletes the named user details from every guest list of the event." deleteEventUserDetails(input: DeleteEventUserDetailsInput!): DeleteEventUserDetailsPayload! deleteFiles(input: DeleteFilesInput!): DeleteFilesPayload! "Deletes every guest entry matching the filter." deleteGuestEntries(input: DeleteGuestEntriesInput!): GuestEntryBulkActionPayload! deleteGuestList(input: DeleteGuestListInput!): DeleteGuestListPayload! "Deletes guest list templates, along with the guest lists created from them that have no tickets." deleteGuestListTemplates(input: DeleteGuestListTemplatesInput!): DeleteGuestListTemplatesPayload! deleteGuestLists(input: DeleteGuestListsInput!): DeleteGuestListsPayload! deleteInvitation(input: DeleteInvitationInput!): DeleteInvitationPayload! deleteInvitationTemplate(input: DeleteInvitationTemplateInput!): DeleteInvitationTemplatePayload! deleteInvitations(input: DeleteInvitationsInput!): InvitationBulkActionPayload! "Deletes the pass type, its passes and its linked guest lists." deletePassType(input: DeletePassTypeInput): DeletePassTypePayload! "Deletes the named user details from the passes of the pass type and from its linked guest lists. Returns the affected passes." deletePassUserDetails(input: DeletePassUserDetailsInput!): DeletePassUserDetailsPayload! "Deletes every pass matching the filter." deletePasses(input: DeletePassesInput!): PassBulkActionPayload! deletePermanentGuestList(input: DeletePermanentGuestListInput): DeletePermanentGuestListPayload! @deprecated(reason : "Use deletePassType instead") deletePermanentGuestListUserDetails(input: DeletePermanentGuestListUserDetailsInput!): DeletePermanentGuestListUserDetailsPayload! @deprecated(reason : "Use deletePassUserDetails instead") deletePushBroadcast(input: DeletePushBroadcastInput!): DeletePushBroadcastPayload! deleteTaxRules(input: DeleteTaxRulesInput!): DeleteTaxRulesPayload! "Deletes a user and its logins. Fails for the account's last administrator." deleteUser(input: DeleteUserInput!): DeleteUserPayload! "Deletes the venue and its events." deleteVenue(input: DeleteVenueInput!): DeleteVenuePayload! "Emails the invitation to `toEmailAddress` and sets its `lastSharedAt`. Requires the `SEND_MESSAGES` permission." emailInvitation(input: EmailInvitationInput!): EmailInvitationPayload! "Emails the listed invitations and those matching the filter, and sets their `lastSharedAt`. Requires the `SEND_MESSAGES` permission." emailInvitations(input: EmailInvitationsInput!): EmailInvitationsPayload! "Moves the tickets and user details of every guest entry matching the filter to the destination guest list, merging them into any existing entry of the same guest. Moved tickets are not checked in. Fails for entries on guest lists linked to a pass type. Requires the `ADD_TICKETS` permission on the destination." moveGuestEntries(input: MoveGuestEntriesInput!): GuestEntryBulkActionPayload! "Renames guest details from `fromName` to `toName` in every event using the template." renameEventTemplateUserDetails(input: RenameEventTemplateUserDetailsInput!): EmptyPayload! "Renames user details on every guest list of the event, replacing any existing value under the new name. Returns the affected user details." renameEventUserDetails(input: RenameEventUserDetailsInput!): RenameEventUserDetailsPayload! "Renames user details on the passes of the pass type and its linked guest lists, replacing any existing value under the new name. Returns the affected passes." renamePassUserDetails(input: RenamePassUserDetailsInput!): RenamePassUserDetailsPayload! renamePermanentGuestListUserDetails(input: RenamePermanentGuestListUserDetailsInput!): RenamePermanentGuestListUserDetailsPayload! @deprecated(reason : "Use renamePassUserDetails instead") "Resumes a cancelled broadcast, sending it and any of its emails that were cancelled before being sent." resumeEmailBroadcast(input: ResumeEmailBroadcastInput!): ResumeEmailBroadcastPayload! "Resumes sending a cancelled broadcast, including its cancelled deliveries." resumePushBroadcast(input: ResumePushBroadcastInput!): ResumePushBroadcastPayload! "Resends the failed emails of a sending, sent or failed broadcast." retryFailedEmailBroadcastDeliveries(input: RetryFailedEmailBroadcastDeliveriesInput!): RetryFailedEmailBroadcastDeliveriesPayload! "Retries the failed deliveries of a sending, sent or failed broadcast." retryFailedPushBroadcastDeliveries(input: RetryFailedPushBroadcastDeliveriesInput!): RetryFailedPushBroadcastDeliveriesPayload! "Schedules a draft broadcast to be sent at `scheduledAt`." scheduleEmailBroadcast(input: ScheduleEmailBroadcastInput!): ScheduleEmailBroadcastPayload! "Schedules a draft broadcast that has at least one audience." schedulePushBroadcast(input: SchedulePushBroadcastInput!): SchedulePushBroadcastPayload! "Starts sending a draft or scheduled broadcast." sendEmailBroadcast(input: SendEmailBroadcastInput!): SendEmailBroadcastPayload! "Emails the pass to the address in its `E-mail address` user detail, with the pass type's `supportEmailAddress` as reply-to. Fails when the pass has no email address." sendPass(input: SendPassInput!): SendPassPayload! sendPermanentGuestListPass(input: SendPermanentGuestListPassInput!): SendPermanentGuestListPassPayload! @deprecated(reason : "Use sendPass instead") "Starts sending a draft or scheduled broadcast that has at least one audience. Delivery continues in the background." sendPushBroadcast(input: SendPushBroadcastInput!): SendPushBroadcastPayload! "Sets the sender the account's emails to guests are sent from. Requires `ADMINISTER` on the account." setAccountDefaultEmailSender(input: SetAccountDefaultEmailSenderInput!): SetAccountDefaultEmailSenderPayload! setEventTemplateArchived(input: SetEventTemplateArchivedInput!): SetEventTemplateArchivedPayload! "Sets guests' ticket counts and user details on guest lists, creating, updating or deleting tickets to match. Returns the changed tickets and user details. See ." setGuestEntries(input: SetGuestEntriesInput!): SetGuestEntriesPayload! "Creates or updates each holder's pass on the pass type and applies the change to its linked guest lists. Returns the passes that exist afterwards." setPasses(input: SetPassesInput!): SetPassesPayload! setPermanentGuestListEntries(input: SetPermanentGuestListEntriesInput!): SetPermanentGuestListEntriesPayload! @deprecated(reason : "Use setPasses instead") updateAutoMessage(input: UpdateAutoMessageInput!): UpdateAutoMessagePayload! updateAutoMessageAttachments(input: UpdateAutoMessageAttachmentsInput!): UpdateAutoMessageAttachmentsPayload! updateAutoMessageRecipients(input: UpdateAutoMessageRecipientsInput!): UpdateAutoMessageRecipientsPayload! updateAutoMessageTriggers(input: UpdateAutoMessageTriggersInput!): UpdateAutoMessageTriggersPayload! "Renames a sender. Requires `ADMINISTER` on its account." updateEmailSender(input: UpdateEmailSenderInput!): UpdateEmailSenderPayload! updateEvent(input: UpdateEventInput!): UpdateEventPayload! updateEventTemplate(input: UpdateEventTemplateInput!): UpdateEventTemplatePayload! "Sets a user detail on every guest entry matching the filter. `changedCount` excludes entries that already have the value." updateGuestEntryUserDetails(input: UpdateGuestEntryUserDetailsInput!): GuestEntryBulkActionPayload! updateGuestList(input: UpdateGuestListInput!): UpdateGuestListPayload! updateGuestListTemplates(input: UpdateGuestListTemplatesInput!): UpdateGuestListTemplatesPayload! updateGuestLists(input: UpdateGuestListsInput!): UpdateGuestListsPayload! updateInvitation(input: UpdateInvitationInput!): UpdateInvitationPayload! updateInvitationTemplate(input: UpdateInvitationTemplateInput!): UpdateInvitationTemplatePayload! updatePassType(input: UpdatePassTypeInput!): UpdatePassTypePayload! "Sets a user detail on every pass matching the filter. `changedCount` excludes passes that already have the value." updatePassUserDetails(input: UpdatePassUserDetailsInput!): PassBulkActionPayload! updatePermanentGuestList(input: UpdatePermanentGuestListInput!): UpdatePermanentGuestListPayload! @deprecated(reason : "Use updatePassType instead") "Updates a draft broadcast." updatePushBroadcast(input: UpdatePushBroadcastInput!): UpdatePushBroadcastPayload! updateTaxRules(input: UpdateTaxRulesInput!): UpdateTaxRulesPayload! updateTicket(input: UpdateTicketInput!): UpdateTicketPayload! updateUser(input: UpdateUserInput!): UpdateUserPayload! updateVenue(input: UpdateVenueInput!): UpdateVenuePayload! } "An OAuth2 authorization through which an application accesses the API on the user's behalf. See ." type OAuth2Authorization implements Node { createdAt: DateTime! id: ID! "The `User-Agent` of the application's latest token request, or `null` when unknown." userAgent: String } "An invitation anyone with the link can use. See ." type OpenInvitation implements Invitation & Node { acceptedMessage: String additionalInformationMessage: String additionalInformationMessageFiles: [IFile!]! availableGuestListConfigurations(purchaseOrderAuthCode: String, purchaseOrderId: ID): [InvitationAvailableGuestListConfiguration!]! confirmationEmailUserDetailName: String @deprecated(reason : "Use confirmationMessagesEnabled instead") confirmationMessagesEnabled: Boolean! createdAt: DateTime! creationBatch: Batch creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currentUserHasPermission(permission: Permission!): Boolean! deleted: Boolean! emailReplyTo: EmailAddress event: Event @deprecated(reason : "Use guestListConfigurations instead; an invitation can span several events.") files: [IFile!]! guestListConfigurationStatuses: [InvitationGuestListConfigurationStatus!]! guestListConfigurations: [InvitationGuestListConfiguration!]! id: ID! invitationTemplate: InvitationTemplate lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! lastShareDate: DateTime @deprecated(reason : "Use lastSharedAt instead") lastSharedAt: DateTime maxTicketCount: Int name: String notEnoughTicketsAvailableMessage: String notEnoughTicketsAvailableMessageFiles: [IFile!]! previewImage: File referenceUser: User! registrationDeadline: DateTime renderedAdditionalInformationMessage: String renderedNotEnoughTicketsAvailableMessage: String replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") ticketCount: Int title: String userDetailFields: [UserDetailField!]! userDetails: [InvitationUserDetail!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } type PageInfo { endCursor: String hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String } "A custom field holding free text, shown with room for several lines." type ParagraphUserDetailField implements UserDetailField { name: String! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } "A holder's pass on a pass type, giving them tickets on every guest list the pass type is linked to. See ." type Pass implements Node { "The number of Apple devices that have the pass installed." appleDeviceCount: Int! "The link that adds the pass to Apple Wallet." appleUrl: String! createdAt: DateTime! creationBatch: Batch deleted: Boolean! "How many of `ticketCount` are free tickets." freeTicketCount: Int! "The number of Google accounts that have saved the pass." googleAccountCount: Int! "The link that saves the pass to Google Wallet." googleUrl: String! holder: User! id: ID! "When the pass was last emailed; `null` if never." lastEmailSentAt: DateTime lastModifiedAt: DateTime! lastUpdateBatch: Batch passType: PassType! referenceUser: User! "The number of tickets the holder gets on each linked guest list; at least 1." ticketCount: Int! "The link to view the pass. It contains the pass signature, so anyone with the link can view the pass." url: String! userDetails: [PassUserDetail!]! version: Int! } type PassBulkActionPayload { changedCount: Int! } type PassConnection implements Connection { edges: [PassEdge!]! pageInfo: PageInfo! } type PassEdge implements Edge { cursor: String! node: Pass! } "Pass selection criteria, as saved on a push broadcast." type PassFilter { exactQueryMatching: Boolean! passTypes: [PassType!] query: String referenceUsers: [User!] reverseHolderNamesForQueryMatching: Boolean! userDetailNames: [String!] } "An audience of the holders of the passes matching a filter." type PassFilterAudience implements Audience & Node { broadcast: Broadcast! id: ID! passFilter: PassFilter! } "A list of pass holders that stays in sync across every event it is linked to. See ." type PassType implements FeatureControlledNode & Node & PermissionControlledNode { account: Account! "The wallet pass background color; `null` uses `color`." backgroundColor: String "The primary purpose of the pass; `null` means uncategorized." category: PassCategory "The color identifying the pass type, also applied to its linked guest lists. Passes use it when `backgroundColor` is `null`." color: String currentUserHasPermission(permission: Permission!): Boolean! "Text shown on wallet passes." description: String "The `backgroundColor`, or `color` when `backgroundColor` is `null`." effectiveBackgroundColor: String "The `title`, or `name` when `title` is `null`." effectiveTitle: String "The defined user detail fields plus a text field for every other user detail name used on its passes." effectiveUserDetailFields: [UserDetailField!]! "Whether the pass type's account tracks free tickets. The setting does not restrict free tickets." freeTicketTrackingEnabled: Boolean! "The hex color, such as `#FFFFFF`, behind the Google Wallet logo; `null` means white. Requires the `ADMINISTER` permission." googleLogoBackgroundColor: String "The guest lists linked to the pass type. Its pass holders are guests on each." guestLists: [GuestList!]! "The banner image shown on wallet passes." heroImage: IFile id: ID! "The issuer shown on wallet passes and used as the sender name of pass emails." issuerName: String "The logo shown on wallet passes." logo: IFile name: String! "A narrow logo or icon used instead of `logo` for the Google Wallet logo and the Apple Wallet icon. Requires the `ADMINISTER` permission." narrowLogo: IFile "The Base64-encoded uncompressed P-256 public key that verifies the signatures of this pass type's passes." publicSigningKey: String! referenceUsers: [User!]! "Whether passes are emailed to their holders once they have an email address. Enabling it emails every existing pass not yet emailed." sendAutomatically: Boolean! "The reply-to address of pass emails." supportEmailAddress: String "The text color of Apple Wallet passes; `null` uses the default." textColor: String "The total number of tickets across the pass type's passes." ticketCount: Int "The title shown on wallet passes; `null` uses `name`." title: String userAccessPermissions: [UserAccessPermission!]! "The user detail fields defined on the pass type. See ." userDetailFields: [UserDetailField!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } type PassTypeConnection implements Connection { edges: [PassTypeEdge!]! pageInfo: PageInfo! } type PassTypeEdge implements Edge { cursor: String! node: PassType! } "A user detail value on a pass, such as an email address. See ." type PassUserDetail { name: String! value: String! } "A payment method, such as a card, saved on an account." type PaymentMethod implements Node { brand: String id: ID! lastDigits: String "The kind of payment method, such as `card`." type: String } "A payment received." type PaymentTransaction implements Node & Transaction { accountedAt: DateTime accountingDate: DateTime @deprecated(reason : "Use accountedAt instead") amount: Decimal bankAccount: BankAccount! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currency: Currency id: ID! invoice: Invoice originalAmount: Decimal! originalCurrency: Currency! reference: String } type PermanentGuestList implements FeatureControlledNode & Node & PermissionControlledNode @deprecated(reason : "Use PassType instead") { account: Account! color: String currentUserHasPermission(permission: Permission!): Boolean! effectiveUserDetailFields: [UserDetailField!]! googlePassLogoBackgroundColor: String guestLists: [GuestList!]! guestSupportEmailAddress: String id: ID! name: String! narrowPassLogo: IFile passBackgroundColor: String passDescription: String passHeroImage: IFile passIssuerName: String passLogo: IFile passName: String passTextColor: String passesEnabled: Boolean! publicSigningKey: String! referenceUsers: [User!]! ticketCount: Int userAccessPermissions: [UserAccessPermission!]! userDetailFields: [UserDetailField!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } type PermanentGuestListEntry implements Node @deprecated(reason : "Use Pass instead") { applePassDeviceCount: Int! applePassUrl: String! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") deleted: Boolean! freeTicketCount: Int! googlePassAccountCount: Int! googlePassUrl: String! guest: User! id: ID! lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! lastPassEmailSentAt: DateTime lastPassEmailSentDate: DateTime @deprecated(reason : "Use lastPassEmailSentAt instead") permanentGuestList: PermanentGuestList! referenceUser: User! ticketCount: Int! url: String! userDetails: [PassUserDetail!]! version: Int! } type PermanentGuestListEntryConnection implements Connection @deprecated(reason : "Use PassConnection instead") { edges: [PermanentGuestListEntryEdge!]! pageInfo: PageInfo! } type PermanentGuestListEntryEdge implements Edge @deprecated(reason : "Use PassEdge instead") { cursor: String! node: PermanentGuestListEntry! } "An invitation for one invitee. See ." type PersonalInvitation implements Invitation & Node { acceptedMessage: String additionalInformationMessage: String additionalInformationMessageFiles: [IFile!]! availableGuestListConfigurations(purchaseOrderAuthCode: String, purchaseOrderId: ID): [InvitationAvailableGuestListConfiguration!]! confirmationEmailUserDetailName: String @deprecated(reason : "Use confirmationMessagesEnabled instead") confirmationMessagesEnabled: Boolean! createdAt: DateTime! creationBatch: Batch creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currentUserHasPermission(permission: Permission!): Boolean! declineReason: String "Markdown intended for guests who decline a personal invitation; not currently shown to guests." declinedMessage: String declinedMessageFiles: [IFile!]! deleted: Boolean! emailReplyTo: EmailAddress event: Event @deprecated(reason : "Use guestListConfigurations instead; an invitation can span several events.") files: [IFile!]! guestListConfigurationStatuses: [InvitationGuestListConfigurationStatus!]! guestListConfigurations: [InvitationGuestListConfiguration!]! id: ID! invitationTemplate: InvitationTemplate invitee: User lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! lastShareDate: DateTime @deprecated(reason : "Use lastSharedAt instead") lastSharedAt: DateTime maxTicketCount: Int name: String notEnoughTicketsAvailableMessage: String notEnoughTicketsAvailableMessageFiles: [IFile!]! previewImage: File referenceUser: User! registrationDeadline: DateTime renderedAdditionalInformationMessage: String renderedDeclinedMessage: String renderedNotEnoughTicketsAvailableMessage: String replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") respondedAt: DateTime "The invitee's response; `null` if they have not responded." response: PersonalInvitationResponse ticketCount: Int title: String userDetailFields: [UserDetailField!]! userDetails: [InvitationUserDetail!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "A broadcast audience of the invitees of the personal invitations matching an invitation filter, evaluated when the broadcast is sent." type PersonalInvitationFilterAudience implements Audience & Node { broadcast: Broadcast! id: ID! invitationFilter: InvitationFilter! } type Price { "The amount in the currency's main unit, such as `12.50`." amount: Decimal! currency: Currency! } "A product Attendium sells to accounts." type Product implements IProduct & Node { id: ID! name: String! "The price in the currency of the country with this `Country.code`, or of the requester's country when omitted, falling back to USD when that country can't be determined. `null` when the product has no price in that currency. Fails with a not-found error when no country has the given code." price(countryCode: String): Price prices: [Price!]! published: Boolean! purchasableByInvoice: Boolean! } "An order of products, such as tickets, placed by a buyer with a single seller. Buyer and seller details other than `buyer` and `buyerEmailAddress` come from the invoice and are `null` until it exists." type PurchaseOrder implements Node { account: Account @deprecated(reason : "Use buyer instead") "The secret that grants access to an order placed without a buyer account; `null` for orders with one. Readable only after unlocking the order with this code." authCode: String buyer: Account buyerAddressLine1: String buyerAddressLine2: String buyerCity: String buyerCountry: Country buyerCounty: String buyerEmailAddress: String buyerName: String buyerNote: String buyerPhoneNumber: String buyerPostalCode: String buyerTaxId: String buyerType: AccountType createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") "The currency of the amounts, or `null` when no purchase has a price." currency: Currency customerEmailAddress: String @deprecated(reason : "Use buyerEmailAddress instead") "The fees on the order's purchases. Fees absorbed by the seller are included only for users who can view the seller's financials." fees: [Fee!]! id: ID! invoice: Invoice "The sum of the purchase prices after discounts, excluding fees and taxes." netAmount: Decimal! paymentServiceProviderAccount: PaymentServiceProviderAccount placed: Boolean placedAt: DateTime purchases: [Purchase!]! sellerAddressLine1: String sellerAddressLine2: String sellerCity: String sellerCountry: Country sellerCounty: String sellerName: String sellerPostalCode: String sellerTaxId: String sellerType: AccountType taxSummaries: [TaxSummary!]! taxes: [Tax!]! @deprecated(reason : "Use taxSummaries instead") "The amount the buyer pays, including fees not absorbed by the seller and any VAT added on top." totalAmount: Decimal! } type PurchaseOrderConnection { edges: [PurchaseOrderEdge!]! pageInfo: PageInfo! } type PurchaseOrderEdge implements Edge { cursor: String! node: PurchaseOrder! } "A push notification to the wallet passes of selected pass holders. See ." type PushBroadcast implements Broadcast & Node & PermissionControlledNode { audiences: [Audience!]! body: String! createdAt: DateTime! creator: User! currentUserHasPermission(permission: Permission!): Boolean! errorMessage: String errorReference: String failedCount: Int! id: ID! pendingCount: Int! scheduledAt: DateTime sentAt: DateTime sentCount: Int! status: BroadcastStatus! title: String! "The number of deliveries; `null` until sending starts." totalCount: Int userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } type PushBroadcastConnection implements Connection { edges: [PushBroadcastEdge!]! pageInfo: PageInfo! } type PushBroadcastEdge implements Edge { cursor: String! node: PushBroadcast! } type Query { account(id: ID!): Account autoMessage(id: ID!): AutoMessage countries: [Country!]! "The current server time." date: DateTime emailBroadcast(id: ID!): EmailBroadcast emailBroadcasts(after: String, before: String, filter: EmailBroadcastFilterInput, first: Int, last: Int): EmailBroadcastConnection! event(id: ID!): Event eventTemplate(id: ID!): EventTemplate eventTemplates( anyOfPermissions: [Permission!] @deprecated(reason : "Use permissions instead"), "Only event templates on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] ): [EventTemplate!]! @deprecated(reason : "Use eventTemplatesConnection instead") "Event templates, ordered by name." eventTemplatesConnection(after: String, before: String, filter: EventTemplateFilterInput, first: Int, last: Int): EventTemplateConnection events( anyOfGuestListPermissions: [Permission!] @deprecated(reason : "Use guestListPermissions instead"), fromEndDate: DateTime, "Only events where the current user has any of these permissions on the event or one of its guest lists." guestListPermissions: [Permission!], ids: [ID!], toEndDate: DateTime ): [Event!] @deprecated(reason : "Use eventsConnection instead") eventsConnection(after: String, before: String, filter: EventFilterInput, first: Int, last: Int, sortingKey: EventSortingKey = START_DATE, sortingOrder: SortingOrder = ASCENDING): EventConnection guestConfirmation(id: ID!): GuestConfirmation guestEntries( after: String, before: String, checkedIn: [Boolean!] @deprecated(reason : "Use filter instead"), deletedUserDetailsForQueryMatching: [Boolean!] = [false] @deprecated(reason : "Deleted user details are excluded automatically; this argument will be removed"), eventIds: [ID!] @deprecated(reason : "Use filter instead"), exactQueryMatching: Boolean @deprecated(reason : "Use filter instead"), filter: GuestEntryFilterInput, first: Int, guestListIds: [ID!] @deprecated(reason : "Use filter instead"), ids: [ID!] @deprecated(reason : "Use filter instead"), invitationIds: [ID!] @deprecated(reason : "Use filter instead"), last: Int, mrzData: String @deprecated(reason : "No replacement; MRZ matching is no longer offered."), permanentGuestListEntryIds: [ID!] @deprecated(reason : "Use filter instead"), queries: [String!] @deprecated(reason : "Use filter instead"), query: String @deprecated(reason : "Use filter instead"), referenceUserIds: [ID!] @deprecated(reason : "Use filter instead"), reverseGuestNames: Boolean @deprecated(reason : "Use filter.reverseHolderNamesForQueryMatching instead"), reverseGuestNamesForQueryMatching: Boolean @deprecated(reason : "Use filter instead"), "`userDetail:` sorts by that user detail's value, then by guest name. Otherwise guest entries are sorted by guest name." sortingKey: String, userDetailNames: [String!] @deprecated(reason : "Use filter.userDetailNames instead"), userDetailNamesForQueryMatching: [String!] @deprecated(reason : "Use filter instead") ): GuestEntryConnection guestEntryCount(filter: GuestEntryFilterInput): Int! guestList(id: ID!): GuestList guestLists(after: String, before: String, filter: GuestListFilterInput, first: Int, last: Int): GuestListConnection! invitation(id: ID!): Invitation invitationCount(filter: InvitationFilterInput): Int! invitationTemplate(id: ID!): InvitationTemplate "Invitation templates, ordered by name." invitationTemplates(after: String, before: String, filter: InvitationTemplateFilterInput, first: Int, last: Int): InvitationTemplateConnection "Invitations the caller created or can administer, newest first." invitations(after: String, before: String, filter: InvitationFilterInput, first: Int, last: Int): InvitationConnection me: User "The object with the given ID, or `null` if none exists. Not every `Node` type can be fetched this way." node(id: ID!): Node pass( id: ID!, "The signature from the pass URL. It grants the caller access to the pass without other permissions." signature: String ): Pass passType(id: ID!): PassType passTypeCount(filter: PassTypeFilterInput): Int! passTypes(after: String, before: String, filter: PassTypeFilterInput, first: Int, last: Int): PassTypeConnection passes( after: String, before: String, filter: PassFilterInput, first: Int, last: Int, "`userDetail:` sorts by that user detail's value, then by holder name. Otherwise passes are sorted by holder name." sortingKey: String ): PassConnection permanentGuestList(id: ID!): PermanentGuestList @deprecated(reason : "Use passType instead") permanentGuestListEntries(after: String, before: String, deletedUserDetailsForQueryMatching: [Boolean!] = [false] @deprecated(reason : "Use filter instead"), exactQueryMatching: Boolean @deprecated(reason : "Use filter instead"), filter: PermanentGuestListEntryFilterInput, first: Int, ids: [ID!] @deprecated(reason : "Use filter instead"), last: Int, permanentGuestListIds: [ID!] @deprecated(reason : "Use filter instead"), query: String @deprecated(reason : "Use filter instead"), referenceUserIds: [ID!] @deprecated(reason : "Use filter instead"), reverseGuestNames: Boolean @deprecated(reason : "Use filter.reverseHolderNamesForQueryMatching instead"), reverseGuestNamesForQueryMatching: Boolean @deprecated(reason : "Use filter instead"), sortingKey: String, userDetailNames: [String!] @deprecated(reason : "Use filter.userDetailNamesForQueryMatching instead"), userDetailNamesForQueryMatching: [String!] @deprecated(reason : "Use filter instead")): PermanentGuestListEntryConnection @deprecated(reason : "Use passes instead") permanentGuestListEntry(id: ID!, signature: String): PermanentGuestListEntry @deprecated(reason : "Use pass instead") permanentGuestLists: [PermanentGuestList!]! @deprecated(reason : "Use passTypes instead") purchaseOrders(after: String, before: String, filter: PurchaseOrderFilterInput, first: Int, last: Int, sortingKey: PurchaseOrderSortingKey = CREATION_DATE, sortingOrder: SortingOrder = DESCENDING): PurchaseOrderConnection pushBroadcast(id: ID!): PushBroadcast pushBroadcasts(after: String, before: String, filter: PushBroadcastFilterInput, first: Int, last: Int): PushBroadcastConnection! "A ticket by ID; `null` when it doesn't exist or is deleted." ticket( id: ID!, "The ticket's signature. It grants the caller access to the ticket without other permissions." signature: String ): Ticket tickets(ids: [ID!]!): [Ticket!]! "The user with `id`, or else with `username`. `null` when neither is given." user(id: ID, username: String): User "The users the current user can list." users: [User!]! venue(id: ID!): Venue venueCount(filter: VenueFilterInput): Int! "Venues the caller holds a permission on, directly or through their account, sorted by name." venues(anyOfPermissions: [Permission!] @deprecated(reason : "Use filter instead"), filter: VenueFilterInput): [Venue!] } "A refund of a payment." type RefundTransaction implements Node & Transaction { accountedAt: DateTime accountingDate: DateTime @deprecated(reason : "Use accountedAt instead") amount: Decimal bankAccount: BankAccount! createdAt: DateTime! creationDate: DateTime! @deprecated(reason : "Use createdAt instead") currency: Currency id: ID! invoice: Invoice originalAmount: Decimal! originalCurrency: Currency! paymentTransaction: PaymentTransaction! reference: String } type RenameEventUserDetailsPayload { userDetails: [UserDetail!]! } type RenamePassUserDetailsPayload { passes: [Pass!]! } type RenamePermanentGuestListUserDetailsPayload @deprecated(reason : "Use RenamePassUserDetailsPayload instead") { entries: [PermanentGuestListEntry!]! } type ResumeEmailBroadcastPayload { emailBroadcast: EmailBroadcast! } type ResumePushBroadcastPayload { pushBroadcast: PushBroadcast! } type RetryFailedEmailBroadcastDeliveriesPayload { emailBroadcast: EmailBroadcast! } type RetryFailedPushBroadcastDeliveriesPayload { pushBroadcast: PushBroadcast! } type ScheduleEmailBroadcastPayload { emailBroadcast: EmailBroadcast! } type SchedulePushBroadcastPayload { pushBroadcast: PushBroadcast! } type SendEmailBroadcastPayload { emailBroadcast: EmailBroadcast! } type SendPassPayload { pass: Pass! } type SendPermanentGuestListPassPayload @deprecated(reason : "Use SendPassPayload instead") { permanentGuestListEntry: PermanentGuestListEntry! } type SendPushBroadcastPayload { pushBroadcast: PushBroadcast! } type SetAccountDefaultEmailSenderPayload { account: Account! } type SetEventTemplateArchivedPayload { eventTemplate: EventTemplate! } type SetGuestEntriesPayload { tickets: [Ticket!]! userDetails: [UserDetail!]! } type SetPassesPayload { passes: [Pass!]! } type SetPermanentGuestListEntriesPayload @deprecated(reason : "Use SetPassesPayload instead") { entries: [PermanentGuestListEntry!]! } type Subscription { "Streams the event with its guest lists, tickets and user details, first in full and then as they change." eventUpdate(id: ID!, progressive: Boolean @deprecated(reason : "No replacement")): EventUpdate } "Details for paying an invoice by Swedish Bankgiro." type SwedishBankgiroNumberPaymentDetails { number: String! "The OCR reference to include with the payment." ocr: String } "The total of taxes sharing a type, rate and `absorbed` value." type TaxSummary { "Whether the seller bears the tax instead of it being added to the buyer's total." absorbed: Boolean! amount: Decimal! "A localized description of the tax, including its rate and base amount." description: String! "The localized name of the tax." name: String! "The tax rate as a fraction, such as `0.25` for 25%." rate: Decimal! } "A custom field holding free text." type TextUserDetailField implements UserDetailField { name: String! "The field with the same name inherited from a template that this field replaces, if any." overriddenUserDetailField: UserDetailField parent: Node! required: Boolean! "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } "Admission for one person on a guest list. A guest holds one ticket per person in their party. See ." type Ticket implements Node { "The URL of the ticket's Apple Wallet pass." applePassUrl: String! createdAt: DateTime! "The batch, such as an import, that created the ticket." creationBatch: Batch creationDate: DateTime! @deprecated(reason : "Use createdAt instead") deleted: Boolean! "Whether the ticket is for a free guest. See ." free: Boolean! "The URL that saves the ticket to Google Wallet." googlePassUrl: String! "The signature of the owner's entry on the guest list; `null` unless the guest list has `showGuestEntryBarcodes`." guestEntrySignature: String guestList: GuestList! id: ID! "The invitation the ticket was created through, if any." invitation: Invitation lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! lastModifier: User "The batch, such as an import, that last updated the ticket." lastUpdateBatch: Batch "The user who checked the ticket in." lastUsedModifier: User "The guest holding the ticket." owner: User! "The pass the ticket comes from, when the guest list is linked to a pass type." pass: Pass permanentGuestListEntry: PermanentGuestListEntry @deprecated(reason : "Use pass instead") purchase: Purchase purchasedForNonZeroGrossAmount: Boolean! @deprecated(reason : "Use sold instead") "The user credited with adding the ticket." referenceUser: User! "The ticket's URL-safe Base64 signature of its ID, verifiable with the guest list's `publicSigningKey`." signature: String! "Whether the ticket was purchased at a positive base price, regardless of discounts or fees." sold: Boolean! useDate: DateTime @deprecated(reason : "Use usedAt instead") "Whether the ticket has been checked in." used: Boolean! "When the ticket was checked in; `null` while unused." usedAt: DateTime version: Int! } "A limit on the number of guests a user can add." type TicketCountLimit implements Limit { "The maximum number of guests; `null` means unlimited." maxCount: Int "The limit of the same type and user inherited from a template that this limit replaces, if any." overriddenLimit: Limit parent: Node! "The user the limit applies to; `null` means everyone: a count limit then caps the total across all users, and a date limit applies to each user." principal: User user: User @deprecated(reason : "Use principal instead") } "A purchase of tickets on a guest list through an invitation." type TicketPurchase implements Node & Purchase { appliedCreditNotes: [CreditNote!]! "A description of the purchase in the request's locale." description: String! discounts: [PurchaseDiscount!]! fees: [Fee!]! "The price times quantity plus the fees and VAT the buyer pays, before discounts." grossAmount: Decimal! "The guest the tickets are for; must be set before the purchase order is placed." guest: User guestList: GuestList! "The guest list's details as they were when the purchase was created." guestListSnapshot: TicketPurchaseGuestListSnapshot! "The guest's name as it was when the guest was set; `null` when no guest is set." guestSnapshot: TicketPurchaseGuestSnapshot id: ID! invitation: Invitation! "The invitation's message for accepted guests, with placeholders filled in for this guest." invitationAcceptedMessage: String "The files the invitation's accepted message uses." invitationAcceptedMessageFiles: [IFile!]! "The price times quantity minus discounts, before fees and VAT." netAmount: Decimal! "The price per ticket; `null` when the invitation gives free tickets." price: Price purchaseOrder: PurchaseOrder! quantity: Int! reservationExpirationDate: DateTime! @deprecated(reason : "Use reservationExpiresAt instead") "When the reservation expires; after this, the purchase order can't be placed with this purchase." reservationExpiresAt: DateTime! tickets: [Ticket!]! "The amount the buyer pays: the net amount plus the fees and VAT the buyer pays." totalAmount: Decimal! version: Int! } "An event's details as recorded when a ticket purchase was created." type TicketPurchaseEventSnapshot { beginDate: DateTime @deprecated(reason : "Use startsAt instead") endDate: DateTime @deprecated(reason : "Use endsAt instead") endsAt: DateTime name: String startDate: DateTime @deprecated(reason : "Use startsAt instead") @semanticNonNull(levels : [0]) startsAt: DateTime "The venue as it is now." venue: Venue! venueSnapshot: TicketPurchaseVenueSnapshot! } "A fee charged on a ticket purchase." type TicketPurchaseFee implements Fee & Node { "Whether the seller pays the fee instead of it being added to the buyer's total." absorbed: Boolean! "The fee amount, excluding taxes." amount: Decimal! "A localized description of the fee." description: String! id: ID! taxes: [Tax!]! } "A fee charged per ticket bought: `amount` plus `rate` times the ticket price." type TicketPurchaseFeeRule implements FeeRule & Node { "Whether the seller pays the fee instead of the buyer." absorbed: Boolean! "The fixed amount per ticket, or `null` for none." amount: Decimal "The currency of `amount`. The rule applies only to purchases in this currency." currency: Currency id: ID! infoUrl: String parent: FeeRuleParent! "The fraction of the ticket price added to the fee, such as `0.05` for 5%, or `null` for none." rate: Decimal taxRules: [TaxRule!]! } "A guest list's details as recorded when a ticket purchase was created." type TicketPurchaseGuestListSnapshot { "The guest list's color when the purchase was created, as a hex code with a leading `#`; `null` means none." color: String "The event as it is now." event: Event! eventSnapshot: TicketPurchaseEventSnapshot! name: String! } "A guest's name as recorded on a ticket purchase." type TicketPurchaseGuestSnapshot { firstName: String lastName: String } "A venue's details as recorded when a ticket purchase was created." type TicketPurchaseVenueSnapshot { name: String! timeZone: TimeZone! } "A fee the payment service provider charges on payment transactions. It adds no fees to purchases." type TransactionFeeRule implements FeeRule & Node { "Whether the seller pays the fee instead of the buyer." absorbed: Boolean! id: ID! infoUrl: String parent: FeeRuleParent! taxRules: [TaxRule!]! } type UpdateAutoMessageAttachmentsPayload { attachments: [AutoMessageAttachment!]! } type UpdateAutoMessagePayload { autoMessage: AutoMessage! } type UpdateAutoMessageRecipientsPayload { recipients: [AutoMessageRecipient!]! } type UpdateAutoMessageTriggersPayload { triggers: [AutoMessageTrigger!]! } type UpdateEmailSenderPayload { emailSender: EmailSender! } type UpdateEventPayload { event: Event! } type UpdateEventTemplatePayload { eventTemplate: EventTemplate! } type UpdateGuestListPayload { guestList: GuestList! } type UpdateGuestListTemplatesPayload { guestListTemplates: [GuestListTemplate!]! } type UpdateGuestListsPayload { guestLists: [GuestList!]! } type UpdateInvitationPayload { invitation: Invitation! } type UpdateInvitationTemplatePayload { invitationTemplate: InvitationTemplate! } type UpdatePassTypePayload { passType: PassType! } type UpdatePermanentGuestListPayload @deprecated(reason : "Use UpdatePassTypePayload instead") { permanentGuestList: PermanentGuestList! } type UpdatePushBroadcastPayload { pushBroadcast: PushBroadcast! } type UpdateTaxRulesPayload { taxRules: [TaxRule!]! } type UpdateTicketPayload { ticket: Ticket! } type UpdateUserPayload { user: User! } type UpdateVenuePayload { venue: Venue! } "A login that can be given permissions to an account's data. See ." type User implements Node & PermissionControlledNode { account: Account "Whether the app may ask the user for a review, which is `true` until an app review request is recorded for the user." askedForAppReview(target: String): Boolean! currentUserHasPermission(permission: Permission!): Boolean! emailAddress: String firstName: String id: ID! jobTitle: String lastActiveAt: DateTime lastActivityDate: DateTime @deprecated(reason : "Use lastActiveAt instead") lastName: String "The user's active OAuth2 authorizations, newest first." oauth2Authorizations: [OAuth2Authorization!]! "Whether several people share this login. A shared user can't change its own details." shared: Boolean! subscribedToNewsletters: Boolean! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") "The username for password login, or `null` when the user has none." username: String } "A permission granted to a user on an object, directly or inherited from a parent object such as a venue or event template. See ." type UserAccessPermission { inherited: Boolean! @deprecated(reason : "Compare parent with the queried object instead") "The object the permission is granted on; differs from the queried object when the permission is inherited." parent: PermissionControlledNode! permission: Permission! "The user the permission is granted to; always set." principal: User user: User @deprecated(reason : "Use principal instead") "Whether the permission is granted; always `true`." value: Boolean! } "A named value recorded for a guest on a guest list, such as a custom field. See ." type UserDetail implements Node { deleted: Boolean! guestList: GuestList! id: ID! lastModificationDate: DateTime! @deprecated(reason : "Use lastModifiedAt instead") lastModifiedAt: DateTime! name: String! user: User! value: String! version: Int! } "A selectable option of a custom field." type UserDetailFieldOption { value: String! } "An attachment generated for the triggering guest." type VariableAutoMessageAttachment implements AutoMessageAttachment & Node { id: ID! "`ticketsOrGuestConfirmation` attaches the guest's tickets when their guest list has one QR code per guest, and their guest confirmation otherwise. Other names attach nothing." variableName: String! } "A recipient whose email address is taken from a placeholder variable of the triggering guest." type VariableEmailAutoMessageRecipient implements AutoMessageRecipient & Node { id: ID! "The variable holding the email address, such as `guestEmailAddress`. No email is sent to this recipient when the value isn't a valid email address." variableName: String! } "Value-added tax." type Vat implements Tax { "Whether the seller bears the tax instead of it being added to the buyer's total." absorbed: Boolean! amount: Decimal! "A localized description of the tax, including its rate and base amount." description: String! "The localized name of the tax." name: String! "The tax rate as a fraction, such as `0.25` for 25%." rate: Decimal! } "A value-added tax (VAT) rule." type VatRule implements Node & TaxRule { id: ID! name: String! "The tax rate as a fraction of at most 1, such as `0.25` for 25%." rate: Decimal } "A place where an account holds its events." type Venue implements FeatureControlledNode & Node & PermissionControlledNode { account: Account! address: String city: String country: Country currentUserHasPermission(permission: Permission!): Boolean! googlePlaceId: String id: ID! latitude: Float longitude: Float name: String! "The time zone set on the venue itself; `null` means it uses its account's." ownedTimeZone: TimeZone postalCode: String "The venue's time zone, or its account's when `ownedTimeZone` is `null`." timeZone: TimeZone! userAccessPermissions: [UserAccessPermission!]! userHasAccessPermission(permission: Permission!): Boolean! @deprecated(reason : "Use currentUserHasPermission instead") } "The kind of account holder: a private person or a business." enum AccountType { BUSINESS PERSON } enum BroadcastStatus { CANCELLED DRAFT FAILED SCHEDULED SENDING SENT } "An attachment added to each recipient's email." enum EmailEnrichmentKind { "An iCalendar (`.ics`) file for the event." EVENT_CALENDAR "The guest's tickets, or a guest confirmation when the guest list doesn't show ticket barcodes. Not added for personal invitation recipients." TICKET_OR_GUEST_CONFIRMATION } enum EventSortingKey { BEGIN_DATE @deprecated(reason : "Use START_DATE instead") START_DATE } "How the data of an import was entered." enum ImportBatchMethod { "Extracted with AI." AI "From an uploaded file." FILE "From pasted or typed text." TEXT } "The industry an account operates in." enum IndustryCategory { ARTS_AND_CULTURE ASSOCIATIONS_AND_NONPROFITS COMMUNITY_AND_MEETUPS CONCERTS_AND_FESTIVALS CONFERENCES_AND_TRADE_SHOWS CORPORATE_EVENTS EDUCATION EVENT_AGENCIES_AND_PLANNERS FASHION_PR_AND_BRAND_EVENTS GOVERNMENT_AND_DIPLOMACY NIGHTLIFE OTHER RESTAURANTS_AND_HOTELS SPORTS WEDDINGS_AND_PRIVATE_PARTIES } "The kind of invitation." enum InvitationType { OPEN PERSONAL } enum InvoiceSortingKey { CREATED_AT } "The kind of an invoice." enum InvoiceType { "An invoice crediting all or part of an invoiced purchase." CREDIT "An invoice for the service fees Attendium charged on an account's sales during a period. Nothing is due on it." SERVICE_FEE "An invoice for a purchase order." STANDARD } "The kind of an Attendium legal document." enum LegalDocumentType { "The addendum an account must accept before using AI features, such as importing guests with AI." AI_ADDENDUM "The terms for using the Attendium API." DEVELOPER_TERMS "The GDPR data processing agreement (DPA) between Attendium and an account." GDPR PRIVACY_POLICY TERMS_OF_SERVICE } enum PageContentType { MARKDOWN TEXT } "The primary purpose of a pass type." enum PassCategory { CONFERENCE CREW FESTIVAL MEMBERSHIP OTHER PRESS SEASON VIP } "A permission a user can hold on an object. Some permissions imply others. See ." enum Permission { ADD_INVITATIONS "Add guests, and see, edit and delete the guests the user added." ADD_TICKETS "Full access, including managing the object's permissions." ADMINISTER ADMINISTER_FINANCIALS_FOR_SELLERS EDIT_MANAGER_NOTES @private SEND_MESSAGES USE_INVITATION_TEMPLATES "View all guests and check them in." USE_TICKETS VIEW_FINANCIALS_FOR_SELLERS VIEW_MANAGER_NOTES @private VIEW_MESSAGES "View all guests." VIEW_TICKETS VIEW_USER_DETAIL_FIELDS } "An invitee's response to a personal invitation." enum PersonalInvitationResponse { ACCEPTED DECLINED } enum PurchaseOrderSortingKey { CREATION_DATE } enum SortingOrder { ASCENDING DESCENDING } "How VAT is applied to a sale." enum VatChargeRule { "VAT is charged." CHARGE "VAT is charged. Appears only on older invoices." DOMESTIC_CHARGE @deprecated(reason : "Replaced by CHARGE, which has the same meaning.") "No VAT is charged; the buyer accounts for it under the EU reverse-charge rules, which requires the buyer's VAT ID." EU_REVERSE_CHARGE "No VAT is charged because the sale is an export." EXPORT_DO_NOT_CHARGE } "A point in time in ISO 8601 format with a UTC offset, such as `2026-05-01T18:00:00+02:00`. Outputs are in UTC with second precision, such as `2026-05-01T16:00:00Z`." scalar DateTime @specifiedBy(url : "https://scalars.graphql.org/andimarek/date-time.html") "An arbitrary-precision decimal number, serialized as a string such as `\"12.50\"`. Inputs must also be strings." scalar Decimal "An IANA time zone ID, such as `Europe/Stockholm`. Unrecognized IDs are treated as `GMT`." scalar TimeZone input AccountFilterInput { query: String } input AwaitNodeInput { "Whether to wait until the object is deleted or no longer exists, instead of until it exists." deletedOrGone: Boolean = false fromVersion: Int @deprecated(reason : "No replacement") id: ID! } input AwaitNodeNodeInput { " Version-based catch-up is unsupported; if needed, implement a cookie-based, backend-only catch-up rather than reviving this field." fromVersion: Int @deprecated(reason : "No replacement") id: ID! } input BatchInput @oneOf { importBatch: ImportBatchInput } input CancelEmailBroadcastInput { id: ID! } input CancelPushBroadcastInput { id: ID! } input ChangeGuestEntryTicketCountsInput { change: GuestEntryTicketCountChangeInput! "Must include at least one event in `eventIds`." filter: GuestEntryFilterInput! } input ChangePassTicketCountsInput { change: PassTicketCountChangeInput! "Must include at least one pass type in `passTypeIds`." filter: PassFilterInput! } input ClearGuestListsInput { ids: [ID!]! } input CopyEventInput { beginDate: DateTime @deprecated(reason : "Use startDate instead") endDate: DateTime @deprecated(reason : "Use endsAt instead") "The event\\'s end time; required, though nullable for backwards compatibility." endsAt: DateTime id: ID! "Whether to copy the limits set on the event and its guest lists." includeLimits: Boolean = true "Whether to copy the permissions granted on the event and its guest lists." includeUserAccessPermissions: Boolean! name: String newVenue: CreateVenueInput startDate: DateTime @deprecated(reason : "Use startsAt instead") "The event\\'s start time; required, though nullable for backwards compatibility." startsAt: DateTime venueId: ID } input CreateAudienceInput { passFilterAudience: CreatePassFilterAudienceInput } input CreateAutoMessageAttachmentInput @oneOf { variableAutoMessageAttachment: CreateVariableAutoMessageAttachmentInput } input CreateAutoMessageAttachmentsInput { attachments: [CreateAutoMessageAttachmentInput!]! } input CreateAutoMessageFilesInput { autoMessageId: ID! "The name of the `multipart/form-data` request part holding the files. Requests naming a part must be sent as `multipart/form-data`." files: String! } input CreateAutoMessageInput { attachments: [InlineCreateAutoMessageAttachmentInput!] body: String! "Whether the auto message is disabled and not sent. Defaults to `false`." disabled: Boolean eventId: ID! "The name of the `multipart/form-data` request part holding files to upload for the body. Requests naming a part must be sent as `multipart/form-data`." files: String recipients: [InlineCreateAutoMessageRecipientInput!] replyTo: EmailAddressInput replyToEmailAddress: String @deprecated(reason : "Use replyTo instead") subject: String! triggers: [InlineCreateAutoMessageTriggerInput!] } input CreateAutoMessageRecipientInput @oneOf { emailAutoMessageRecipient: CreateEmailAutoMessageRecipientInput variableEmailAutoMessageRecipient: CreateVariableEmailAutoMessageRecipientInput } input CreateAutoMessageRecipientsInput { recipients: [CreateAutoMessageRecipientInput!]! } input CreateAutoMessageTriggerInput @oneOf { guestEntryAddedAutoMessageTrigger: CreateGuestEntryAddedAutoMessageTriggerInput } input CreateAutoMessageTriggersInput { triggers: [CreateAutoMessageTriggerInput!]! } input CreateCheckboxesUserDetailFieldInput { name: String! options: [CreateUserDetailFieldOptionInput!]! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreateDropdownUserDetailFieldInput { name: String! options: [CreateUserDetailFieldOptionInput!]! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreateEmailAddressUserDetailFieldInput { name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreateEmailAudienceInput @oneOf { guestEntryFilterAudience: CreateGuestEntryFilterAudienceInput personalInvitationFilterAudience: CreatePersonalInvitationFilterAudienceInput } input CreateEmailAutoMessageRecipientInput { autoMessageId: ID! emailAddress: String! } input CreateEmailBroadcastInput { audiences: [CreateEmailAudienceInput!]! body: String! recipientEnrichments: [EmailEnrichmentKind!] replyTo: EmailAddressInput "When to send the broadcast. A past time sends it immediately; `null` leaves it a draft." scheduledAt: DateTime subject: String! } input CreateEmailSenderInput { accountId: ID! "The address, on one of the account's domains." address: String! "The name recipients see." name: String! } input CreateEventInput { beginDate: DateTime @deprecated(reason : "Use startDate instead") endDate: DateTime @deprecated(reason : "Use endsAt instead") "The event\\'s end time; required, though nullable for backwards compatibility." endsAt: DateTime "The event template to create the event from. The event gets the template's venue and guest lists, and `venueId`, `newVenue` and `guestLists` are ignored." eventTemplateId: ID guestLists: [InlineCreateGuestListInput!] name: String newVenue: CreateVenueInput startDate: DateTime @deprecated(reason : "Use startsAt instead") "The event\\'s start time; required, though nullable for backwards compatibility." startsAt: DateTime venueId: ID } input CreateEventTemplateInput { name: String newVenue: CreateVenueInput venueId: ID } input CreateGuestConfirmationInput { guestIds: [ID!]! guestListIds: [ID!]! } input CreateGuestEntryAddedAutoMessageTriggerInput { autoMessageId: ID! "Whether the trigger applies only to guests added through an invitation (`true`) or only to guests added otherwise (`false`); `null` applies to both. A signup with any ticket through an invitation counts as added through an invitation." byInvitation: Boolean "The guest lists the trigger applies to; `null` means all of the event's guest lists, an empty list none." guestListIds: [ID!] } input CreateGuestEntryConfirmationInput @deprecated(reason : "Use createGuestConfirmation instead") { eventId: ID! guestId: ID! guestListId: ID } input CreateGuestEntryFilterAudienceInput { guestEntryFilter: GuestEntryFilterInput! } input CreateGuestListInput { "A hex code with a leading `#`, such as `#e15241`. Must match the guest list template's color when there is one; also changes the linked pass type's color." color: String eventId: ID! name: String "The pass type to link the guest list to. The guest list then takes the pass type's name and color, and `name` and `color` are ignored." passTypeId: ID permanentGuestListId: ID @deprecated(reason : "Use passTypeId instead") showGuestEntryBarcodes: Boolean showTicketBarcodes: Boolean "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String } input CreateGuestListTemplateInput { "A hex code with a leading `#`, such as `#e15241`. Ignored when a pass type is given, whose color is used instead." color: String eventTemplateId: ID! name: String passTypeId: ID permanentGuestListId: ID @deprecated(reason : "Use passTypeId instead") "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String } input CreateGuestListTemplatesInput { guestListTemplates: [CreateGuestListTemplateInput!]! } input CreateGuestListsInput { guestLists: [CreateGuestListInput!]! } input CreateInvitationFilesInput { "The name of the `multipart/form-data` request part holding files for the messages. Requests naming a part must be sent as `multipart/form-data`." files: String! invitationId: ID! } input CreateInvitationInput @oneOf { openInvitation: CreateOpenInvitationInput personalInvitation: CreatePersonalInvitationInput } input CreateInvitationTemplateFilesInput { "The name of the `multipart/form-data` request part holding files to upload. Requests naming a part must be sent as `multipart/form-data`." files: String! invitationTemplateId: ID! } input CreateInvitationTemplateInput { "Markdown shown to guests after they sign up or buy, on their order page and in the confirmation email; supports `{{guest.name}}`, `{{guest.firstName}}`, `{{guest.lastName}}` and `{{event.name}}`." acceptedMessage: String "Markdown shown on the invitation page and in invitation emails; `{{event.name}}` is replaced by the event name." additionalInformationMessage: String confirmationMessagesEnabled: Boolean "Markdown intended for guests who decline a personal invitation; not currently shown to guests." declinedMessage: String emailReplyTo: EmailAddressInput eventId: ID @deprecated(reason : "No replacement.") "The name of the `multipart/form-data` request part holding files to upload. Requests naming a part must be sent as `multipart/form-data`." files: String guestListConfigurations: [InvitationGuestListConfigurationInput!] name: String! "Markdown shown on the invitation page when no offered guest list has tickets left; `{{event.name}}` is replaced by the event name." notEnoughTicketsAvailableMessage: String replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") "The heading of the invitation page and the sender name of invitation and confirmation emails; `null` means the event name." title: String userDetailFields: [CreateUserDetailFieldInput!] } input CreateInvitationsInput { batch: BatchInput invitations: [CreateInvitationInput!]! } input CreateMultipleChoiceUserDetailFieldInput { name: String! options: [CreateUserDetailFieldOptionInput!]! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreateOpenInvitationInput { acceptedMessage: String additionalInformationMessage: String confirmationEmailUserDetailName: String @deprecated(reason : "Use confirmationMessagesEnabled instead") "Whether guests get confirmation emails; defaults to whether `confirmationEmailUserDetailName` is set." confirmationMessagesEnabled: Boolean declinedMessage: String emailReplyTo: EmailAddressInput eventId: ID "The name of the `multipart/form-data` request part holding files for the messages. Requests naming a part must be sent as `multipart/form-data`." files: String guestListConfigurations: [InvitationGuestListConfigurationInput!] invitationTemplateId: ID name: String! notEnoughTicketsAvailableMessage: String registrationDeadline: DateTime replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") title: String userDetailFields: [CreateUserDetailFieldInput!] userDetails: [UserDetailInput!] } input CreateParagraphUserDetailFieldInput { name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreatePassFilterAudienceInput { passFilter: PassFilterInput! } input CreatePassTypeInput { accountId: ID! "The primary purpose of the pass; `null` means uncategorized." category: PassCategory color: String issuerName: String name: String! sendAutomatically: Boolean supportEmailAddress: String } input CreatePermanentGuestListInput @deprecated(reason : "Use CreatePassTypeInput instead") { accountId: ID! color: String guestSupportEmailAddress: String name: String! } input CreatePersonalInvitationFilterAudienceInput { invitationFilter: InvitationFilterInput! } input CreatePersonalInvitationInput { eventId: ID "The name of the `multipart/form-data` request part holding files for the messages. Requests naming a part must be sent as `multipart/form-data`." files: String guestListConfigurations: [InvitationGuestListConfigurationInput!] invitationTemplateId: ID! inviteeId: ID maxTicketCount: Int name: String newInvitee: CreateUserInput registrationDeadline: DateTime title: String userDetails: [UserDetailInput!] } input CreatePushBroadcastInput { audiences: [CreateAudienceInput!]! body: String! "When to send the broadcast. A time that isn't in the future sends it immediately; `null` keeps it a draft." scheduledAt: DateTime title: String! } input CreateTaxRuleInput @oneOf { vatRule: CreateVatRuleInput } input CreateTaxRulesInput { taxRules: [CreateTaxRuleInput!]! } input CreateTextUserDetailFieldInput { name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input CreateUserDetailFieldInput @oneOf { checkboxesUserDetailField: CreateCheckboxesUserDetailFieldInput dropdownUserDetailField: CreateDropdownUserDetailFieldInput emailAddressUserDetailField: CreateEmailAddressUserDetailFieldInput multipleChoiceUserDetailField: CreateMultipleChoiceUserDetailFieldInput paragraphUserDetailField: CreateParagraphUserDetailFieldInput textUserDetailField: CreateTextUserDetailFieldInput } input CreateUserDetailFieldOptionInput { value: String! } input CreateUserInput { "The account the user belongs to. Required by `createUser`." accountId: ID emailAddress: String "Whether to email the user a link for choosing a password. Requires `username` and `emailAddress`." emailSetupInstructions: Boolean firstName: String jobTitle: String lastName: String password: String "A message included in the setup instructions email." setupInstructionsEmailMessage: String shared: Boolean username: String } input CreateVariableAutoMessageAttachmentInput { autoMessageId: ID! variableName: String! } input CreateVariableEmailAutoMessageRecipientInput { autoMessageId: ID! variableName: String! } input CreateVatRuleInput { "The country, account, purchase or fee rule the rule applies to." parentId: ID! "The tax rate as a fraction of at most 1, such as `0.25` for 25%. Truncated to four decimal places." rate: Decimal } input CreateVenueInput { accountId: ID! address: String city: String "A two-letter ISO 3166-1 country code, case-insensitive." countryCode: String googlePlaceId: String latitude: Float longitude: Float name: String! ownedTimeZone: TimeZone @deprecated(reason : "Use timeZone instead") postalCode: String timeZone: TimeZone } input DeclinePersonalInvitationInput { id: ID! reason: String } input DeleteAccountDomainInput { id: ID! } input DeleteAudienceInput { id: ID! } input DeleteAutoMessageAttachmentsInput { ids: [ID!]! } input DeleteAutoMessageInput { id: ID! } input DeleteAutoMessageRecipientsInput { ids: [ID!]! } input DeleteAutoMessageTriggersInput { ids: [ID!]! } input DeleteEmailBroadcastInput { id: ID! } input DeleteEmailSenderInput { id: ID! } input DeleteEventInput { id: ID! } input DeleteEventTemplateInput { id: ID! } input DeleteEventUserDetailsInput { eventId: ID! "The names of the user details to delete. `null` deletes all of the event's user details." names: [String!] } input DeleteFilesInput { ids: [ID!]! } input DeleteGuestEntriesInput { "Must include at least one event in `eventIds`." filter: GuestEntryFilterInput! } input DeleteGuestListInput { id: ID! } input DeleteGuestListTemplatesInput { ids: [ID!]! } input DeleteGuestListsInput { ids: [ID!]! } input DeleteInvitationInput { id: ID! } input DeleteInvitationTemplateInput { id: ID! } input DeleteInvitationsInput { filter: InvitationFilterInput! } input DeletePassTypeInput { id: ID! } input DeletePassUserDetailsInput { names: [String!] passTypeId: ID! } input DeletePassesInput { "Must include at least one pass type in `passTypeIds`." filter: PassFilterInput! } input DeletePermanentGuestListInput @deprecated(reason : "Use DeletePassTypeInput instead") { id: ID! } input DeletePermanentGuestListUserDetailsInput @deprecated(reason : "Use DeletePassUserDetailsInput instead") { names: [String!] permanentGuestListId: ID! } input DeletePushBroadcastInput { id: ID! } input DeleteTaxRulesInput { ids: [ID!]! } input DeleteUserInput { id: ID! } input DeleteVenueInput { id: ID! } input EmailAddressInput { address: String! name: String } input EmailBroadcastFilterInput { creatorIds: [ID!] ids: [ID!] statuses: [BroadcastStatus!] } input EmailInvitationInput { invitationId: ID! toEmailAddress: String! } input EmailInvitationsInput { "Also emails every invitation matching the filter, each to its `E-mail address` user detail; invitations without one are skipped." filter: InvitationFilterInput "When provided, must contain at least one invitation." invitations: [EmailInvitationInput!] } input EventFilterInput { fromEndDate: DateTime @deprecated(reason : "Use fromEndsAt instead") "Only events ending at or after this time." fromEndsAt: DateTime "Only events where the current user has any of these permissions on the event or one of its guest lists." guestListPermissions: [Permission!] ids: [ID!] "Each word must start a word in the event's name, ignoring case." query: String toEndDate: DateTime @deprecated(reason : "Use toEndsAt instead") "Only events ending at or before this time." toEndsAt: DateTime venueIds: [ID!] } input EventTemplateFilterInput { archived: Boolean "Only event templates on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] "Words that must each start a word in the template name, ignoring case." query: String venueIds: [ID!] } input GuestEntryFilterInput { "`[true]` matches guest entries with a checked-in ticket, `[false]` those with a ticket not checked in, `[true, false]` all." checkedIn: [Boolean!] deletedUserDetailsForQueryMatching: [Boolean!] = [false] @deprecated(reason : "Deleted user details are excluded automatically; this field will be removed") eventIds: [ID!] "Whether queries must instead equal the guest's whole name or a whole user detail value, ignoring case." exactQueryMatching: Boolean guestListIds: [ID!] ids: [ID!] invitationIds: [ID!] mrzData: String @deprecated(reason : "No replacement; MRZ matching is no longer offered.") passIds: [ID!] permanentGuestListEntryIds: [ID!] @deprecated(reason : "Use passIds instead") "Further queries, any of which may match. More than one query in total requires `exactQueryMatching`." queries: [String!] "Each word must start a word in the guest's name or in one user detail value, ignoring case." query: String referenceUserIds: [ID!] "Whether exact matching and sorting use the guest's last name first." reverseGuestNamesForQueryMatching: Boolean "Guest entries with a user detail of any of these names." userDetailNames: [String!] "The user details queries match against; `null` matches all, an empty list only guest names." userDetailNamesForQueryMatching: [String!] } input GuestEntryInput { "How many of the tickets are free. Omit to keep the current number, capped at `ticketCount`." freeTicketCount: Int "The guest for this entry; defaults to the guest given in `SetGuestEntriesInput`." guestId: ID guestListId: ID! newGuest: CreateUserInput "The guest's total number of tickets on the guest list. Omit to keep the current number." ticketCount: Int "How many of the tickets are both used and free. Omit to derive it from the other counts." usedFreeTicketCount: Int "How many of the tickets are used. Omit to keep the current number, capped at `ticketCount`." usedTicketCount: Int userDetails: [UserDetailInput!] } input GuestEntryTicketCountChangeInput @oneOf { "The amount to add, negative to subtract; not `0`. The resulting count must be at least 1." increment: Int "The new ticket count; at least 1." set: Int } input GuestListFilterInput { deleted: [Boolean!] = [false] ids: [ID!] } input ImportBatchInput { filename: String method: ImportBatchMethod! } input InlineCreateAutoMessageAttachmentInput @oneOf { variableAutoMessageAttachment: InlineCreateVariableAutoMessageAttachmentInput } input InlineCreateAutoMessageRecipientInput @oneOf { emailAutoMessageRecipient: InlineCreateEmailAutoMessageRecipientInput variableEmailAutoMessageRecipient: InlineCreateVariableEmailAutoMessageRecipientInput } input InlineCreateAutoMessageTriggerInput @oneOf { guestEntryAddedAutoMessageTrigger: InlineCreateGuestEntryAddedAutoMessageTriggerInput } input InlineCreateEmailAutoMessageRecipientInput { emailAddress: String! } input InlineCreateGuestEntryAddedAutoMessageTriggerInput { "Whether the trigger applies only to guests added through an invitation (`true`) or only to guests added otherwise (`false`); `null` applies to both. A signup with any ticket through an invitation counts as added through an invitation." byInvitation: Boolean "The guest lists the trigger applies to; `null` means all of the event's guest lists, an empty list none." guestListIds: [ID!] } input InlineCreateGuestListInput { name: String "The pass type to link the guest list to. The guest list then takes the pass type's name and `name` is ignored." passTypeId: ID permanentGuestListId: ID @deprecated(reason : "Use passTypeId instead") } input InlineCreateVariableAutoMessageAttachmentInput { variableName: String! } input InlineCreateVariableEmailAutoMessageRecipientInput { variableName: String! } input InvitationFilterInput { "Invitations offering a guest list of any of these events, directly or through their invitation template." eventIds: [ID!] "When provided, must contain at least one invitation ID." ids: [ID!] invitationTemplateIds: [ID!] "Invitations with any of these responses. Include `null` to match invitations without one, open invitations included." personalInvitationResponses: [PersonalInvitationResponse] "Each word must start a word in the invitation's name or the invitee's name, ignoring case." query: String "Whether `lastSharedAt` is set." shared: Boolean types: [InvitationType!] "Invitations with a user detail of any of these names." userDetailNames: [String!] } input InvitationGuestListConfigurationInput { freeTickets: Boolean guestListId: ID! maxTicketCount: Int maxTicketCountPerGuest: Int! } input InvitationTemplateFilterInput { archived: Boolean "Only templates on which the current user holds any of these permissions, or one implying it; defaults to `USE_INVITATION_TEMPLATES`. Templates the current user created are always included." permissions: [Permission!] "Words that must each start a word in the template name, ignoring case." query: String } input LimitChangeInput { freeTicketCountLimit: TicketCountLimitChangeInput maxTicketCreationDateLimit: MaxTicketCreationDateLimitChangeInput minTicketCreationDateLimit: MinTicketCreationDateLimitChangeInput ticketCountLimit: TicketCountLimitChangeInput } input MaxTicketCreationDateLimitChangeInput { deleted: Boolean maxCreatedAt: DateTime maxCreationDate: DateTime @deprecated(reason : "Use maxCreatedAt instead") "The user the limit applies to; `null` means everyone (see `Limit.principal`)." principalId: ID userId: ID @deprecated(reason : "Use principalId instead") } input MinTicketCreationDateLimitChangeInput { deleted: Boolean minCreatedAt: DateTime minCreationDate: DateTime @deprecated(reason : "Use minCreatedAt instead") "The user the limit applies to; `null` means everyone (see `Limit.principal`)." principalId: ID userId: ID @deprecated(reason : "Use principalId instead") } input MoveGuestEntriesInput { destinationGuestListId: ID! "Must include at least one event in `eventIds`." filter: GuestEntryFilterInput! } input PassFilterInput { "Whether the holder has checked in with the pass on any of the pass type's guest lists. With `checkedInFrom` or `checkedInTo`, only check-ins in that window count." checkedIn: Boolean "The inclusive start of the `checkedIn` window; ignored without `checkedIn`." checkedInFrom: DateTime "The inclusive end of the `checkedIn` window; ignored without `checkedIn`." checkedInTo: DateTime "Which user details `query` matches: `[false]` current ones, `[true]` deleted ones, `[true, false]` both." deletedUserDetailsForQueryMatching: [Boolean!] = [false] "Whether `query` must instead equal the holder's whole name or a whole user detail value, ignoring case." exactQueryMatching: Boolean ids: [ID!] passTypeIds: [ID!] "Each word must start a word in the holder's name or in one user detail value, ignoring case." query: String referenceUserIds: [ID!] reverseGuestNamesForQueryMatching: Boolean @deprecated(reason : "Use reverseHolderNamesForQueryMatching instead") "Whether exact matching and sorting use the holder's last name first." reverseHolderNamesForQueryMatching: Boolean "The user details `query` matches against; `null` matches all, an empty list only holder names." userDetailNamesForQueryMatching: [String!] } input PassInput { "How many of the tickets are free; `null` keeps the current count, capped at `ticketCount`." freeTicketCount: Int holderId: ID newHolder: CreateUserInput passTypeId: ID! "The holder's ticket count; `0` deletes the pass. `null` keeps an existing pass's count and creates no new pass." ticketCount: Int "Replaces all of the pass's user details; `null` keeps them unchanged." userDetails: [PassUserDetailInput!] } input PassTicketCountChangeInput @oneOf { "The amount to add, negative to subtract; not `0`. The resulting count must be at least 1." increment: Int "The new ticket count; at least 1." set: Int } input PassTypeFilterInput { "Each word must start a word in the pass type's name, ignoring case." query: String } input PassUserDetailInput { name: String! value: String } input PermanentGuestListEntryFilterInput @deprecated(reason : "Use PassFilterInput instead") { deletedUserDetailsForQueryMatching: [Boolean!] = [false] exactQueryMatching: Boolean ids: [ID!] permanentGuestListIds: [ID!] query: String referenceUserIds: [ID!] reverseGuestNamesForQueryMatching: Boolean userDetailNamesForQueryMatching: [String!] } input PermanentGuestListEntryInput @deprecated(reason : "Use PassInput instead") { freeTicketCount: Int guestId: ID newGuest: CreateUserInput permanentGuestListId: ID! ticketCount: Int userDetails: [PassUserDetailInput!] } input PriceInput { "The amount in the currency's main unit, such as `12.50`." amount: Decimal! "The ISO 4217 currency code, such as `SEK`." currencyCode: String! } input PurchaseOrderFilterInput { eventIds: [ID!] "The inclusive lower bound on `createdAt`." fromCreatedAt: DateTime ids: [ID!] "Only orders on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] placed: Boolean "Whether to match only orders with at least one purchase that has a price (`true`) or only orders with none (`false`)." priced: Boolean "A buyer email address to match exactly, ignoring case." query: String ticketIds: [ID!] "The inclusive upper bound on `createdAt`." toCreatedAt: DateTime venueIds: [ID!] } input PushBroadcastFilterInput { creatorIds: [ID!] ids: [ID!] passTypeIds: [ID!] statuses: [BroadcastStatus!] } input RenameEventTemplateUserDetailsInput { eventTemplateId: ID! renameUserDetails: [RenameUserDetailInput!]! } input RenameEventUserDetailsInput { eventId: ID! renameUserDetails: [RenameUserDetailInput!]! } input RenamePassUserDetailsInput { passTypeId: ID! renameUserDetails: [RenameUserDetailInput!]! } input RenamePermanentGuestListUserDetailsInput @deprecated(reason : "Use RenamePassUserDetailsInput instead") { permanentGuestListId: ID! renameUserDetails: [RenameUserDetailInput!]! } input RenameUserDetailInput { fromName: String! toName: String! } input ResumeEmailBroadcastInput { id: ID! } input ResumePushBroadcastInput { id: ID! } input RetryFailedEmailBroadcastDeliveriesInput { id: ID! } input RetryFailedPushBroadcastDeliveriesInput { id: ID! } input ScheduleEmailBroadcastInput { id: ID! scheduledAt: DateTime! } input SchedulePushBroadcastInput { id: ID! scheduledAt: DateTime! } input SendEmailBroadcastInput { id: ID! } input SendPassInput { passId: ID! } input SendPermanentGuestListPassInput @deprecated(reason : "Use SendPassInput instead") { permanentGuestListEntryId: ID! } input SendPushBroadcastInput { id: ID! } input SetAccountDefaultEmailSenderInput { accountId: ID! "One of the account's senders; `null` sends the account's emails from Attendium's own address." emailSenderId: ID } input SetEventTemplateArchivedInput { archived: Boolean! id: ID! } input SetGuestEntriesInput { batch: BatchInput guestEntries: [GuestEntryInput!]! "The guest for entries that don't name their own." guestId: ID newGuest: CreateUserInput } input SetPassesInput { batch: BatchInput passes: [PassInput!]! } input SetPermanentGuestListEntriesInput @deprecated(reason : "Use SetPassesInput instead") { entries: [PermanentGuestListEntryInput!]! } input TicketCountLimitChangeInput { deleted: Boolean maxCount: Int "The user the limit applies to; `null` means everyone (see `Limit.principal`)." principalId: ID userId: ID @deprecated(reason : "Use principalId instead") } input UpdateAutoMessageAttachmentInput @oneOf { variableAutoMessageAttachment: UpdateVariableAutoMessageAttachment } input UpdateAutoMessageAttachmentsInput { attachments: [UpdateAutoMessageAttachmentInput!]! } input UpdateAutoMessageInput { body: String "Whether the auto message is disabled and not sent." disabled: Boolean id: ID! replyTo: EmailAddressInput replyToEmailAddress: String @deprecated(reason : "Use replyTo instead") subject: String } input UpdateAutoMessageRecipientInput @oneOf { emailAutoMessageRecipient: UpdateEmailAutoMessageRecipientInput variableEmailAutoMessageRecipient: UpdateVariableEmailAutoMessageRecipientInput } input UpdateAutoMessageRecipientsInput { recipients: [UpdateAutoMessageRecipientInput!]! } input UpdateAutoMessageTriggerInput @oneOf { guestEntryAddedAutoMessageTrigger: UpdateGuestEntryAddedAutoMessageTriggerInput } input UpdateAutoMessageTriggersInput { triggers: [UpdateAutoMessageTriggerInput!]! } input UpdateCheckboxesUserDetailFieldInput { deleted: Boolean name: String! options: [CreateUserDetailFieldOptionInput!] required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdateDropdownUserDetailFieldInput { deleted: Boolean name: String! options: [CreateUserDetailFieldOptionInput!] required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdateEmailAddressUserDetailFieldInput { deleted: Boolean name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdateEmailAutoMessageRecipientInput { emailAddress: String id: ID! } input UpdateEmailSenderInput { id: ID! "The name recipients see." name: String! } input UpdateEventInput { beginDate: DateTime @deprecated(reason : "Use startDate instead") endDate: DateTime @deprecated(reason : "Use endsAt instead") endsAt: DateTime "Setting a template moves the event to the template's venue and links its guest lists to the template's guest list templates by name, creating any that are missing. `null` detaches the template." eventTemplateId: ID id: ID! limitChanges: [LimitChangeInput!] name: String newVenue: CreateVenueInput paymentServiceProviderAccountId: ID startDate: DateTime @deprecated(reason : "Use startsAt instead") startsAt: DateTime userAccessPermissionChanges: [UserAccessPermissionChangeInput!] userDetailFieldChanges: [UserDetailFieldChangeInput!] venueId: ID } input UpdateEventTemplateInput { archived: Boolean eventUserAccessPermissionChanges: [UserAccessPermissionChangeInput!] id: ID! limitChanges: [LimitChangeInput!] name: String userDetailFieldChanges: [UserDetailFieldChangeInput!] } input UpdateGuestEntryAddedAutoMessageTriggerInput { "Whether the trigger applies only to guests added through an invitation (`true`) or only to guests added otherwise (`false`); `null` applies to both. A signup with any ticket through an invitation counts as added through an invitation." byInvitation: Boolean "The guest lists the trigger applies to; `null` means all of the event's guest lists, an empty list none." guestListIds: [ID!] id: ID! } input UpdateGuestEntryUserDetailsInput { "Must include at least one event in `eventIds`." filter: GuestEntryFilterInput! name: String! "The value to set; `null` removes the user detail." value: String } input UpdateGuestListInput { "A hex code with a leading `#`, such as `#e15241`. Must match the guest list template's color when there is one; also changes the linked pass type's color." color: String id: ID! limitChanges: [LimitChangeInput!] name: String "The ticket price, which must be in the event's currency; `null` removes it." price: PriceInput showGuestEntryBarcodes: Boolean showTicketBarcodes: Boolean "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String taxRuleIds: [ID!] userAccessPermissionChanges: [UserAccessPermissionChangeInput!] } input UpdateGuestListTemplateInput { "A hex code with a leading `#`, such as `#e15241`. Also applied to the pass type and to the guest lists created from the template." color: String guestListUserAccessPermissionChanges: [UserAccessPermissionChangeInput!] id: ID! limitChanges: [LimitChangeInput!] name: String "A key that orders guest lists in Attendium's apps: ascending, comparing digit runs as numbers, then by name. Guest lists without a key come first, ordered by name." sortingKey: String } input UpdateGuestListTemplatesInput { guestListTemplates: [UpdateGuestListTemplateInput!]! } input UpdateGuestListsInput { guestLists: [UpdateGuestListInput!]! } input UpdateInvitationInput @oneOf { openInvitation: UpdateOpenInvitationInput personalInvitation: UpdatePersonalInvitationInput } input UpdateInvitationTemplateInput { "Markdown shown to guests after they sign up or buy, on their order page and in the confirmation email; supports `{{guest.name}}`, `{{guest.firstName}}`, `{{guest.lastName}}` and `{{event.name}}`." acceptedMessage: String "Markdown shown on the invitation page and in invitation emails; `{{event.name}}` is replaced by the event name." additionalInformationMessage: String archived: Boolean confirmationMessagesEnabled: Boolean "Markdown intended for guests who decline a personal invitation; not currently shown to guests." declinedMessage: String emailReplyTo: EmailAddressInput guestListConfigurations: [InvitationGuestListConfigurationInput!] id: ID! name: String "Markdown shown on the invitation page when no offered guest list has tickets left; `{{event.name}}` is replaced by the event name." notEnoughTicketsAvailableMessage: String replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") "The heading of the invitation page and the sender name of invitation and confirmation emails; `null` means the event name." title: String userAccessPermissionChanges: [UserAccessPermissionChangeInput!] userDetailFieldChanges: [UserDetailFieldChangeInput!] } input UpdateMultipleChoiceUserDetailFieldInput { deleted: Boolean name: String! options: [CreateUserDetailFieldOptionInput!] required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdateOpenInvitationInput { acceptedMessage: String additionalInformationMessage: String confirmationMessagesEnabled: Boolean declinedMessage: String emailReplyTo: EmailAddressInput "Replaces all guest list configurations; must not be empty." guestListConfigurations: [InvitationGuestListConfigurationInput!] id: ID! invitationTemplateId: ID lastShareDate: DateTime @deprecated(reason : "Use lastSharedAt instead") lastSharedAt: DateTime name: String notEnoughTicketsAvailableMessage: String "When guests can no longer get tickets through the invitation; `null` removes the deadline." registrationDeadline: DateTime replyToEmailAddress: String @deprecated(reason : "Use emailReplyTo instead") title: String userDetailFieldChanges: [UserDetailFieldChangeInput!] userDetails: [UserDetailInput!] } input UpdateParagraphUserDetailFieldInput { deleted: Boolean name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdatePassTypeInput { backgroundColor: String "The primary purpose of the pass; `null` means uncategorized." category: PassCategory color: String description: String googleLogoBackgroundColor: String "The name of the `multipart/form-data` request part holding the new image; `null` removes the image. Requests naming a part must be sent as `multipart/form-data`." heroImage: String id: ID! issuerName: String "The name of the `multipart/form-data` request part holding the new image; `null` removes the image. Requests naming a part must be sent as `multipart/form-data`." logo: String name: String "The name of the `multipart/form-data` request part holding the new image; `null` removes the image. Requests naming a part must be sent as `multipart/form-data`." narrowLogo: String sendAutomatically: Boolean supportEmailAddress: String textColor: String title: String userAccessPermissionChanges: [UserAccessPermissionChangeInput!] userDetailFieldChanges: [UserDetailFieldChangeInput!] } input UpdatePassUserDetailsInput { "Must include at least one pass type in `passTypeIds`." filter: PassFilterInput! name: String! "The value to set; `null` removes the user detail." value: String } input UpdatePermanentGuestListInput @deprecated(reason : "Use UpdatePassTypeInput instead") { color: String googlePassLogoBackgroundColor: String guestSupportEmailAddress: String id: ID! name: String narrowPassLogo: String passBackgroundColor: String passDescription: String passHeroImage: String passIssuerName: String passLogo: String passName: String passTextColor: String passesEnabled: Boolean userAccessPermissionChanges: [UserAccessPermissionChangeInput!] userDetailFieldChanges: [UserDetailFieldChangeInput!] } input UpdatePersonalInvitationInput { id: ID! invitationTemplateId: ID inviteeId: ID lastShareDate: DateTime @deprecated(reason : "Use lastSharedAt instead") lastSharedAt: DateTime maxTicketCount: Int name: String newInvitee: CreateUserInput "When guests can no longer get tickets through the invitation; `null` removes the deadline." registrationDeadline: DateTime "The invitee's response; only `null` is accepted, which clears a decline so the invitee can respond again." response: PersonalInvitationResponse title: String userDetails: [UserDetailInput!] } input UpdatePushBroadcastInput { body: String id: ID! title: String } input UpdateTaxRuleInput @oneOf { vatRule: UpdateVatRuleInput } input UpdateTaxRulesInput { taxRules: [UpdateTaxRuleInput!]! } input UpdateTextUserDetailFieldInput { deleted: Boolean name: String! required: Boolean "A key that orders user detail fields in Attendium's apps: ascending, comparing digit runs as numbers, then by name." sortingKey: String } input UpdateTicketInput { id: ID! useDate: DateTime @deprecated(reason : "Use usedAt instead") "Whether the ticket is checked in: `true` checks it in; `false` is ignored, since a used ticket can't be unused." used: Boolean "The check-in time when `used` is `true`; defaults to now. Ignored for a ticket that is already used." usedAt: DateTime } input UpdateUserInput { emailAddress: String firstName: String id: ID! jobTitle: String lastName: String "The new password. Changing it revokes all of the user's OAuth2 authorizations." password: String shared: Boolean subscribedToNewsletters: Boolean username: String } input UpdateVariableAutoMessageAttachment { id: ID! variableName: String } input UpdateVariableEmailAutoMessageRecipientInput { id: ID! variableName: String } input UpdateVatRuleInput { id: ID! "The tax rate as a fraction of at most 1, such as `0.25` for 25%. Truncated to four decimal places." rate: Decimal } input UpdateVenueInput { address: String city: String "A two-letter ISO 3166-1 country code, case-insensitive." countryCode: String googlePlaceId: String id: ID! latitude: Float longitude: Float name: String ownedTimeZone: TimeZone @deprecated(reason : "Use timeZone instead") postalCode: String timeZone: TimeZone userAccessPermissionChanges: [UserAccessPermissionChangeInput!] } input UserAccessPermissionChangeInput { permission: Permission! "The user whose permission changes; required." principalId: ID userId: ID @deprecated(reason : "Use principalId instead") "Whether to grant the permission: `true` grants it and `null` removes the grant; `false` is rejected." value: Boolean } input UserDetailFieldChangeInput @oneOf { checkboxesUserDetailField: UpdateCheckboxesUserDetailFieldInput dropdownUserDetailField: UpdateDropdownUserDetailFieldInput emailAddressUserDetailField: UpdateEmailAddressUserDetailFieldInput multipleChoiceUserDetailField: UpdateMultipleChoiceUserDetailFieldInput paragraphUserDetailField: UpdateParagraphUserDetailFieldInput textUserDetailField: UpdateTextUserDetailFieldInput } input UserDetailInput { name: String! value: String } input VenueFilterInput { "Only venues on which the current user holds any of these permissions, or one implying it." permissions: [Permission!] }