BEX-WEMP GraphQL API

Documentation for the public GraphQL API for the BERNEXPO expo booking platform

Contact

Jung von Matt TECH AG

technologie@jvmtech.ch

http://www.jvmtech..ch

API Endpoints
# Production:
https://api.buchen.bernexpo.ch/graphql

Queries

expo

Response

Returns an Expo!

Arguments
Name Description
expoIdentifier - String!

Example

Query
query Expo($expoIdentifier: String!) {
  expo(expoIdentifier: $expoIdentifier) {
    identifier
    title
    packages {
      ...PackageFragment
    }
    logo
    startDate
    endDate
    hideCoexhibitors
    coexhibitorPrice {
      ...PriceFragment
    }
    tutorial
    disclaimer
    termsOfService
    responseTitle
    responseText
    contactAddress
    contactPhone
    contactEmail
    contactTitle
    contactText
    contactWebsite
    jentisTrackingDomain
    jentisTrackingProject
    jentisTrackingEnvironment
    jentisTrackingVersion
    jentisTrackingFileHash
  }
}
Variables
{"expoIdentifier": "abc123"}
Response
{
  "data": {
    "expo": {
      "identifier": "xyz789",
      "title": "xyz789",
      "packages": [Package],
      "logo": "abc123",
      "startDate": "abc123",
      "endDate": "abc123",
      "hideCoexhibitors": false,
      "coexhibitorPrice": Price,
      "tutorial": "xyz789",
      "disclaimer": "abc123",
      "termsOfService": "xyz789",
      "responseTitle": "xyz789",
      "responseText": "xyz789",
      "contactAddress": "xyz789",
      "contactPhone": "abc123",
      "contactEmail": "xyz789",
      "contactTitle": "abc123",
      "contactText": "abc123",
      "contactWebsite": "xyz789",
      "jentisTrackingDomain": "xyz789",
      "jentisTrackingProject": "xyz789",
      "jentisTrackingEnvironment": "abc123",
      "jentisTrackingVersion": "xyz789",
      "jentisTrackingFileHash": "abc123"
    }
  }
}

expos

Response

Returns [Expo!]!

Example

Query
query Expos {
  expos {
    identifier
    title
    packages {
      ...PackageFragment
    }
    logo
    startDate
    endDate
    hideCoexhibitors
    coexhibitorPrice {
      ...PriceFragment
    }
    tutorial
    disclaimer
    termsOfService
    responseTitle
    responseText
    contactAddress
    contactPhone
    contactEmail
    contactTitle
    contactText
    contactWebsite
    jentisTrackingDomain
    jentisTrackingProject
    jentisTrackingEnvironment
    jentisTrackingVersion
    jentisTrackingFileHash
  }
}
Response
{
  "data": {
    "expos": [
      {
        "identifier": "abc123",
        "title": "abc123",
        "packages": [Package],
        "logo": "xyz789",
        "startDate": "abc123",
        "endDate": "abc123",
        "hideCoexhibitors": true,
        "coexhibitorPrice": Price,
        "tutorial": "xyz789",
        "disclaimer": "abc123",
        "termsOfService": "abc123",
        "responseTitle": "abc123",
        "responseText": "xyz789",
        "contactAddress": "abc123",
        "contactPhone": "abc123",
        "contactEmail": "abc123",
        "contactTitle": "xyz789",
        "contactText": "xyz789",
        "contactWebsite": "xyz789",
        "jentisTrackingDomain": "xyz789",
        "jentisTrackingProject": "abc123",
        "jentisTrackingEnvironment": "xyz789",
        "jentisTrackingVersion": "xyz789",
        "jentisTrackingFileHash": "xyz789"
      }
    ]
  }
}

form

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a FormSetup!

Arguments
Name Description
formIdentifier - String!
expoIdentifier - String

Example

Query
query Form(
  $formIdentifier: String!,
  $expoIdentifier: String
) {
  form(
    formIdentifier: $formIdentifier,
    expoIdentifier: $expoIdentifier
  ) {
    identifier
    schema
    uischema
  }
}
Variables
{
  "formIdentifier": "xyz789",
  "expoIdentifier": "abc123"
}
Response
{
  "data": {
    "form": {
      "identifier": "abc123",
      "schema": JsonSchema,
      "uischema": JsonSchema
    }
  }
}

