Sessions
Sessions can be talks, workshops, panels, roundtables, live stream, on-demand video, etc.
Object
Create a session
This mutation can be used to create Session in an Event in Swapcard.
Arguments
eventId- The Id of the Event on which the Sessions needs to be created/updated.clientId- This is the unique id on the customer end for this specific session.titleTranslations- The value is the name of the Session in the provided language.descriptionTranslations- The description of the Session in the provided language.beginsAt- Start date and time for the Session.endsAt- End date and time for the Session.
⚠️ Note: For creating sessions with custom fields, we use fields.
Query
mutation importEventPlannings($eventId: ID!, $plannings: [ImportEventPlanningInput!]!) {
importEventPlannings(eventId: $eventId, plannings: $plannings) {
results {
inputId
planning {
id
title
description
}
}
errors {
inputId
message
errorCode
}
}
}
Variables
{
"eventId":"RXZlbnRfMTcyMjY0",
"plannings":[
{
"inputId":"0",
"create":{
"clientId":null,
"titleTranslations":[
{
"value":"in person",
"language":"en_US"
},
{
"value":"salut",
"language":"fr_FR"
}
],
"descriptionTranslations":[
{
"value":"<p>eng</p>",
"language":"en_US"
},
{
"value":"<p>fr</p>",
"language":"fr_FR"
}
],
"isRatable":false,
"bannerUrl":null,
"beginsAt":"2027-07-01T06:00:00.000Z",
"endsAt":"2027-07-01T07:00:00.000Z",
"canRegister":{
"enabled":true,
"eventGroupsCanRegister":[
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDA="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDE="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDI="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDM="
}
]
},
"communityProfileCanRegister":false,
"hideAttendees":false,
"isOverlappingAllowed":true,
"isPrivate":false,
"maxSeats":50,
"hashtag":"#event-2027",
"liveStream":null,
"preRecorded":null,
"onDemand":null,
"roundtable":null,
"accessControlMode":"TRACKING",
"fields":[
{
"definitionId":"RmllbGREZWZpbml0aW9uXzI4NDU5NQ==",
"value":"25",
"locale":"en_US",
"selectOptionKey":null
},
{
"definitionId":"RmllbGREZWZpbml0aW9uXzI4NDU5Ng==",
"value":"long text",
"locale":"en_US",
"selectOptionKey":null
}
],
"exhibitors":[
"RXhoaWJpdG9yXzEwOTAyNQ==",
"RXhoaWJpdG9yXzExMDYxOA=="
]
}
},
{
"inputId":"1",
"create":{
"clientId":null,
"titleTranslations":[
{
"value":"roundtable",
"language":"en_US"
},
{
"value":"salut",
"language":"fr_FR"
}
],
"descriptionTranslations":[
{
"value":"<p>eng</p>",
"language":"en_US"
},
{
"value":"<p>fr</p>",
"language":"fr_FR"
}
],
"isRatable":false,
"bannerUrl":null,
"beginsAt":"2027-07-01T06:00:00.000Z",
"endsAt":"2027-07-01T07:00:00.000Z",
"canRegister":{
"enabled":true,
"eventGroupsCanRegister":[
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDA="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDE="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDI="
},
{
"enabled":true,
"eventGroupId":"RXZlbnRHcm91cF8yNzM1MDM="
}
]
},
"communityProfileCanRegister":false,
"hideAttendees":false,
"isOverlappingAllowed":true,
"isPrivate":false,
"maxSeats":50,
"hashtag":"#event-2027",
"liveStream":null,
"preRecorded":null,
"onDemand":null,
"roundtable":{
"starts":"2027-07-01 09:00:00",
"ends":"2027-07-01 10:00:00"
},
"accessControlMode":"TRACKING",
"exhibitors":[
"RXhoaWJpdG9yXzEwOTAyNQ=="
]
}
}
]
}
Create Session with different formats
This mutation can be used to create a Session in an Event in Swapcard with different formats. Formats are mostly used for adding video properties on session.
Arguments
eventId- The Id of the Event on which the Sessions need to be created/updated.clientId- This is the unique id on the customer end for this specific session.titleTranslations- The value is the name of the Session in the provided language.beginsAt- Start date and time for the Session.endsAt- End date and time for the Session.
Swapcard sessions can have 5 different formats
PHYSICAL(with no videos) - Create a simple session without liveStream, onDemand, preRecorded and roundTable. Adapted to in-person events.LIVE_STREAM- Link a supported Live Streaming provider to play the Webinar in real-time. It can be 3rd party tool or backstage, to difference between then the variableisBackstageshould be set by true or false.ON_DEMAND- Link or upload a video that will be available at any moment, session dates will be hidden.PRE_RECORDED- Link your pre-recorded video and it will be played at the scheduled time.ROUNDTABLE- Create a meeting room where your participants will be able to join.
Query
mutation ImportEventPlannings($eventId: ID!, $plannings: [ImportEventPlanningInput!]!) {
importEventPlannings(eventId: $eventId, plannings: $plannings) {
results {
inputId
planning {
id
title
description
bannerUrl
beginsAt
endsAt
onDemand {
isPublic
video {
__typename
... on YoutubeEmbeddedVideo {
...PlanningFormat_YoutubeVideoFragment
}
... on VimeoEmbeddedVideo {
...PlanningFormat_VimeoVideoFragment
}
... on IframeEmbeddedVideo {
...PlanningFormat_IframeVideoFragment
}
... on UploadedFileEmbeddedVideo {
...PlanningFormat_UploadedFileVideoFragment
}
}
}
liveStream {
availableAt
availableUntil
isPublic
isRecorded
stream {
__typename
... on YoutubeEmbeddedVideo {
...PlanningFormat_YoutubeVideoFragment
}
... on VimeoEmbeddedVideo {
...PlanningFormat_VimeoVideoFragment
}
... on IframeEmbeddedVideo {
...PlanningFormat_IframeVideoFragment
}
...Backstage_RTMPLiveStreamVideoFragment
}
}
preRecorded {
isPublic
}
fields {
...FieldValueFragment
}
roundtable {
starts
ends
}
}
}
errors {
inputId
message
errorCode
}
}
}
fragment PlanningFormat_YoutubeVideoFragment on YoutubeEmbeddedVideo {
videoId
}
fragment PlanningFormat_VimeoVideoFragment on VimeoEmbeddedVideo {
videoId
}
fragment PlanningFormat_IframeVideoFragment on IframeEmbeddedVideo {
iframeSource
}
fragment PlanningFormat_UploadedFileVideoFragment on UploadedFileEmbeddedVideo {
uploadedVideoId
isSimulatedLive
}
fragment Backstage_RTMPLiveStreamVideoFragment on RTMPLiveStreamVideo {
activeSource
backstage {
moderatorCommunityProfile {
id
firstName
lastName
photoUrl
jobTitle
organization
}
}
}
Variables
{
"eventId": "RXZlbnRfNTUxMDI0",
"plannings": [
{
"inputId": "1",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "3rd party",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "<p>description</p>",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": 50,
"hashtag": "2025-09-15T14:42:22.665Z",
"liveStream": {
"availableAt": "2027-07-01T09:00:00.000Z",
"availableUntil": null,
"isPublic": false,
"stream": {
"iframe": null,
"vimeo": null,
"youtube": null,
"rtmp": {
},
},
"isBackstage": false,
},
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING"
}
},
{
"inputId": "2",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "embedded",
"language": "en_US",
},
{
"value": "embedded",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "<p>description</p>",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": 101,
"hashtag": "2025-09-15T14:42:22.665Z",
"liveStream": {
"availableAt": "2027-07-01T09:00:00.000Z",
"availableUntil": null,
"isPublic": false,
"stream": {
"iframe": null,
"vimeo": null,
"youtube": {
"videoId": "https://www.youtube.com/",
},
"rtmp": null,
},
},
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING",
}
},
{
"inputId": "4",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "Backstage",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": null,
"hashtag": "2025-09-15T14:42:22.668Z",
"liveStream": {
"availableAt": "2027-07-01T09:00:00.000Z",
"availableUntil": null,
"isPublic": false,
"stream": {
"iframe": null,
"vimeo": null,
"youtube": null,
"rtmp": {
},
},
"isBackstage": true,
},
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING"
}
},
{
"inputId": "5",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "Roundtable",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": true,
"bannerUrl": null,
"beginsAt": "2025-07-01T09:00:00.000Z",
"endsAt": "2025-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": null,
"hashtag": "2025-09-15T14:42:22.668Z",
"liveStream": null,
"preRecorded": null,
"onDemand": null,
"roundtable": {
"starts": "2025-07-01T09:00:00.000Z",
"ends": "2025-07-01T10:00:00.000Z",
"audioOnly": false,
"moderatedStage": false,
},
"accessControlMode": "TRACKING"
}
},
{
"inputId": "6",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "In person",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": null,
"hashtag": "2025-09-15T14:42:22.669Z",
"liveStream": null,
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING"
}
},
{
"inputId": "7",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "pre-recorded",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": null,
"hashtag": "2025-09-15T14:42:22.669Z",
"liveStream": null,
"preRecorded": {
"availableAt": "2027-07-01T09:00:00.000Z",
"availableUntil": null,
"isPublic": undefined,
"video": {
"iframe": null,
"vimeo": null,
"youtube": null,
"rtmp": null,
},
},
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING"
}
},
{
"inputId": "9",
"create": {
"clientId": "",
"titleTranslations": [
{
"value": "embedded-live",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"descriptionTranslations": [
{
"value": "",
"language": "en_US",
},
{
"value": "",
"language": "fr_FR",
},
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T09:00:00.000Z",
"endsAt": "2027-07-01T10:00:00.000Z",
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": null,
"hashtag": "2025-09-15T14:42:22.669Z",
"liveStream": {
"availableAt": "2027-07-01T09:00:00.000Z",
"availableUntil": null,
"isPublic": false,
"stream": {
"iframe": null,
"vimeo": {
"videoId": "https://vimeo.com",
},
"youtube": null,
"rtmp": null,
},
},
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING"
}
}
]
}
Create redirection on a Session
This mutation can be used to create a redirection on a Session in an Event in Swapcard.
Arguments
name- The name of the button to be displayed on the SessionplanningId- The ID of the Session on which the redirection needs ot be createdredirectUrl- This is the URL to which the button will redirect the user.
Query
mutation upsertPlanningRedirectUrlView($input: UpsertPlanningRedirectUrlViewInput!){
upsertPlanningRedirectUrlView(input: $input) {
planning {
id
titleTranslations {
value
language
}
beginsAt
endsAt
}
}
}
Variables
{ "input": {
"name":"Redirect Button",
"planningId": "UGxhbm5pbmdfODAxNzYz",
"redirectUrl": "https://www.test.redirect.com/",
"translations": {"language": "en_US", "name": "Redirect Button", "redirectUrl": "https://www.test.redirect.com/"},
"backgroundColor": "#EA204F",
"iconUrl": "https://cdn-api.swapcard.com/public/pictos/link.png"
}
}
Get the first hundred Sessions
This query can be used to fetch first hundred Sessions from the Event in Swapcard.
Arguments
communityId- The Id of the Community.eventIds- The Ids of Events that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.cursor- Handles the pagination.firstdefines how many records to fetch per page.- On the first request, you can omit
afteror set it tonull. - On subsequent requests, set
afterwith the value returned in the previous response.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzY2NjQ=",
"filter": {
"eventIds": [
"RXZlbnRfMTcxMzA5"
]
},
"cursor": {
"first": 100
}
}
Get the next hundred Sessions
This query can be used to fetch next hundred Sessions from the Event in Swapcard.
Arguments
communityId- The Id of the Community.eventIds- The Ids of Events that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.cursor- Handles the pagination.firstdefines how many records to fetch per page.- On the first request, you can omit
afteror set it tonull. - On subsequent requests, set
afterwith the value returned in the previous response.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzY2NjQ=",
"filter": {
"eventIds": [
"RXZlbnRfMTcxMzA5"sim
]
},
"cursor": {
"first": 100,
"after": "INSERT_CURSOR_ID_HERE"
}
}
Get Sessions by Ids
This query can be used to fetch Sessions by Ids from the Event in Swapcard.
Arguments
eventIds- The Ids of the Event on which the search for Sessions needs to be done.ids- The Ids of Sessions that need to be searched. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzY2NjQ=",
"filter": {
"eventIds": [
"RXZlbnRfMTcxMzA5"
],
"ids": [
"UGxhbm5pbmdfMTc1Njcz"
]
}
}
Get the Sessions filtered by event ids
This query can be used to fetch Sessions from the Community filtered by event ids in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.eventIds- The Ids of Events that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"eventIds": ["INSERT_EVENT_IDS_HERE"]
}
}
Get the Sessions filtered by client ids
This query can be used to fetch Sessions from the Community filtered by client ids in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.clientIds- The Ids of Clients that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"clientIds": ["INSERT_CLIENT_IDS_HERE"]
}
}
Get the Sessions filtered by speaker ids
This query can be used to fetch Sessions from the Community filtered by speaker ids in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.speakerIds- The Ids of Speakers that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"speakerIds": ["INSERT_SPEAKER_IDS_HERE"]
}
}
Get the Sessions filtered by place ids
This query can be used to fetch Sessions from the Community filtered by place ids in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.placeIds- The Ids of Places that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"placeIds": ["INSERT_PLACE_IDS_HERE"]
}
}
Get the Sessions filtered by planning ids
This query can be used to fetch Sessions from the Community filtered by planning ids in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.ids- The Ids of Plannings that need to be searched as type ofID. This is an array and can hold more than one value separated by commas.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"ids": ["INSERT_PLANNING_IDS_HERE"]
}
}
Get the Sessions sorted by field and order
This query can be used to fetch Sessions from the Community filtered sorted by field and order in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.field- Enum field for sorting the plannings, can be one of["BEGINS_AT","BOOKMARKED_SINCE","CREATED_AT","DESCRIPTION","ENDS_AT","PLACE,TITLE","TOTAL_ATTENDEES","TOTAL_CATEGORIES","TOTAL_DOCUMENTS","TOTAL_EXHIBITORS","TOTAL_SPEAKERS","TOTAL_SCAN_IN","TOTAL_SCAN_OUT","TYPE"].order- Order of the field, can be one of["ASC","DESC"]
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"sort": [
{
"field": "BEGINS_AT",
"order": "ASC"
},
{
"field": "CREATED_AT",
"order": "ASC"
}
]
}
Get the Sessions filtered by bookmark
This query can be used to fetch Sessions from the Community filtered by bookmark in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.isBookmarked- Flag indicating whether the planning is bookmarked or not, type of Boolean and can be true or false.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"isBookmarked": true
}
}
Get the Sessions filtered by planning format
This query can be used to fetch Sessions from the Community filtered by planning format in Swapcard.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.formats- Formats of the plannings, can be one of["ON_DEMAND","LIVE_STREAM","PRE_RECORDED","PHYSICAL","ROUNDTABLE"]
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"filter": {
"formats": [
"ON_DEMAND",
"LIVE_STREAM"
]
}
}
Get the Sessions by search
This query can be used to fetch Sessions from the Community by searching for session name using a string.
Arguments
communityId- The Id of the Community on which the search for Sessions needs to be done.search- Search string that searches the plannings title.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
events {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
id
title
}
}
format
clientIds
description
isPrivate
isRatable
exhibitors {
id
}
speakers {
id
}
attendees(page: 1, pageSize: 10) {
id
}
fields {
__typename
... on SelectField {
id
value
}
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzE=",
"search": "INSERT_PLANNING_TITLE_HERE"
}
Get the Sessions attendees
This query can be used to fetch attendees for a Session from the Event in Swapcard.
Arguments
eventIds- The Ids of the Event on which the search for Sessions needs to be done.ids- The ids of the Plannings.
Query
query Planningsv2(
$communityId: ID!
$search: String
$cursor: CursorPaginationInput
$filter: EventPlanningFilterInput
$sort: [PlanningSortType!]
) {
planningsV2(
communityId: $communityId
search: $search
filter: $filter
sort: $sort
cursor: $cursor
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
nodes {
...Planning
}
}
}
fragment Planning on Planning {
id
place
title
totalAttendees
type
attendees(page: 1, pageSize: 10) {
id
firstName
lastName
jobTitle
organization
}
}
Variables
{
"communityId": "Q29tbXVuaXR5XzY2NjQ=",
"filter": {
"eventIds": [
"RXZlbnRfMTcyMjY0"
],
"ids": [
"UGxhbm5pbmdfMTc2OTgw"
]
}
}
Update Session
This mutation can be used to update Session in an Event in Swapcard.
Arguments
eventId- The Id of the Event on which the Sessions needs to be created/updated.id- The Id of the planning that should be updated.titleTranslations- The value is the name of the Session in the provided language.beginsAt- Start date and time for the Session.endsAt- End date and time for the Session.
⚠️ Note: For updating sessions with custom fields, we use customFields.
Query
mutation ImportEventPlannings($eventId: ID!, $plannings: [ImportEventPlanningInput!]!) {
importEventPlannings(eventId: $eventId, plannings: $plannings) {
results {
inputId
planning {
id
title
description
bannerUrl
beginsAt
endsAt
onDemand {
isPublic
video {
__typename
... on YoutubeEmbeddedVideo {
...PlanningFormat_YoutubeVideoFragment
}
... on VimeoEmbeddedVideo {
...PlanningFormat_VimeoVideoFragment
}
... on IframeEmbeddedVideo {
...PlanningFormat_IframeVideoFragment
}
... on UploadedFileEmbeddedVideo {
...PlanningFormat_UploadedFileVideoFragment
}
}
}
liveStream {
availableAt
availableUntil
isPublic
isRecorded
stream {
__typename
... on YoutubeEmbeddedVideo {
...PlanningFormat_YoutubeVideoFragment
}
... on VimeoEmbeddedVideo {
...PlanningFormat_VimeoVideoFragment
}
... on IframeEmbeddedVideo {
...PlanningFormat_IframeVideoFragment
}
...Backstage_RTMPLiveStreamVideoFragment
}
}
preRecorded {
isPublic
}
roundtable {
starts
ends
}
}
}
errors {
inputId
message
errorCode
}
}
}
fragment PlanningFormat_YoutubeVideoFragment on YoutubeEmbeddedVideo {
videoId
}
fragment PlanningFormat_VimeoVideoFragment on VimeoEmbeddedVideo {
videoId
}
fragment PlanningFormat_IframeVideoFragment on IframeEmbeddedVideo {
iframeSource
}
fragment PlanningFormat_UploadedFileVideoFragment on UploadedFileEmbeddedVideo {
uploadedVideoId
isSimulatedLive
}
fragment Backstage_RTMPLiveStreamVideoFragment on RTMPLiveStreamVideo {
activeSource
backstage {
moderatorCommunityProfile {
id
firstName
lastName
photoUrl
jobTitle
organization
}
}
}
Variables
{
"eventId": "RXZlbnRfMTcyMjY0",
"plannings": {
"id": "UGxhbm5pbmdfMTc2OTgw",
"update": {
"clientId": null,
"titleTranslations": [
{
"value": "update planning",
"language": "en_US"
},
{
"value": "salut",
"language": "fr_FR"
}
],
"descriptionTranslations": [
{
"value": "<p>eng</p>",
"language": "en_US"
},
{
"value": "<p>fr</p>",
"language": "fr_FR"
}
],
"isRatable": false,
"bannerUrl": null,
"beginsAt": "2027-07-01T06:00:00.000Z",
"endsAt": "2027-07-01T07:00:00.000Z",
"canRegister": {
"enabled": true,
"eventGroupsCanRegister": [
{
"enabled": true,
"eventGroupId": "RXZlbnRHcm91cF8yNzM1MDA="
},
{
"enabled": true,
"eventGroupId": "RXZlbnRHcm91cF8yNzM1MDE="
},
{
"enabled": true,
"eventGroupId": "RXZlbnRHcm91cF8yNzM1MDI="
},
{
"enabled": true,
"eventGroupId": "RXZlbnRHcm91cF8yNzM1MDM="
}
]
},
"communityProfileCanRegister": false,
"hideAttendees": false,
"isOverlappingAllowed": true,
"isPrivate": false,
"maxSeats": 50,
"hashtag": "#event-2027",
"liveStream": {
"availableAt": "2027-07-01T06:00:00.000Z",
"availableUntil": null,
"isPublic": false,
"stream": {
"iframe": null,
"vimeo": null,
"youtube": null,
"rtmp": {}
},
"isBackstage": true
},
"preRecorded": null,
"onDemand": null,
"roundtable": null,
"accessControlMode": "TRACKING",
"customFields": [
{
"definitionId": "RmllbGREZWZpbml0aW9uXzI4MzcwNw==",
"choices": {
"keys": []
}
},
{
"definitionId": "RmllbGREZWZpbml0aW9uXzI4MzcwOA==",
"choices": {
"keys": []
}
},
{
"definitionId": "RmllbGREZWZpbml0aW9uXzI4NDM1NQ==",
"text": {
"value": null,
"language": "fr_FR"
}
},
{
"definitionId": "RmllbGREZWZpbml0aW9uXzI4NDU5NQ==",
"number": null
}
],
"exhibitors": {
"action": "REMOVE",
"ids": [
"RXhoaWJpdG9yXzEwOTAyNQ=="
]
}
}
}
}
Link Two Sessions
These mutations can be used to link an already existing Session to another Session in an Event in Swapcard.
Step 1: We create a link Id between the two Sessions. This link Id defines the relation between the two Sessions
Query
mutation CreateEventPlanningLink($data: CreatePlanningLinkInput!, $eventId: String!) {
createEventPlanningLink(data: $data, eventId: $eventId) {
eventId
id
parentName {
language
value
}
childName {
language
value
}
}
}
Variables
{
"eventId":"RXZlbnRfNDY1Njc4",
"data": {
"childName": {"language": "en_US", "value": "Bakery World Cup"},
"parentName":{"language": "en_US", "value": "Coupe de France des Ecoles"}
}
}
In the Response from the Content API we get an Id which is the Planning Link Id
Step 2: We use the PlanningLink id ID to create a direct link on the UI between the two Sessions.
Query
mutation LinkedSessions(
$eventId: ID!
$linkId: ID!
$parentPlanningId: ID!
$childPlanningId: ID!
) {
importEventPlannings(
eventId: $eventId
plannings: [
{
id: $parentPlanningId
update: {
linkedPlannings: {
action: ADD
links: [{ linkId: $linkId, planningId: $childPlanningId }]
}
}
}
]
) {
results {
planning {
id
...LinkedSessionsFragment
}
}
errors {
message
}
}
}
fragment LinkedSessionsFragment on Planning {
planningsByPlanningLink {
link {
...PlanningLinksFragment
}
plannings {
id
title
beginsAt
endsAt
format
liveStream {
availableAt
}
}
linkRelation
}
}
fragment PlanningLinksFragment on PlanningLink {
id
eventId
parentName {
language
value
}
childName {
language
value
}
}
Variables
{
"eventId": "RXZlbnRfMTcyMjY0",
"linkId": "UGxhbm5pbmdMaW5rXzExMjk=",
"parentPlanningId": "UGxhbm5pbmdfMTc2OTQ5",
"childPlanningId": "UGxhbm5pbmdfMTc2OTM1"
}
Delete Sessions
This mutation can be used to delete Sessions in an Event in Swapcard.
Arguments
eventId- The Id of the Event on which the Sessions need to be deleted.planningIds- The Ids of Sessions that need to be deleted. This is an array and can hold more than one value separated by commas.
Query
mutation deletePlannings($eventId: String!, $planningsIds: [String!]!) {
deleteEventPlannings(eventId: $eventId, planningsIds: $planningsIds) {
id
titleTranslations {
value
language
}
beginsAt
endsAt
}
}
Variables
{
"eventId": "RXZlbnRfMQ==",
"planningsIds": [
"UGxhbm5pbmdfODAxNzUz","UGxhbm5pbmdfODAxNzU0"
]
}