Changelog
The GraphQL schema changelog is a list of recent and upcoming changes to our GraphQL API schema. It includes backwards-compatible changes, schema previews, and upcoming breaking changes.
Breaking changes include changes that will break existing queries or could affect the runtime behavior of clients. For a list of breaking changes and when they will occur, see our breaking changes labels.
Changes for 2024-10-16
The phone numbers should be specified according to the E.164 number formatting (http://en.wikipedia.org/wiki/E.164) recommendation and should be prefixed with a +. For example, to verify the US phone number 415 555 0101, the phone number should be specified as +14155550101. The + is the required prefix and the US country code 1 prepended to the local subscriber number.
Reminder deprecated fields 2024-10-06
Old deprecated Fields
The following fields have been deprecated since few year/months and should be removed from your current GraphQL queries:
tags
(Event Person): Replaced with a custom solution using the fields attribute.secondJobTitle
(Event Person): Use the main jobTitle field or create a custom field if necessary.engagementScore
(Event Person): Updated to withEvent.engagementScore to provide event-specific data.attendeeOnPlannings
(Event Person): Updated to withEvent.attendeeOnPlannings.attendees
(Plannings): Updated to withEvent.attendees.booth
(Exhibitor): Updated to withEvent.booth.group
(Group): Updated to withEvent.group.advertisements
(Exhibitor): Updated to withEvent.advertisements.analytics
(Event): Deprecated and replaced by the Analytics Export API.imageUrl
(AdvertisementRedirectUrl & AdvertisementExhibitor): Replaced with webImageUrl.
Recommendations
Switch to Webhooks: Replace frequent lookup queries with webhooks for eventPerson, exhibitor, and plannings data to optimize performance and reduce API usage.
Changes for 2024-09-15
Limitations have been updated, GraphQL APIs now has a cost and a query based limit, effective November. More info on the Limitations page.
Changes for 2024-07-01
Several fields in our Analytics API available through the Content API are being deprecated and will be removed by the end of July. To ensure continued access to the required information, please use the Content API with the specific IDs mentioned below.
Analytics_Users
|- eventPerson @deprecated(reason: "Use Content API with eventPersonId to find the record.")
Analytics_SponsorShowArray
|- sponsor @deprecated(reason: "Use Content API with sponsorId to find the record.")
Analytics_Plannings
|- planning @deprecated(reason: "Use Content API with planningId to find the record.")
Analytics_Exhibitors
|- exhibitor @deprecated(reason: "Use Content API with exhibitorId to find the record.")
Analytics_EventViewShowArray
|- eventView @deprecated(reason: "Use Content API with eventViewId to find the record.")
Analytics_DocumentOpenArray
|- document @deprecated(reason: "Use Content API with documentId to find the record.")
Please update your integrations to fetch the necessary information using the Content API by the end of July. This change will enhance the efficiency and accuracy of data retrieval.
Changes for 2024-04-22
The eventViews
query will be discontinued on July 1, 2024, to improve performance and consistency.
You can now access the views via the listEventViews
field in the Event
type.
query EventViews($eventId: ID!) {
event(id: $eventId) {
id
listEventViews {
nodes {
__typename
... on EventViewInterface {
id
name
}
}
}
}
}
Changes for 2024-02-13
The notifications
query was removed on 18 July 2023 to enhance the performance and consistency of the Push Notification module. It has since been replaced by a new field, pushNotifications
, in the Event
type.
Example can be found here
Changes for 2024-01-10
On the GraphQL mutation createProduct
, we added an argument translations
to add the ability to translate product name in any language. link to example
Changes for 2023-10-06
On the GraphQL type Speaker
, we added a link to the CommunityProfile
and EventProfile
of the speaker.
speakers {
communityProfile {
id
...
}
withEvent(eventId: ID!) {
eventProfile {
id
...
}
}
}
Changes for 2023-10-05
Registration data is now available in People queries and mutations. The eventPerson query, the eventPeople query, and the importEventPeople mutation have a new node for registration.
Using the queries, you can retrieve details about each person that is registered as well as details regarding their ticket. Additionaly, you can filter the eventPerson
by registeredAt
and registrationStatus
(Registered
or Canceled
).
When creating or updating a person using the importEventPeople
mutation the registration status and ticket may be set. Tickets that have reached capacity will not be able to be set, but tickets that are before or after their valid dates will be allowed via the API. Setting the registration status also has limitations.
- If there is no status it may be set to
REGISTERED
as long as a ticket is also provided. - If the status is already
REGISTERED
it may be changed toCANCELED
, but may not be removed (set to blank). - If the status is already
CANCELED
it may be changed toREGISTERED
as long as the assigned ticket is not at capacity.
Variables
{
"eventId": "RXZlbnRfMQ==",
"filters": {
"confirmationCode": ["regCode", "regCode2"],
"registeredAt": "2023-08-24 12:30:00"
}
}
Query
query ListEventPeople($eventId: ID!, $filters: [ListEventPeopleFilter!]) {
eventPeople(eventId: $eventId, filters: $filters) {
__typename
nodes {
firstName
registration {
ticketType {
id
name
quantity
ticketsSold
priceCentsFormated
}
registeredAt
confirmationCode
}
}
}
}
Changes for 2023-07-26
Limitations of the GraphQL Content API changed, we refined cost based usage and added call based usage.
More info on the Limitations page.
Changes for 2023-07-25
Introduce a new feature: the ability to filter meetings based on their last updated date.
Variables
{
"eventId": "RXZlbnDY1Nc4",
"filters": {
"status": ["PAST", "EXPIRED"],
"lastUpdatedSince": "2023-07-24 10:10:11"
}
}
Query
query Meetings(
$eventId: String!
$filters: [MeetingFilterInput!]
$page: Int = 1
$pageSize: Int = 10
$search: String
$sort: [MeetingSortInput!]
) {
meetings(
eventId: $eventId
filters: $filters
page: $page
pageSize: $pageSize
search: $search
sort: $sort
) {
nodes {
id
status
slot {
id
}
location {
id
name
}
participants {
id
}
}
pageInfo {
currentPage
lastPage
totalItems
}
}
}
Changes for 2023-07-20
- The importEventPeople & updateEventPerson mutations in the API now enforce non-empty values for the
firstName
andlastName
fields, rejecting requests with empty values for these fields.FIELD_EMPTY
is reported in case empty values is provided
In the API, both the first and last names now undergo a trim operation, which means any input containing only empty spaces will be treated as empty.
Changes for 2023-06-23
A new boolean parameter force
have been introduced on importEventPeople. When set to true, this boolean will bypass the security checks of type CLIENT_ID_CONFLICT
.
When the import is forced, it will allow:
- Switching
User
fromCommunity Profile
; anEmail
is associated to aUser
, aUser
to aCommunity Profile
andClient ID
to aCommunity Profile
. By default, we ensure that the pair (Email
,Client ID
) matches. We check that theUser
associated to theEmail
matches theUser
of theCommunity Profile
retrieved by theClient ID
. When the import is “forced”, we bypass this validation check which allows to switch anyUser
from theCommunity Profile
retrieved by theClient ID
. - Using more than one
Client ID
perCommunity Profile
; by default, we ensure that the sameClient ID
is used when referring to oneUser
’sCommunity Profile
. When the import is “forced”, we allow the usage of severalClient ID
s perCommunity Profile
. When theClient ID
does not exist we add it. Note allClient ID
should be unique inside the community.
When forcing import ?
- Your Swapcard’s community is new, and no event already took place.
- [OR] The people you are importing are new to Swapcard (ie. they do not already have an account).
- [OR] You do not want to ensure people keeping their data (contacts, bookmarks, meetings, profile data, …) from previous events.
- [AND] You do not have multiple events happening on the same time within your community. When NOT forcing import ?
- You have several events running at the same time within your community.
- [OR] Some users already have an account within your community and you want to ensure that they keep their data (contacts, bookmarks, meetings, profile data, …) from previous events.
Changes for 2022-11-04
New error messages have been added on several mutations including (importEventPeople & upsertEventExhibitors), aiming to relace generic error message An internal error occured, please try again or report this error with this code: 35b5b68b-ce4f-4f1e-b60a-11ab3584d159
by the following.
BAD_INPUT
: The field definition ID is not valid.BAD_INPUT
: This field definition requires the field "choices".BAD_INPUT
: This field definition requires the field "number".BAD_INPUT
: This field definition requires the field "date".BAD_INPUT
: This field definition requires the field "text".BAD_INPUT
: This field definition requires the field "texts".BAD_INPUT
: This field definition is not valid in this context. Error returned in case the field definition is for another entity type.
Changes for 2022-11-03
P99 latency has been improved on upsertEventExhibitors mutation passing from ~18s to less than 1s execution time on multiple entities payload. The mutation doesn't lock the event anymore and can be used in a concurrency manner. Atomicity in the operation is preserved.
Schema Changes for 2022-09-19
⚠️ Unique profile at Community level - Impact on clientId field for people
The clientId is the unique identifier for the profile coming from the customer side. A profile is now unique at Community level.
Consequently, a clientID should be unique for a whole community, on all events. When importing people into Swapcard, it is mandatory to provide a clientId that is unique in the community, acting as a unique identifier of a person.