getBooking

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a Booking

Example

Query
query GetBooking {
  getBooking {
    identifier
    packageVariant {
      ...PackageVariantFragment
    }
    createdAt
    modifiedAt
    totalPrice {
      ...PriceFragment
    }
    addresses
    packageVariants {
      ...PackageVariantFragment
    }
    termsAndConditions
    expoFormData
  }
}
Response
{
  "data": {
    "getBooking": {
      "identifier": "xyz789",
      "packageVariant": PackageVariant,
      "createdAt": "xyz789",
      "modifiedAt": "abc123",
      "totalPrice": Price,
      "addresses": JsonSchema,
      "packageVariants": [PackageVariant],
      "termsAndConditions": true,
      "expoFormData": JsonSchema
    }
  }
}

i18n

Response

Returns [TranslationEntry!]!

Arguments
Name Description
lang - String!

Example

Query
query I18n($lang: String!) {
  i18n(lang: $lang) {
    key
    value
  }
}
Variables
{"lang": "abc123"}
Response
{
  "data": {
    "i18n": [
      {
        "key": "abc123",
        "value": "xyz789"
      }
    ]
  }
}

package

Response

Returns a Package!

Arguments
Name Description
packageIdentifier - String!

Example

Query
query Package($packageIdentifier: String!) {
  package(packageIdentifier: $packageIdentifier) {
    identifier
    type
    title
    description
    included_services
    image
    price {
      ...PriceFragment
    }
    minPrice {
      ...PriceFragment
    }
    sizes
    packageVariants {
      ...PackageVariantFragment
    }
  }
}
Variables
{"packageIdentifier": "xyz789"}
Response
{
  "data": {
    "package": {
      "identifier": "abc123",
      "type": "Flexible",
      "title": "xyz789",
      "description": "xyz789",
      "included_services": ["abc123"],
      "image": "xyz789",
      "price": Price,
      "minPrice": Price,
      "sizes": ["abc123"],
      "packageVariants": [PackageVariant]
    }
  }
}

packageVariantSiblings

Response

Returns [PackageVariant!]!

Arguments
Name Description
packageVariantIdentifier - String!

Example

Query
query PackageVariantSiblings($packageVariantIdentifier: String!) {
  packageVariantSiblings(packageVariantIdentifier: $packageVariantIdentifier) {
    identifier
    parentIdentifier
    type
    title
    description
    disclaimer
    included_services
    image
    price {
      ...PriceFragment
    }
    minPrice {
      ...PriceFragment
    }
    size {
      ...SizeFragment
    }
    shape {
      ...ShapeFragment
    }
    minWidth
    maxWidth
    minDepth
    maxDepth
    serviceCategories {
      ...ServiceCategoryFragment
    }
    serviceGroups {
      ...ServiceGroupFragment
    }
  }
}
Variables
{"packageVariantIdentifier": "xyz789"}
Response
{
  "data": {
    "packageVariantSiblings": [
      {
        "identifier": "xyz789",
        "parentIdentifier": "xyz789",
        "type": "Flexible",
        "title": "xyz789",
        "description": "abc123",
        "disclaimer": "xyz789",
        "included_services": ["abc123"],
        "image": "xyz789",
        "price": Price,
        "minPrice": Price,
        "size": Size,
        "shape": Shape,
        "minWidth": 987,
        "maxWidth": 987,
        "minDepth": 123,
        "maxDepth": 987,
        "serviceCategories": [ServiceCategory],
        "serviceGroups": [ServiceGroup]
      }
    ]
  }
}

packageVariants

Response

Returns [PackageVariant!]!

Arguments
Name Description
packageIdentifier - String!

Example

