Cvent Registration Attendees API
Event registrations and attendees
Event registrations and attendees
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cvent-registration-attendees-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.2
info:
title: Cvent Registration Attendees API
version: ea
description: 'Registration-surface slice of the official Cvent REST APIs OpenAPI, filtered to the ''Attendees'' tag(s).
Derived verbatim (operations, schemas, parameters and responses copied unchanged) from Cvent''s own published contract
at https://github.com/cvent/rest-sdks/blob/main/cvent-public-spec/openapi.yaml — the spec Cvent generates its official
TypeScript, Java and C# SDKs from.
Full platform description, authentication, pagination, filtering, rate-limit and versioning narrative lives in openapi/_original/cvent-rest-apis-openapi.yaml.'
contact:
name: Cvent Development Platform
url: https://developers.cvent.com/
servers:
- url: https://api-platform.cvent.com/ea
- url: https://api-platform-eur.cvent.com/ea
tags:
- name: Attendees
description: The Attendee entity primarily refers to the person throughout the lifecycle of an event including registration,
enrollment into sessions, and participation. Once contacts are added to events, an Attendee entity is created. This API
allows you to read attendee data and add new attendees to your Cvent events.
paths:
/attendance-durations:
get:
summary: List Attendance Duration
operationId: listDurations
description: Gets a paginated list of durations attendees were engaged (in person or virtually) in a session, appointment
or watching a video.
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- event/attendance-durations:read
- OAuth2.authorizationCode:
- event/attendance-durations:read
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit1'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/sort5'
- name: filter
in: query
required: false
description: 'Use filter query parameters to limit results
to data that matches your criteria. See
[Filters](https://developers.cvent.com/docs/rest-api/reference/filters) for details.
Supported fields and operators are listed below:
| Field | Operators |
|-------------|------------------------------------|
| id | `eq`, `ne` |
| event.id | `eq`, `ne`, `in` |
| session.id | `eq`, `ne`, `in` |
| attendee.id | `eq`, `ne`, `in` |
| type | `contains`, `eq`, `ne`, `in` |
| deleted | `eq`, `ne` |
| firstSeen | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| lastSeen | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| duration | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| created | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
The following logical operators are supported for combining filters:
* and
* or
'
schema:
type: string
example: firstSeen gt '2020-02-07T12:00:00.000Z' and session.id = '0e2f583e-62ae-40d8-9b5c-b8e67a6ba1ab'
responses:
'200':
description: Successfully retrieved a Paginated list of Durations.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/duration-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/attendees:
post:
tags:
- Attendees
operationId: createAttendee
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
summary: Add Attendees
description: Adds given contacts to an event as attendees, either inviting them or registering them directly.
requestBody:
description: 'This endpoint supports both the invite and the ability to push registered attendees into Cvent.
There are some slight differences in how you use each path.
**Invite**
Fields supported for invite:
* event.id *(required)*
* contact.id *(required)*
* invitationList.id
**Note:** Up to 100 attendees can be invited per call. Sending a *status* of `No Response` will invite the attendee.
**Register**
* All fields are supported for register.
* admissionItem.id *(required)*
**Note:** When sending registration, one attendee per call is supported. Sending a status of `Accepted` will register
the attendee.
'
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-add-bulk'
required: true
responses:
'207':
description: Attendee(s) were successfully added to the event.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-add-bulk-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
get:
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
summary: List Attendees
description: Gets a paginated list of attendees in your account.
operationId: listAttendees
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/expand'
- $ref: '#/components/parameters/sort7'
- $ref: '#/components/parameters/includeDeletedGuests'
- name: filter
in: query
required: false
description: 'Use filter query parameters to limit results
to data that matches your criteria. See
[Filters](https://developers.cvent.com/docs/rest-api/reference/filters) for details.
Supported fields and operators are listed below:
| Field | Operators | Notes |
|------------------|-------------------------------------|------------------------------------------|
| event.id | `eq`, `ne` | |
| id | `eq`, `ne` | |
| confirmationNumber | `eq`, `ne` | |
| checkedIn | `eq`, `ne` | |
| checkIn | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| checkOut | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| registrationPath.id | `eq`, `ne` | |
| invitationList.id | `eq`, `ne` | |
| registrationType.id | `eq`, `ne`, `is null`, `is not null`, `is empty`, `is not empty` | |
| referenceId | `eq`, `ne` | |
| externalReference.type | `eq` | |
| externalReference.id | `eq` | |
| externalReference.referenceId | `eq` | |
| note | `eq`, `ne` | |
| guest | `eq`, `ne` | |
| group.leader | `eq`, `ne` | |
| group.id | `eq`, `ne` | |
| unsubscribed | `eq`, `ne` | Read-only. To update an attendee''s subscription status,
use [PUT /attendees/{id}/email-subscriptions](#operation/updateAttendeeSubscriptionStatus) |
| registeredAt | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| registrationLastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| invitedBy | `eq`, `ne` | |
| responseMethod | `eq`, `ne` | |
| status | `eq`, `ne` | |
| lastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | Will be updated when any field in the response has changed.
Used by the ''before'' and ''after'' filters. |
| created | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| contact.id | `eq`, `ne` | |
| visibility | `eq`, `ne` | |
| contact.title | `eq`, `ne`, `sw` | |
| contact.company | `eq`, `ne`, `sw` | |
| contact.firstName | `eq`, `ne`, `sw` | |
| contact.lastName | `eq`, `ne`, `sw` | |
| answers.question.{question id} | `eq`, `ne` | |
| contact.email | `eq`, `ne`, `sw` | |
| attendeeLastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | Will be updated only when some field other than contact.*
has changed. Not used by the ''before'' and ''after'' filters. |
| appointmentGroup.id | `eq`, `ne` | |
| contact.deleted | `eq`, `ne` | |
| primaryId | `eq`, `ne` | |
| deletedGuest | `eq`, `ne` | Filter returns guests marked as deleted. This filter
works only when the query parameter `includeDeletedGuests` is `true`. |
'
schema:
type: string
example: contact.id eq '04ca6ae2-0dc3-487b-953e-86d6abbdf7d3' or checkedIn eq 'true'
tags:
- Attendees
responses:
'200':
description: Successfully retrieved a paginated list of attendees.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/attendees/filter:
post:
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
summary: List Attendees
description: 'Gets a paginated list of attendees by sending a filter in the body of the request. This method will return
the same data as [GET List Attendees](#operation/listAttendees) but allows for longer filters.
'
operationId: listAttendeesPostFilter
requestBody:
description: 'The request body accepts filters to refine the data returned. Refer to available filter details in
[GET List Attendees](#operation/listAttendees).
'
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/filter'
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/expand'
- $ref: '#/components/parameters/sort7'
- $ref: '#/components/parameters/includeDeletedGuests'
tags:
- Attendees
responses:
'200':
description: Successfully retrieved a paginated list of attendees.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/attendees/{id}:
get:
summary: Get Attendee
description: Gets a single attendee based on their ID.
operationId: getAttendeeById
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
tags:
- Attendees
parameters:
- $ref: '#/components/parameters/expand'
responses:
'200':
description: Successfully retrieved an attendee object.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
put:
summary: Update Attendee
description: Updates a single attendee based on their ID.
operationId: updateAttendee
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
tags:
- Attendees
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-update'
required: true
responses:
'200':
description: Successfully updated the attendee.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
parameters:
- $ref: '#/components/parameters/attendeeId2'
/attendees/{id}/email-subscriptions:
put:
summary: Update Email Subscription
description: Updates an attendee's email subscription status for a specific event.
operationId: updateAttendeeSubscriptionStatus
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
tags:
- Attendees
parameters:
- $ref: '#/components/parameters/attendeeId2'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-subscription-request'
responses:
'200':
description: Successfully updated the attendee's subscription status.
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-subscription-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/attendees/{id}/internal-information-questions:
put:
operationId: updateInternalInfoAnswers
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
summary: Update Internal Information
description: Update internal information answers for an attendee. Use either question code or id to identify which question's
answers are being updated.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-internal-info'
tags:
- Attendees
responses:
'200':
description: Successfully updated attendee internal information.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-internal-info'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
parameters:
- $ref: '#/components/parameters/attendeeId2'
/events/{id}/badges:
post:
summary: Create Badge
description: Create a badge for an attendee associated with an event.
operationId: postBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:write
- OAuth2.authorizationCode:
- exhibitor/badges:write
parameters:
- $ref: '#/components/parameters/id6'
requestBody:
description: Badge details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
responses:
'200':
description: Successfully created a badge.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
get:
summary: Get Badge
description: Retrieves a list of third-party badge associations for attendees within the event.
operationId: getBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:read
- OAuth2.authorizationCode:
- exhibitor/badges:read
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- name: filter
in: query
required: false
description: 'A filter query string narrows search results and supports the combination of logical and comparison
operators.
The filter adheres to the pattern filter=''field'' comparisonType ''value''.
These are the comparison types that can be used in filter expressions:
* equal: eq
The following fields are filterable:
* id (eq)
* attendee.id (eq)
'
schema:
type: string
example: id eq '{string}' and attendee.id eq '{UUID}'
responses:
'200':
description: Successfully get badges.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/events/{id}/badges/filter:
post:
summary: Get Badges
description: Gets a paginated list of Badges by sending a filter in the body of the request. This method will return
the same data as the getBadge but allows for longer filters.
operationId: getBadgesPostFilters
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:read
- OAuth2.authorizationCode:
- exhibitor/badges:read
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
requestBody:
description: See the filter query parameter of <a href="#operation/getBadge">Get Badges</a> for full filtering information
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/filter'
example:
filter: id eq '04ca6ae2-0dc3-487b-953e-86d6abbdf7d3' AND attendee.id eq 'edf40757-3bc3-4a66-8180-93bff15b890b'
responses:
'200':
description: Successfully get badges.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/events/{id}/badges/{badgeId}:
put:
summary: Update Badge
description: Update a badge for an attendee associated with an event.
operationId: updateBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:write
- OAuth2.authorizationCode:
- exhibitor/badges:write
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/badgeId'
requestBody:
description: Badge details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
responses:
'200':
description: Successfully updated the badge.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
components:
parameters:
after:
name: after
required: false
description: Used to query records that have been added or updated after this time point. Default to the beginning of
time of the data store.
in: query
schema:
type: string
format: date-time
example: '2017-01-02T02:00:00Z'
attendeeId2:
in: path
name: id
description: The unique ID of an attendee.
required: true
schema:
$ref: '#/components/schemas/UUIDProperty'
badgeId:
in: path
name: badgeId
description: ID of a badge.
required: true
schema:
type: string
example: abc123
before:
name: before
required: false
in: query
description: Used to query records that have been added or updated before this time point.
schema:
type: string
format: date-time
example: '2017-01-02T02:00:00Z'
expand:
name: expand
in: query
required: false
description: "This endpoint allows you to request additional information as an expanded response using the expand query\
\ parameter.\nThe expanded entity is retrieved and displayed inline for each specified expand value.\n\nAn object\
\ contains the ID of a related object in its response properties. You can expand these objects,\nalong with others,\
\ in line using the expand query parameter.\n\nYou can expand multiple objects at the same time by identifying multiple\
\ items in the expand array.\n\nThe respective scopes for each expansion are required.\n\nThe following fields are\
\ expandable:\n * answers.question\n * **Scope**: event/events:read\n * **Reference**: <a href=\"#operation/getEventQuestions\"\
>List Event Questions</a>\n * registrationType\n * **Scope**: event/registration-types:read\n * **Reference**:\
\ <a href=\"#operation/listRegistrationTypes\">List Registration Types</a>\n"
example:
- answers.question
- registrationType
schema:
type: array
items:
type: string
enum:
- answers.question
- registrationType
id6:
in: path
name: id
description: ID of an event.
required: true
schema:
type: string
format: uuid
example: 3db28cfc-db22-11eb-8d19-0242ac130003
includeDeletedGuests:
in: query
name: includeDeletedGuests
required: false
description: 'True indicates the request should include deleted guests in the response. By default, deleted guests are
excluded.
The `deletedGuest` filter has no effect unless this parameter is `true`.
'
schema:
type: boolean
default: false
limit:
name: limit
in: query
description: The maximum number of records to return per page.
style: form
explode: true
schema:
maximum: 200
minimum: 1
type: integer
default: 100
example: 100
limit1:
name: limit
in: query
style: form
explode: true
description: The maximum number of attendance duration records returned per page.
schema:
maximum: 5000
minimum: 1
type: integer
default: 1000
sort5:
name: sort
required: false
in: query
style: form
explode: false
description: "The sort order passed as a parameter, used to control the order of the\nsearch results as a priority ordered\
\ list of sorts\n\nThere are two orders:\n * ascending: ASC\n * descending: DESC\n\nThe following fields are sortable:\n\
\ * event\n * session\n * attendee\n * type\n * firstSeen\n * duration\n * lastModified - default\n"
schema:
type: string
example: start:DESC,title:ASC
sort7:
in: query
name: sort
required: false
description: "The `sort` query parameter sorts items in the list of results and organizes them according to your preference.\n\
There are two orders:\n * ascending: ASC\n * descending: DESC\n\nThe following fields are sortable:\n * contact.firstName\n\
\ * contact.lastName\n * contact.title\n * contact.company\n * registeredAt\n * checkIn\n"
schema:
example: contact.company:DESC,contact.title:ASC
type: string
token:
name: token
in: query
description: 'The continuation token returned from a previous class. This must be a valid UUID v4 if provided.
This will override any other pageable parameters provided.
'
style: form
explode: true
schema:
type: string
example: 0e28af57-511f-47ab-ae46-46cd1ca51a1a
responses:
BadRequest1:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 400
message: Bad Request
Forbidden1:
description: You do not have access to the resource
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 403
message: Access Forbidden
NotFound1:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 404
message: Not found
TooManyRequests1:
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 429
message: Limit Exceeded
Unauthorized1:
description: Bad or expired token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 401
message: Unauthorized
schemas:
Address4:
title: Address
description: Address detail
# --- truncated at 32 KB (131 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent-registration/refs/heads/main/openapi/cvent-registration-attendees-api-openapi.yml