Ticketing Shop API enables you to build your own ticket shop. A place where your customers can create and adjust orders, and where customers can pay on a checkout page.
You can integrate this in your application by communicating with our api.
The Ticketing Shop API is a REST API that uses JSON to communicate.
To make use of our API for Ticketing you need to be registered at CM.com, you need to be acquired in the ticketing app and you need to create an event in the ticketing app.
During the implementation you might have questions and we kindly refer to our Help Center documents to get more background information.
We have made a few code samples to quickly get started, each one appealing to some selected programming languages. If you are missing one, please let me know.
Note: these code examples are pointing to the event uuid: 00000000-0000-0000-0000-000000000000, which is not an existing uuid. Please use your own instead.
This cURL code sample provides you an easy and simple way to test out the connectivity to our Ticketing Shop API on a CLI. Just fill the provided product token and you are good to go.
curl --location \
--request GET 'https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/00000000-0000-0000-0000-000000000000' \
--header 'accept: application/json' \
--header 'X-CM-PRODUCTTOKEN: [PASTE_PRODUCT_TOKEN_HERE]'
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/00000000-0000-0000-0000-000000000000",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var https = require('follow-redirects').https;
var fs = require('fs');
var options = {
'method': 'GET',
'hostname': 'api.ticketing.cm.com',
'path': '/ticketingapi/v2.0/ticketshop/events/00000000-0000-0000-0000-000000000000',
'maxRedirects': 20
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
req.end();
https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop
Our API supports sending messages via HTTP. You can send a POST request containing a JSON body.
Communication with the CM servers should be done using the TLS cryptographic protocol, version 1.2 or higher. Older security protocols such as TLSv1.0, TLSv1.1 and SSLv3 are not supported.
On our API, Cross-Site Scripting (XSS) protection is enabled. XSS enables attackers to inject client-side scripts into web pages viewed by other users.
To protect your web application and our API we disabled the option to make direct request from a web application.
Refers to an event as set-up by client in the Ticketing Dashboard.
Get all event data for a specific event.
Note: This request should use v3.0 of the API. This request has been deprecated in v2.0.
GET https://api.ticketing.cm.com/ticketingapi/v3.0/ticketshop/events/{event_uuid}
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | X-TF-VIEWPORT- | The viewport uri. Include your shop name here. | True | MyShopUri |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Http status | Description | Example |
---|---|---|
200 | Successful operation | Event Object |
400 | Bad request | Info Message |
{
"event": {
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Flow Festival",
"start_at": null,
"end_at": null,
"online_from": null,
"online_till": null,
"is_ongoing": false,
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"discount_label": {
"nl": "Korting",
"en": "Discount",
"fr": "La Réduction",
"de": "Rabatt",
"ar": ""
},
"minutes_to_order": 10,
"is_discount_enabled": true,
"discount_strategy_type_id": "BASE_PRICE",
"is_calendar_enabled": false,
"is_order_invoicing_enabled": false,
"is_promotional_session_enabled": false
},
"order_fees": [
{
"fixed_fee": 0,
"currency_id": "USD"
}
],
"e_commerce": {
"google_analytics_tracking_code": null,
"google_tag_manager_code": null,
"google_adwords_conversion_code": null,
"google_adwords_conversion_label": null,
"google_adwords_remarketing_code": null,
"google_adwords_remarketing_label": null,
"facebook_pixel_tracking_code": null,
"blueconic_tracking_code": null
},
"venue": {
"name": null,
"address_line_1": null,
"address_line_2": null,
"zipcode": null,
"city": null,
"country_id": null
},
"consents": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"consent_status_id": "REQUIRED",
"name": "CM Default",
"content": {
"nl": "Ik ga akkoord met de <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">gebruikersvoorwaarden</a> en het <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">privacybeleid</a> van CM Tickets",
"en": "I accept the <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">terms of use</a> and <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">privacy policy</a> of CM Tickets",
"fr": "Je suis d'accord avec les <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">conditions d'utilisation</a> et la <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Politique de confidentialité</a> de CM Tickets",
"de": "Ich stimme den <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Nutzungsbedingungen</a> und der <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Datenschutz-Bestimmungen</a> von CM Tickets zu",
"ar": ""
}
}
],
"language_settings": {
"preferred_language": {
"id": "EN",
"name": "English"
},
"available_languages": [
{
"id": "DE",
"name": "German"
},
{
"id": "EN",
"name": "English"
},
{
"id": "FR",
"name": "French"
},
{
"id": "NL",
"name": "Dutch; Flemish"
},
{
"id": "AR",
"name": "Arabic"
}
]
},
"currency_settings": {
"preferred_currency": {
"id": "USD",
"name": "United States dollar",
"symbol": "$"
},
"available_currencies": [
{
"id": "USD",
"name": "United States dollar",
"symbol": "$"
}
]
},
"timezone": {
"name": "America/Los_Angeles",
"abbreviation": "PST",
"country_id": "US"
},
"calendar": null,
"shop_steps": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"shop_image": null,
"display_order": 10,
"title": {
"nl": "Tickets",
"en": "Tickets",
"fr": "Des billets",
"de": "Tickets",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"shop_step_type_id": "MAIN",
"shop_step_display_type_id": "LIST",
"categories": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"display_order": 10,
"is_visible": true,
"is_initialized": true,
"shop_image": null,
"max_order_amount": null,
"name": {
"nl": "Tickets",
"en": "Tickets",
"fr": "Des billets",
"de": "Tickets",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"tickets": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"price": 10,
"fixed_fee": 0,
"is_visible": true,
"is_upsell": false,
"is_selectable_on_calendar": false,
"is_promotional_code_enabled": false,
"min_order_amount": 1,
"max_order_amount": 10,
"increment_amount": 1,
"online_from": null,
"online_till": null,
"shop_image": null,
"display_order": 20,
"name": {
"nl": "Ticket",
"en": "Ticket",
"fr": "Ticket",
"de": "Ticket",
"ar": "Ticket"
},
"subtitle": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"ticket_status_type_id": "ONLINE",
"currency_id": "USD",
"tags": [],
"is_unlimited": false
}
]
}
]
}
],
"ticket_statuses": [
{
"id": "NOT_IN_SALE",
"status": {
"nl": "Momenteel niet in de verkoop",
"en": "Currently not in sale",
"fr": "Actuellement pas en vente",
"de": "Derzeit nicht im Verkauf",
"ar": ""
}
},
{
"id": "DOOR_SALE",
"status": {
"nl": "Deurverkoop",
"en": "Door sale",
"fr": "Vente de porte",
"de": "Türverkauf",
"ar": ""
}
},
{
"id": "IN_RESERVATION",
"status": {
"nl": "Gereserveerd",
"en": "In Reservation",
"fr": "Réservé",
"de": "Reserviert",
"ar": ""
}
},
{
"id": "ONLINE",
"status": {
"nl": "Online",
"en": "Online",
"fr": "En ligne",
"de": "Online",
"ar": ""
}
},
{
"id": "SOLD_OUT",
"status": {
"nl": "Uitverkocht",
"en": "Sold Out",
"fr": "Épuisé",
"de": "Ausverkauft",
"ar": ""
}
}
],
"customer_data": {
"first_name": "NOT_IN_USE",
"last_name": "NOT_IN_USE",
"email": "REQUIRED",
"email_check": "NOT_IN_USE",
"mobile": "NOT_IN_USE",
"gender": "NOT_IN_USE",
"address_line_1": "NOT_IN_USE",
"address_line_1_building_number": "NOT_IN_USE",
"zipcode": "NOT_IN_USE",
"city": "NOT_IN_USE",
"country_id": "NOT_IN_USE",
"position_name": "NOT_IN_USE",
"date_of_birth": "NOT_IN_USE",
"organisation_name": "NOT_IN_USE",
"custom_field_1": "NOT_IN_USE",
"custom_field_1_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
},
"custom_field_2": "NOT_IN_USE",
"custom_field_2_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
},
"custom_field_3": "NOT_IN_USE",
"custom_field_3_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
}
},
"payment_methods": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Ideal",
"description": null,
"fixed_fee": 0.68,
"percentage_fee": 0,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/ideal.png",
"display_order": 10,
"currency_id": "EUR"
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Bancontact",
"description": null,
"fixed_fee": 0.35,
"percentage_fee": 2.6,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/bancontact.png",
"display_order": 30,
"currency_id": "EUR"
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Sofort Banking",
"description": null,
"fixed_fee": 0.55,
"percentage_fee": 2.3,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/sofort_banking.png",
"display_order": 40,
"currency_id": "EUR"
}
],
"ideal_issuers": [
{
"id": "ABNANL2A",
"name": "ABN Amro",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/098b25ef-e324-4be8-adb8-330487631270/content"
},
{
"id": "ASNBNL21",
"name": "ASN Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/47391af6-879f-4fc5-8f99-bd15ef387126/content"
},
{
"id": "BUNQNL2A",
"name": "bunq",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/e164acdf-a012-461f-9ebc-6f5e81665202/content"
},
{
"id": "FVLBNL22",
"name": "Van Lanschot Bankiers",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/7c057845-cadd-453f-a4b3-ddf0870837de/content"
},
{
"id": "HANDNL2A",
"name": "Svenska Handelsbanken",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/73e4fc1e-20f0-4251-a40a-0f1a156f6bbd/content"
},
{
"id": "INGBNL2A",
"name": "ING",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/07e0e984-b0a2-4b1c-b329-9c516c4e2399/content"
},
{
"id": "KNABNL2H",
"name": "Knab",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/dde03776-2ca8-40e4-9f26-2cfb4447538b/content"
},
{
"id": "RABONL2U",
"name": "Rabobank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/98d4f6b9-45a6-4078-9e5b-b773efc9c916/content"
},
{
"id": "RBRBNL21",
"name": "RegioBank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/266793f5-afef-4fca-97cc-88afc9caf34f/content"
},
{
"id": "SNSBNL2A",
"name": "SNS Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/07991e57-2ca2-42e5-884b-b86f91be8642/content"
},
{
"id": "TRIONL2U",
"name": "Triodos Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/c21d7d9a-3bae-4415-aab2-0560bfccd729/content"
}
],
"viewport": {
"sales_type_id": "OPEN",
"max_order_amount": null
}
}
To calculate the total purchase amount, ticket fees and transaction fees can be applicable. Below you will find an explanation on how the calculation of the total purchase amount must be made.
The total purchase price can consist of:
If all of the above are applicable the calculation for the total purchase amount must be made using the calculation method below:
Sub_Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Total = ( Sub_Total x Payment_Method_Percentage_Fee ) + Fixed_Fee_Payment_Method
If only fixed fee per payment method is applicable the calculation for the total purchase amount must be made using the calculation method below:
Sub_Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Total = Sub_Total + Fixed_Fee_Payment_Method
If no fees applicable the calculation for the total purchase amount must be made using the calculation method below:
Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Refers to an event as set-up by client in the Ticketing Dashboard.
Get all event data for a specific event.
Note: This request should use v3.0 of the API. This request has been deprecated in v2.0.
GET https://api.ticketing.cm.com/ticketingapi/v3.0/ticketshop/events/{event_uuid}
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | X-TF-VIEWPORT- | The viewport uri. Include your shop name here. | True | MyShopUri |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Http status | Description | Example |
---|---|---|
200 | Successful operation | Event Object |
400 | Bad request | Info Message |
{
"event": {
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Flow Festival",
"start_at": null,
"end_at": null,
"online_from": null,
"online_till": null,
"is_ongoing": false,
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"discount_label": {
"nl": "Korting",
"en": "Discount",
"fr": "La Réduction",
"de": "Rabatt",
"ar": ""
},
"minutes_to_order": 10,
"is_discount_enabled": true,
"discount_strategy_type_id": "BASE_PRICE",
"is_calendar_enabled": false,
"is_order_invoicing_enabled": false,
"is_promotional_session_enabled": false
},
"order_fees": [
{
"fixed_fee": 0,
"currency_id": "USD"
}
],
"e_commerce": {
"google_analytics_tracking_code": null,
"google_tag_manager_code": null,
"google_adwords_conversion_code": null,
"google_adwords_conversion_label": null,
"google_adwords_remarketing_code": null,
"google_adwords_remarketing_label": null,
"facebook_pixel_tracking_code": null,
"blueconic_tracking_code": null
},
"venue": {
"name": null,
"address_line_1": null,
"address_line_2": null,
"zipcode": null,
"city": null,
"country_id": null
},
"consents": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"consent_status_id": "REQUIRED",
"name": "CM Default",
"content": {
"nl": "Ik ga akkoord met de <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">gebruikersvoorwaarden</a> en het <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">privacybeleid</a> van CM Tickets",
"en": "I accept the <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">terms of use</a> and <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">privacy policy</a> of CM Tickets",
"fr": "Je suis d'accord avec les <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">conditions d'utilisation</a> et la <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Politique de confidentialité</a> de CM Tickets",
"de": "Ich stimme den <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Nutzungsbedingungen</a> und der <a href=\"https://support.cmtickets.com/file.php/16572889ZPNZXSNCZMXMAZS0/EN_General-Terms-and-Conditions-CM-Tickets-Visitors-2019.pdf\" target=\"_blank\">Datenschutz-Bestimmungen</a> von CM Tickets zu",
"ar": ""
}
}
],
"language_settings": {
"preferred_language": {
"id": "EN",
"name": "English"
},
"available_languages": [
{
"id": "DE",
"name": "German"
},
{
"id": "EN",
"name": "English"
},
{
"id": "FR",
"name": "French"
},
{
"id": "NL",
"name": "Dutch; Flemish"
},
{
"id": "AR",
"name": "Arabic"
}
]
},
"currency_settings": {
"preferred_currency": {
"id": "USD",
"name": "United States dollar",
"symbol": "$"
},
"available_currencies": [
{
"id": "USD",
"name": "United States dollar",
"symbol": "$"
}
]
},
"timezone": {
"name": "America/Los_Angeles",
"abbreviation": "PST",
"country_id": "US"
},
"calendar": null,
"shop_steps": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"shop_image": null,
"display_order": 10,
"title": {
"nl": "Tickets",
"en": "Tickets",
"fr": "Des billets",
"de": "Tickets",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"shop_step_type_id": "MAIN",
"shop_step_display_type_id": "LIST",
"categories": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"display_order": 10,
"is_visible": true,
"is_initialized": true,
"shop_image": null,
"max_order_amount": null,
"name": {
"nl": "Tickets",
"en": "Tickets",
"fr": "Des billets",
"de": "Tickets",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"tickets": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"price": 10,
"fixed_fee": 0,
"is_visible": true,
"is_upsell": false,
"is_selectable_on_calendar": false,
"is_promotional_code_enabled": false,
"min_order_amount": 1,
"max_order_amount": 10,
"increment_amount": 1,
"online_from": null,
"online_till": null,
"shop_image": null,
"display_order": 20,
"name": {
"nl": "Ticket",
"en": "Ticket",
"fr": "Ticket",
"de": "Ticket",
"ar": "Ticket"
},
"subtitle": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"description": {
"nl": "",
"en": "",
"fr": "",
"de": "",
"ar": ""
},
"ticket_status_type_id": "ONLINE",
"currency_id": "USD",
"tags": [],
"is_unlimited": false
}
]
}
]
}
],
"ticket_statuses": [
{
"id": "NOT_IN_SALE",
"status": {
"nl": "Momenteel niet in de verkoop",
"en": "Currently not in sale",
"fr": "Actuellement pas en vente",
"de": "Derzeit nicht im Verkauf",
"ar": ""
}
},
{
"id": "DOOR_SALE",
"status": {
"nl": "Deurverkoop",
"en": "Door sale",
"fr": "Vente de porte",
"de": "Türverkauf",
"ar": ""
}
},
{
"id": "IN_RESERVATION",
"status": {
"nl": "Gereserveerd",
"en": "In Reservation",
"fr": "Réservé",
"de": "Reserviert",
"ar": ""
}
},
{
"id": "ONLINE",
"status": {
"nl": "Online",
"en": "Online",
"fr": "En ligne",
"de": "Online",
"ar": ""
}
},
{
"id": "SOLD_OUT",
"status": {
"nl": "Uitverkocht",
"en": "Sold Out",
"fr": "Épuisé",
"de": "Ausverkauft",
"ar": ""
}
}
],
"customer_data": {
"first_name": "NOT_IN_USE",
"last_name": "NOT_IN_USE",
"email": "REQUIRED",
"email_check": "NOT_IN_USE",
"mobile": "NOT_IN_USE",
"gender": "NOT_IN_USE",
"address_line_1": "NOT_IN_USE",
"address_line_1_building_number": "NOT_IN_USE",
"zipcode": "NOT_IN_USE",
"city": "NOT_IN_USE",
"country_id": "NOT_IN_USE",
"position_name": "NOT_IN_USE",
"date_of_birth": "NOT_IN_USE",
"organisation_name": "NOT_IN_USE",
"custom_field_1": "NOT_IN_USE",
"custom_field_1_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
},
"custom_field_2": "NOT_IN_USE",
"custom_field_2_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
},
"custom_field_3": "NOT_IN_USE",
"custom_field_3_label": {
"nl": "custom_field",
"en": "custom_field",
"fr": "custom_field",
"de": "custom_field",
"ar": "custom_field"
}
},
"payment_methods": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Ideal",
"description": null,
"fixed_fee": 0.68,
"percentage_fee": 0,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/ideal.png",
"display_order": 10,
"currency_id": "EUR"
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Bancontact",
"description": null,
"fixed_fee": 0.35,
"percentage_fee": 2.6,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/bancontact.png",
"display_order": 30,
"currency_id": "EUR"
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "Sofort Banking",
"description": null,
"fixed_fee": 0.55,
"percentage_fee": 2.3,
"image_uri": "https://static.ticketflow.eu/assets/images/paymethods/sofort_banking.png",
"display_order": 40,
"currency_id": "EUR"
}
],
"ideal_issuers": [
{
"id": "ABNANL2A",
"name": "ABN Amro",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/098b25ef-e324-4be8-adb8-330487631270/content"
},
{
"id": "ASNBNL21",
"name": "ASN Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/47391af6-879f-4fc5-8f99-bd15ef387126/content"
},
{
"id": "BUNQNL2A",
"name": "bunq",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/e164acdf-a012-461f-9ebc-6f5e81665202/content"
},
{
"id": "FVLBNL22",
"name": "Van Lanschot Bankiers",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/7c057845-cadd-453f-a4b3-ddf0870837de/content"
},
{
"id": "HANDNL2A",
"name": "Svenska Handelsbanken",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/73e4fc1e-20f0-4251-a40a-0f1a156f6bbd/content"
},
{
"id": "INGBNL2A",
"name": "ING",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/07e0e984-b0a2-4b1c-b329-9c516c4e2399/content"
},
{
"id": "KNABNL2H",
"name": "Knab",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/dde03776-2ca8-40e4-9f26-2cfb4447538b/content"
},
{
"id": "RABONL2U",
"name": "Rabobank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/98d4f6b9-45a6-4078-9e5b-b773efc9c916/content"
},
{
"id": "RBRBNL21",
"name": "RegioBank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/266793f5-afef-4fca-97cc-88afc9caf34f/content"
},
{
"id": "SNSBNL2A",
"name": "SNS Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/07991e57-2ca2-42e5-884b-b86f91be8642/content"
},
{
"id": "TRIONL2U",
"name": "Triodos Bank",
"image_url": "https://api.ticketing.cm.com/ticketingresourceapi/v1.0/resource/c21d7d9a-3bae-4415-aab2-0560bfccd729/content"
}
],
"viewport": {
"sales_type_id": "OPEN",
"max_order_amount": null
}
}
To calculate the total purchase amount, ticket fees and transaction fees can be applicable. Below you will find an explanation on how the calculation of the total purchase amount must be made.
The total purchase price can consist of:
If all of the above are applicable the calculation for the total purchase amount must be made using the calculation method below:
Sub_Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Total = ( Sub_Total x Payment_Method_Percentage_Fee ) + Fixed_Fee_Payment_Method
If only fixed fee per payment method is applicable the calculation for the total purchase amount must be made using the calculation method below:
Sub_Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Total = Sub_Total + Fixed_Fee_Payment_Method
If no fees applicable the calculation for the total purchase amount must be made using the calculation method below:
Total = ( Ticket_Price + Ticket_Fee ) x Amount ) + ( Ticket_Price + Ticket_Fee ) x Amount )
Discount, or a voucher can be applied to specific tickets or on a full order. By letting users enter the discount, or a voucher code and sending it along with the api request; the discount, or a voucher will be automatically applied on the concerning tickets.
Get discount or voucher codes data for a specific event.
GET https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/{event_uuid}/codes/{code}
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Path Variable | code | The discount or voucher code you want to check. This code must be base64 encoded. | True | RElTQ09VTlQxMjM= |
Http status | Description | Example |
---|---|---|
200 | Successful operation | Discount Or Voucher Code Object |
400 | Bad request | Info Message |
{
"discount_code": {
"code": "DISCOUNT123",
"external_code": null,
"fixed_balance": 0,
"percentage": 0,
"capacity": 100,
"stock": 93,
"discount_type_id": "DISCOUNT_TICKET_TYPE",
"description": {
"nl": "Korting",
"en": "Discount",
"fr": "Code promotionnel",
"de": "Rabatt"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"max_order_amount": 1,
"fixed_balance": 2
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"max_order_amount": 2,
"fixed_balance": 5
}
]
},
"voucher_code": null
}
{
"discount_code": null,
"voucher_code": {
"code": "VOUCHER123",
"external_code": null,
"balance": 420
}
}
In the ticket shop there could be a calendar to select ticket types for a specific time slot. This time slot can be added to a reservation (so the time on a location can be blocked for this customer.)
If the calendar function is enabled for an event, a time slot selection is mandatory.
First you need to collect the data of the whole month and later you can 'zoom in' on the day to get the time slots of that day. (Ticket types may vary per time slot.)
When the end-user selected their preferred time slot, the id of this time slot can be added to the create and update reservation end-point as the property 'time_slot_id'.
Get all event calendar data by year and month.
Note: the time slot id can not be used on the create and update reservation end-point when using the month end-point
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Path Variable | year | The year number of which you want to retrieve the calendar for. | True | 2020 |
Path Variable | month | The month number of which you want to retrieve the calendar for. | True | 01 |
Http status | Description | Example |
---|---|---|
200 | Successful operation | Time Slot Objects |
400 | Bad request | Info Message |
[
{
"id": "2019-05-01",
"start_at": "2019-04-30T22:00:00+00:00",
"end_at": "2019-05-01T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-02",
"start_at": "2019-05-01T22:00:00+00:00",
"end_at": "2019-05-02T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-03",
"start_at": "2019-05-02T22:00:00+00:00",
"end_at": "2019-05-03T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-04",
"start_at": "2019-05-03T22:00:00+00:00",
"end_at": "2019-05-04T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-05",
"start_at": "2019-05-04T22:00:00+00:00",
"end_at": "2019-05-05T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-06",
"start_at": "2019-05-05T22:00:00+00:00",
"end_at": "2019-05-06T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-07",
"start_at": "2019-05-06T22:00:00+00:00",
"end_at": "2019-05-07T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-08",
"start_at": "2019-05-07T22:00:00+00:00",
"end_at": "2019-05-08T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-09",
"start_at": "2019-05-08T22:00:00+00:00",
"end_at": "2019-05-09T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-10",
"start_at": "2019-05-09T22:00:00+00:00",
"end_at": "2019-05-10T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-11",
"start_at": "2019-05-10T22:00:00+00:00",
"end_at": "2019-05-11T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-12",
"start_at": "2019-05-11T22:00:00+00:00",
"end_at": "2019-05-12T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-13",
"start_at": "2019-05-12T22:00:00+00:00",
"end_at": "2019-05-13T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-14",
"start_at": "2019-05-13T22:00:00+00:00",
"end_at": "2019-05-14T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-15",
"start_at": "2019-05-14T22:00:00+00:00",
"end_at": "2019-05-15T21:59:59+00:00",
"status_id": "OPEN",
"stock": 286
},
{
"id": "2019-05-16",
"start_at": "2019-05-15T22:00:00+00:00",
"end_at": "2019-05-16T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-17",
"start_at": "2019-05-16T22:00:00+00:00",
"end_at": "2019-05-17T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-18",
"start_at": "2019-05-17T22:00:00+00:00",
"end_at": "2019-05-18T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-19",
"start_at": "2019-05-18T22:00:00+00:00",
"end_at": "2019-05-19T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-20",
"start_at": "2019-05-19T22:00:00+00:00",
"end_at": "2019-05-20T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-21",
"start_at": "2019-05-20T22:00:00+00:00",
"end_at": "2019-05-21T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-22",
"start_at": "2019-05-21T22:00:00+00:00",
"end_at": "2019-05-22T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-23",
"start_at": "2019-05-22T22:00:00+00:00",
"end_at": "2019-05-23T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-24",
"start_at": "2019-05-23T22:00:00+00:00",
"end_at": "2019-05-24T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-25",
"start_at": "2019-05-24T22:00:00+00:00",
"end_at": "2019-05-25T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-26",
"start_at": "2019-05-25T22:00:00+00:00",
"end_at": "2019-05-26T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-27",
"start_at": "2019-05-26T22:00:00+00:00",
"end_at": "2019-05-27T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0,
},
{
"id": "2019-05-28",
"start_at": "2019-05-27T22:00:00+00:00",
"end_at": "2019-05-28T21:59:59+00:00",
"status_id": "CLOSED",
"stock": 0
},
{
"id": "2019-05-29",
"start_at": "2019-05-28T22:00:00+00:00",
"end_at": "2019-05-29T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-30",
"start_at": "2019-05-29T22:00:00+00:00",
"end_at": "2019-05-30T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
},
{
"id": "2019-05-31",
"start_at": "2019-05-30T22:00:00+00:00",
"end_at": "2019-05-31T21:59:59+00:00",
"status_id": "OPEN",
"stock": 288
}
]
Get all event calendar data by year, month and day.
Note: the time slot id can now be used on the create and update reservation end-point as property 'time_slot_id'
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Path Variable | year | The year number of which you want to retrieve the calendar for. | True | 2020 |
Path Variable | month | The month number of which you want to retrieve the calendar for. | True | 01 |
Path Variable | day | The day number of which you want to retrieve the calendar for. | True | 31 |
Http status | Description | Example |
---|---|---|
200 | Successful operation | Time Slot Objects |
400 | Bad request | Info Message |
[
{
"id": "2019-05-01T10:00:00+00:00",
"start_at": "2019-05-01T10:00:00+00:00",
"end_at": "2019-05-01T10:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T10:30:00+00:00",
"start_at": "2019-05-01T10:30:00+00:00",
"end_at": "2019-05-01T11:00:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T11:00:00+00:00",
"start_at": "2019-05-01T11:00:00+00:00",
"end_at": "2019-05-01T11:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T11:30:00+00:00",
"start_at": "2019-05-01T11:30:00+00:00",
"end_at": "2019-05-01T12:00:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T12:00:00+00:00",
"start_at": "2019-05-01T12:00:00+00:00",
"end_at": "2019-05-01T12:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T12:30:00+00:00",
"start_at": "2019-05-01T12:30:00+00:00",
"end_at": "2019-05-01T13:00:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T13:00:00+00:00",
"start_at": "2019-05-01T13:00:00+00:00",
"end_at": "2019-05-01T13:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T13:30:00+00:00",
"start_at": "2019-05-01T13:30:00+00:00",
"end_at": "2019-05-01T14:00:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T14:00:00+00:00",
"start_at": "2019-05-01T14:00:00+00:00",
"end_at": "2019-05-01T14:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T14:30:00+00:00",
"start_at": "2019-05-01T14:30:00+00:00",
"end_at": "2019-05-01T15:00:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
},
{
"id": "2019-05-01T15:00:00+00:00",
"start_at": "2019-05-01T15:00:00+00:00",
"end_at": "2019-05-01T15:30:00+00:00",
"status_id": "OPEN",
"stock": 16,
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"nl": "Regular",
"en": "Regular",
"fr": "Regular",
"de": "Regular"
}
}
]
}
]
At the start of an order a reservation is made. The reservation contains the number of products to be purchased + the details of the person who places the order.
After the user made a product selection (and a time slot selection) in the shop you can make a reservation.
The reservation consists of the product selection and the customer data entered by the user.
After an order is placed successfully you will receive an order ID which can be used for the checkout.
Create a new reservation for a specific event.
POST https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/{event_uuid}/reservations
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Query Parameter | X-TF-CODE | In the case the discount codes are activated and used, the discount code needs to be send to our API. This can be done with a query parameter “code” in the URL. | False | DISCOUNT123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Body | Reservation Object | The reservation. | True | Reservation Object |
{
"order_id": null,
"due_at": null,
"time_slot_id" : null,
"customer_data": {
"uuid": null,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"mobile": "+31612345678",
"gender": "M",
"address_line_1": null,
"address_line_1_building_number": null,
"address_line_2": null,
"address_line_2_building_number": null,
"zipcode": null,
"city": null,
"state": null,
"organisation_name": null,
"position_name": null,
"date_of_birth": null,
"custom_field_1": null,
"custom_field_2": null,
"custom_field_3": null,
"created_at": null,
"updated_at": null,
"country_id": "NL"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 1
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 5
}
]
}
Http status | Description | Example |
---|---|---|
201 | Successful operation | Reservation Object |
400 | Bad request | Info Message |
{
"order_id": "CMTICKETS123XX",
"due_at": "2018-12-24T13:34:07+00:00",
"customer_data": {
"uuid": "00000000-0000-0000-0000-000000000000",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"mobile": "+31612345678",
"gender": "M",
"address_line_1": null,
"address_line_2": null,
"zipcode": null,
"city": null,
"state": null,
"organisation_name": null,
"position_name": null,
"date_of_birth": null,
"custom_field_1": null,
"custom_field_2": null,
"custom_field_3": null,
"created_at": null,
"updated_at": null,
"country_id": "NL"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 1
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 5
}
]
}
Update a reservation for a specific event.
PUT https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/{event_uuid}/reservations/{order_id}
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Query Parameter | X-TF-CODE | In the case the discount codes are activated and used, the discount code needs to be send to our API. This can be done with a query parameter “code” in the URL. | False | DISCOUNT123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Path Variable | order_id | The order_id which is returned in the response body of the post reservation call. | True | CMTICKETS123XX |
Body | Reservation Object | The reservation. | True | Reservation Object |
{
"time_slot_id" : null,
"order_id": "CMTICKETS123XX",
"due_at": "2018-12-24T13:34:07+00:00",
"customer_data": {
"uuid": "00000000-0000-0000-0000-000000000000",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"mobile": "+31612345678",
"gender": "M",
"address_line_1": null,
"address_line_2": null,
"zipcode": null,
"city": null,
"state": null,
"organisation_name": null,
"position_name": null,
"date_of_birth": null,
"custom_field_1": null,
"custom_field_2": null,
"custom_field_3": null,
"created_at": null,
"updated_at": null,
"country_id": "NL"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 1
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 5
}
]
}
Http status | Description | Example |
---|---|---|
200 | Successful operation | Reservation Object |
400 | Bad request | Info Message |
{
"order_id": "CMTICKETS123XX",
"due_at": "2018-12-24T13:34:07+00:00",
"time_slot_id" : null,
"customer_data": {
"uuid": "00000000-0000-0000-0000-000000000000",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"mobile": "+31612345678",
"gender": "M",
"address_line_1": null,
"address_line_1_building_number": null,
"address_line_2": null,
"address_line_2_building_number": null,
"zipcode": null,
"city": null,
"state": null,
"organisation_name": null,
"position_name": null,
"date_of_birth": null,
"custom_field_1": null,
"custom_field_2": null,
"custom_field_3": null,
"created_at": null,
"updated_at": null,
"country_id": "NL"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 1
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 5
}
]
}
This request creates a completed order. The reservation contains the number of products to be purchased + the details of the person who places the order.
The reservation consists of the product selection and the customer data entered by the user.
This order requires ticket types that have a price of 0.00 and will automatically complete the reservation.
Create a new free reservation for a specific event.
POST https://api.ticketing.cm.com/ticketingapi/v2.0/ticketshop/events/{event_uuid}/reservations/generate
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Body | Reservation Object | The reservation. | True | Reservation Object |
{
"customer_data": {
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"mobile": "+31612345678",
"gender": "M",
"address_line_1": null,
"address_line_1_building_number": null,
"address_line_2": null,
"address_line_2_building_number": null,
"zipcode": null,
"city": null,
"state": null,
"organisation_name": null,
"position_name": null,
"date_of_birth": null,
"custom_field_1": null,
"custom_field_2": null,
"custom_field_3": null,
"created_at": null,
"updated_at": null,
"country_id": "NL"
},
"ticket_types": [
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 1
},
{
"uuid": "00000000-0000-0000-0000-000000000000",
"amount": 5
}
]
}
Http status | Description | Example |
---|---|---|
201 | Successful operation | Reservation Object |
400 | Bad request | Info Message |
{
"order_id" : "CMTICKETS123XX",
"order_uuid": "00000000-0000-0000-0000-000000000000",
"customer_data_uuid": "00000000-0000-0000-0000-000000000000",
"download_url": "https://order.cmtickets.com/0000000000/00000000-0000-0000-0000-000000000000/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"barcodes": [
{
"barcode_id": "CMBR123AAAA",
"type": "QRCODE",
"ticket_type_uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"en": "Ticket Name",
"nl": "Ticketnaam",
"fr": "Nom du ticket",
"de": "Ticketname"
},
"subtitle": {
"en": "",
"nl": "",
"fr": "",
"de": ""
}
},
{
"barcode_id": "CMBR123AAAA",
"type": "QRCODE",
"ticket_type_uuid": "00000000-0000-0000-0000-000000000000",
"name": {
"en": "Ticket Name",
"nl": "Ticketnaam",
"fr": "Nom du ticket",
"de": "Ticketname"
},
"subtitle": {
"en": "",
"nl": "",
"fr": "",
"de": ""
}
}
]
}
The checkout handles the payment of the order. This endpoint returns a payment URL where customer can pay for the order.
Create a checkout/payment for a reservation, so you can finish the order.
Type | Name | Description | Required | Example |
---|---|---|---|---|
Header | X-TF-ACCESSKEY- | In some cases, an organiser wants to lock the ticket store. This can be done with our access key option. The end user has a key to unlock the ticket store. In the case the access keys are activated, the key needs to be send to our API. | False | KEY123 |
Header | Content-Type | The content type which the application expects. | True | application/json |
Path Variable | event_uuid | The UUID of an event can be retrieved from the Ticketing Dashboard. | True | 00000000-0000-0000-0000-000000000000 |
Path Variable | order_id | The id of an reservation can be retrieved from the create reservation end-point. | True | CMTICKETS123XX |
Body | Checkout Object | The checkout to make (JSON object.) | True | Checkout Object |
{
"order_id": "CMTICKETS123XX",
"payment_method_uuid": "00000000-0000-0000-0000-000000000000",
"ideal_issuer_id": "ABNANL2A",
"callback_urls": {
"success_url": "https://cm.com/success",
"failed_url": "https://cm.com/failed",
"cancelled_url": "https://cm.com/cancelled",
"expired_url": "https://cm.com/expired"
}
}
Http status | Description | Example |
---|---|---|
201 | Successful operation | Checkout Confirmation Object |
400 | Bad request | Info Message |
{
"order_id": "CMTICKETS123XX",
"due_at": "2020-01-31T23:59:59+00:00",
"status" : "OPEN",
"redirect_url": "https://cm.com/payment"
}