Query
query PackageVariants($packageIdentifier: String!) {
  packageVariants(packageIdentifier: $packageIdentifier) {
    identifier
    parentIdentifier
    type
    title
    description
    disclaimer
    included_services
    image
    price {
      ...PriceFragment
    }
    minPrice {
      ...PriceFragment
    }
    size {
      ...SizeFragment
    }
    shape {
      ...ShapeFragment
    }
    minWidth
    maxWidth
    minDepth
    maxDepth
    serviceCategories {
      ...ServiceCategoryFragment
    }
    serviceGroups {
      ...ServiceGroupFragment
    }
  }
}
Variables
{"packageIdentifier": "abc123"}
Response
{
  "data": {
    "packageVariants": [
      {
        "identifier": "xyz789",
        "parentIdentifier": "abc123",
        "type": "Flexible",
        "title": "xyz789",
        "description": "xyz789",
        "disclaimer": "xyz789",
        "included_services": ["abc123"],
        "image": "abc123",
        "price": Price,
        "minPrice": Price,
        "size": Size,
        "shape": Shape,
        "minWidth": 987,
        "maxWidth": 123,
        "minDepth": 987,
        "maxDepth": 987,
        "serviceCategories": [ServiceCategory],
        "serviceGroups": [ServiceGroup]
      }
    ]
  }
}

packages

Response

Returns [Package!]!

Arguments
Name Description
expoIdentifier - String!

Example

Query
query Packages($expoIdentifier: String!) {
  packages(expoIdentifier: $expoIdentifier) {
    identifier
    type
    title
    description
    included_services
    image
    price {
      ...PriceFragment
    }
    minPrice {
      ...PriceFragment
    }
    sizes
    packageVariants {
      ...PackageVariantFragment
    }
  }
}
Variables
{"expoIdentifier": "abc123"}
Response
{
  "data": {
    "packages": [
      {
        "identifier": "xyz789",
        "type": "Flexible",
        "title": "xyz789",
        "description": "abc123",
        "included_services": ["abc123"],
        "image": "abc123",
        "price": Price,
        "minPrice": Price,
        "sizes": ["xyz789"],
        "packageVariants": [PackageVariant]
      }
    ]
  }
}

salesConfiguration

Response

Returns a SalesConfigurationResponse

Arguments
Name Description
token - String!

Example

Query
query SalesConfiguration($token: String!) {
  salesConfiguration(token: $token) {
    success
    expo
  }
}
Variables
{"token": "abc123"}
Response
{
  "data": {
    "salesConfiguration": {
      "success": true,
      "expo": "xyz789"
    }
  }
}

Mutations

createBooking

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a Booking!

Arguments
Name Description
packageIdentifier - String!
regiNr - String

Example

Query
mutation CreateBooking(
  $packageIdentifier: String!,
  $regiNr: String
) {
  createBooking(
    packageIdentifier: $packageIdentifier,
    regiNr: $regiNr
  ) {
    identifier
    packageVariant {
      ...PackageVariantFragment
    }
    createdAt
    modifiedAt
    totalPrice {
      ...PriceFragment
    }
    addresses
    packageVariants {
      ...PackageVariantFragment
    }
    termsAndConditions
    expoFormData
  }
}
Variables
{
  "packageIdentifier": "xyz789",
  "regiNr": "xyz789"
}
Response
{
  "data": {
    "createBooking": {
      "identifier": "abc123",
      "packageVariant": PackageVariant,
      "createdAt": "xyz789",
      "modifiedAt": "xyz789",
      "totalPrice": Price,
      "addresses": JsonSchema,
      "packageVariants": [PackageVariant],
      "termsAndConditions": false,
      "expoFormData": JsonSchema
    }
  }
}

createSalesConfiguration

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a SalesConfiguration

Example

Query
mutation CreateSalesConfiguration {
  createSalesConfiguration {
    token
  }
}
Response
{
  "data": {
    "createSalesConfiguration": {
      "token": "xyz789"
    }
  }
}

submitBooking

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a SubmitResponse!

Example

Query
mutation SubmitBooking {
  submitBooking {
    success
    message
  }
}
Response
{
  "data": {
    "submitBooking": {
      "success": true,
      "message": "xyz789"
    }
  }
}

updateBooking

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a Booking!

Arguments
Name Description
payload - BookingDataPayload

Example

Query
mutation UpdateBooking($payload: BookingDataPayload) {
  updateBooking(payload: $payload) {
    identifier
    packageVariant {
      ...PackageVariantFragment
    }
    createdAt
    modifiedAt
    totalPrice {
      ...PriceFragment
    }
    addresses
    packageVariants {
      ...PackageVariantFragment
    }
    termsAndConditions
    expoFormData
  }
}
Variables
{"payload": BookingDataPayload}
Response
{
  "data": {
    "updateBooking": {
      "identifier": "abc123",
      "packageVariant": PackageVariant,
      "createdAt": "xyz789",
      "modifiedAt": "xyz789",
      "totalPrice": Price,
      "addresses": JsonSchema,
      "packageVariants": [PackageVariant],
      "termsAndConditions": false,
      "expoFormData": JsonSchema
    }
  }
}

updateServiceGroup

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a ServiceGroupResponse!

Arguments
Name Description
payload - ServiceGroupPayload

Example

Query
mutation UpdateServiceGroup($payload: ServiceGroupPayload) {
  updateServiceGroup(payload: $payload) {
    totalPrice {
      ...PriceFragment
    }
    serviceGroup {
      ...ServiceGroupFragment
    }
  }
}
Variables
{"payload": ServiceGroupPayload}
Response
{
  "data": {
    "updateServiceGroup": {
      "totalPrice": Price,
      "serviceGroup": ServiceGroup
    }
  }
}

validateFormData

Description

⛔ Non-public api, needs apiToken to access ⛔

Response

Returns a FormValidationResponse

Arguments
Name Description
payload - FormPayload

Example

Query
mutation ValidateFormData($payload: FormPayload) {
  validateFormData(payload: $payload) {
    hasErrors
    isComplete
    fields {
      ...FormValidationResponseEntryFragment
    }
  }
}
Variables
{"payload": FormPayload}
Response
{
  "data": {
    "validateFormData": {
      "hasErrors": true,
      "isComplete": true,
      "fields": [FormValidationResponseEntry]
    }
  }
}

Types

Booking

Fields
Field Name Description
identifier - String!
packageVariant - PackageVariant!
createdAt - String
modifiedAt - String
totalPrice - Price!
addresses - JsonSchema!
packageVariants - [PackageVariant!]!
termsAndConditions - Boolean
expoFormData - JsonSchema!
Example
{
  "identifier": "abc123",
  "packageVariant": PackageVariant,
  "createdAt": "xyz789",
  "modifiedAt": "abc123",
  "totalPrice": Price,
  "addresses": JsonSchema,
  "packageVariants": [PackageVariant],
  "termsAndConditions": true,
  "expoFormData": JsonSchema
}

BookingDataPayload

Fields
Input Field Description
packageVariantIdentifier - String
size - SizePayload
serviceModules - [String!]
addresses - JsonSchema
termsAndConditions - Boolean
expoFormData - JsonSchema
Example
{
  "packageVariantIdentifier": "xyz789",
  "size": SizePayload,
  "serviceModules": ["xyz789"],
  "addresses": JsonSchema,
  "termsAndConditions": true,
  "expoFormData": JsonSchema
}

Boolean

Description

The Boolean scalar type represents true or false.

Expo

Fields
Field Name Description
identifier - String
title - String
packages - [Package]
logo - String
startDate - String!
endDate - String!
hideCoexhibitors - Boolean
coexhibitorPrice - Price
tutorial - String
disclaimer - String
termsOfService - String
responseTitle - String
responseText - String
contactAddress - String
contactPhone - String
contactEmail - String
contactTitle - String
contactText - String
contactWebsite - String
jentisTrackingDomain - String
jentisTrackingProject - String
jentisTrackingEnvironment - String
jentisTrackingVersion - String
jentisTrackingFileHash - String
Example
{
  "identifier": "abc123",
  "title": "abc123",
  "packages": [Package],
  "logo": "abc123",
  "startDate": "xyz789",
  "endDate": "xyz789",
  "hideCoexhibitors": true,
  "coexhibitorPrice": Price,
  "tutorial": "abc123",
  "disclaimer": "abc123",
  "termsOfService": "abc123",
  "responseTitle": "xyz789",
  "responseText": "xyz789",
  "contactAddress": "abc123",
  "contactPhone": "abc123",
  "contactEmail": "abc123",
  "contactTitle": "abc123",
  "contactText": "abc123",
  "contactWebsite": "xyz789",
  "jentisTrackingDomain": "xyz789",
  "jentisTrackingProject": "xyz789",
  "jentisTrackingEnvironment": "xyz789",
  "jentisTrackingVersion": "xyz789",
  "jentisTrackingFileHash": "abc123"
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

FormFieldPayload

Fields
Input Field Description
key - String!
value - StringOrArray
Example
{
  "key": "xyz789",
  "value": StringOrArray
}

FormPayload

Fields
Input Field Description
identifier - String!
expoIdentifier - String
fields - [FormFieldPayload!]!
Example
{
  "identifier": "xyz789",
  "expoIdentifier": "xyz789",
  "fields": [FormFieldPayload]
}

FormSetup

Fields
Field Name Description
identifier - String!
schema - JsonSchema!
uischema - JsonSchema!
Example
{
  "identifier": "abc123",
  "schema": JsonSchema,
  "uischema": JsonSchema
}

FormValidationResponse

Fields
Field Name Description
hasErrors - Boolean!
isComplete - Boolean!
fields - [FormValidationResponseEntry!]!
Example
{
  "hasErrors": true,
  "isComplete": false,
  "fields": [FormValidationResponseEntry]
}

FormValidationResponseEntry

Fields
Field Name Description
key - String!
value - String
errors - [String!]!
Example
{
  "key": "xyz789",
  "value": "xyz789",
  "errors": ["xyz789"]
}

InputType

Values
Enum Value Description

picker

radio

checkbox

count

Example
"picker"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

JsonSchema

Example
JsonSchema

Package

Fields
Field Name Description
identifier - String!
type - PackageVariantType!
title - String!
description - String
included_services - [String!]!
image - String!
price - Price
minPrice - Price
sizes - [String!]!
packageVariants - [PackageVariant!]!
Example
{
  "identifier": "abc123",
  "type": "Flexible",
  "title": "abc123",
  "description": "xyz789",
  "included_services": ["abc123"],
  "image": "abc123",
  "price": Price,
  "minPrice": Price,
  "sizes": ["xyz789"],
  "packageVariants": [PackageVariant]
}

PackageVariant

Fields
Field Name Description
identifier - String!
parentIdentifier - String!
type - PackageVariantType!
title - String!
description - String
disclaimer - String
included_services - [String!]!
image - String!
price - Price!
minPrice - Price
size - Size!
shape - Shape!
minWidth - Int
maxWidth - Int
minDepth - Int
maxDepth - Int
serviceCategories - [ServiceCategory!]!
serviceGroups - [ServiceGroup!]!
Example
{
  "identifier": "abc123",
  "parentIdentifier": "xyz789",
  "type": "Flexible",
  "title": "abc123",
  "description": "xyz789",
  "disclaimer": "xyz789",
  "included_services": ["xyz789"],
  "image": "abc123",
  "price": Price,
  "minPrice": Price,
  "size": Size,
  "shape": Shape,
  "minWidth": 123,
  "maxWidth": 123,
  "minDepth": 987,
  "maxDepth": 987,
  "serviceCategories": [ServiceCategory],
  "serviceGroups": [ServiceGroup]
}

PackageVariantType

Values
Enum Value Description

Flexible

Sized

Example
"Flexible"

Price

Fields
Field Name Description
amount - Float!
currency - String!
Example
{"amount": 123.45, "currency": "abc123"}

SalesConfiguration

Fields
Field Name Description
token - String!
Example
{"token": "xyz789"}

SalesConfigurationResponse

Fields
Field Name Description
success - Boolean
expo - String
Example
{"success": false, "expo": "abc123"}

ServiceCategory

Fields
Field Name Description
identifier - String!
title - String!
Example
{
  "identifier": "abc123",
  "title": "xyz789"
}

ServiceGroup

Fields
Field Name Description
identifier - String!
title - String!
additionalServicesTitle - String
additionalServicesCollapsed - Boolean
category - ServiceCategory!
toggleable - Boolean!
toggleableInactive - Boolean
toggleableTitle - String
includedServices - [ServiceModule!]
upgradeServices - [ServiceModule!]
additionalServices - [ServiceModule!]
enabled - Boolean!
Example
{
  "identifier": "xyz789",
  "title": "abc123",
  "additionalServicesTitle": "abc123",
  "additionalServicesCollapsed": true,
  "category": ServiceCategory,
  "toggleable": true,
  "toggleableInactive": false,
  "toggleableTitle": "abc123",
  "includedServices": [ServiceModule],
  "upgradeServices": [ServiceModule],
  "additionalServices": [ServiceModule],
  "enabled": false
}

ServiceGroupPayload

Fields
Input Field Description
identifier - String!
serviceModules - [ServiceModulePayload!]
enabled - Boolean!
Example
{
  "identifier": "xyz789",
  "serviceModules": [ServiceModulePayload],
  "enabled": true
}

ServiceGroupResponse

Fields
Field Name Description
totalPrice - Price!
serviceGroup - ServiceGroup!
Example
{
  "totalPrice": Price,
  "serviceGroup": ServiceGroup
}

ServiceModule

Fields
Field Name Description
identifier - String!
title - String!
description - String
image - ServiceModuleImage
tooltip - String
additionalForm - JsonSchema
inputType - InputType!
bundles - [ServiceModuleBundle!]!
selectedBundle - ServiceModuleBundle
defaultBundle - ServiceModuleBundle
explicitDefaultBundle - Boolean
count - Int!
unitPrice - Price!
computedPrice - Price!
Example
{
  "identifier": "xyz789",
  "title": "xyz789",
  "description": "abc123",
  "image": ServiceModuleImage,
  "tooltip": "xyz789",
  "additionalForm": JsonSchema,
  "inputType": "picker",
  "bundles": [ServiceModuleBundle],
  "selectedBundle": ServiceModuleBundle,
  "defaultBundle": ServiceModuleBundle,
  "explicitDefaultBundle": false,
  "count": 123,
  "unitPrice": Price,
  "computedPrice": Price
}

ServiceModuleBundle

Fields
Field Name Description
identifier - String
title - String
color - String
image - String
Example
{
  "identifier": "xyz789",
  "title": "xyz789",
  "color": "xyz789",
  "image": "abc123"
}

ServiceModuleImage

Fields
Field Name Description
thumbnail - String
preview - String
Example
{
  "thumbnail": "xyz789",
  "preview": "xyz789"
}

ServiceModulePayload

Fields
Input Field Description
identifier - String!
state - ServiceModuleStatePayload
Example
{
  "identifier": "xyz789",
  "state": ServiceModuleStatePayload
}

ServiceModuleStatePayload

Fields
Input Field Description
selectedEntity - String
count - Int
additionalFormData - JsonSchema
Example
{
  "selectedEntity": "abc123",
  "count": 987,
  "additionalFormData": JsonSchema
}

Shape

Fields
Field Name Description
type - ShapeType!
label - String
Example
{"type": "ROW", "label": "xyz789"}

ShapeType

Values
Enum Value Description

ROW

CORNER

HEAD

TUNNEL

ISLAND

Example
"ROW"

Size

Fields
Field Name Description
width - Int!
depth - Int!
Example
{"width": 123, "depth": 123}

SizePayload

Fields
Input Field Description
width - Int!
depth - Int!
Example
{"width": 123, "depth": 123}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

StringOrArray

Example
StringOrArray

SubmitResponse

Fields
Field Name Description
success - Boolean
message - String
Example
{"success": false, "message": "abc123"}

TranslationEntry

Fields
Field Name Description
key - String!
value - String!
Example
{
  "key": "xyz789",
  "value": "xyz789"
}