Due to PCI compliant reasons we're going to turn off support for TLS v1.0 on all of our servers.
Please check/update you API implementations to support TLS v1.2 until 29.06.2018

REST API DataSync

From XING Events Developer Documentation
Jump to: navigation, search

(19.05.2014) This API is deprecated, please use the new SYNC functionality version 2 from now on.
(20.01.2017) From now on new API keys do not get any v1 sync events anymore and no new sync events are created for old keys. You must use sync v2 from now on.

This page contains information about the data synchronization API

Overview

The data synchronization API can be used to get updates about changes to your events. These updates include creates, updates and deletes.

The API is implemented as a synchronization API which means that you only get the updates which happened since you last called the API. This is achieved by keeping an ID which always gets incremented. An example:

After your last call to the synchronization API you have received "1" as your next ID.
Now you can perodically call:
/api/sync/1

If there are new updates to be received you will for example get the following update:
GET /api/sync/1 -> {"events":[{"id":27,"operation":"update", ...}],"nextId":28,"success":true}

Now you know that an object was updated (More details about the updates are below)
and that you should use the ID "28" for you next call to the API:
/api/sync/28

NOTE: There are gaps in the IDs. This is intended.
If there are no updates, the answer will look like this:

GET /api/sync/28 -> {"events":[],"nextId":28,"success":true}

So you will receive the same ID again if no updates have happend.

You can periodically call the API. It is written to be called quite often, for example, every 30 seconds.

If you have lost the ID to be called or if you have to do a fresh sync, you can call a so called resync which will deliver you every reachable object through the API. Note that is operation is quite costly and should only be used rarely.

So, a complete example would look like this:

You dont have your ID, so you have to call resync:
POST /api/sync/resync -> {"nextId":103,"success":true}

Now you will first get every reachable object with the "resync" operation:
GET /api/sync/103
-> {"events":[{"id":103,"operation":"resync", ...}, {"id":104,"operation":"resync", ...}, ...],"nextId":278,"success":true}
GET /api/sync/278
-> {"events":[{"id":278,"operation":"resync", ...}, {"id":288,"operation":"resync", ...}, ...],"nextId":356,"success":true}

After you received every object as resync, the normal sync will continue,
so you will receive the normal creates, updates, deletes.

Properties

Attributes: R - accessible in read requests W - accessible in write (update) requests C - accessible in create requests

Property
Type
Attributes Description
id
Integer
R--
The internal id of this object.
operation
String
R--
The operation that was performed (resync, create, update, delete). See below for details.
objectType String R--
The type of the main object (user, event etc). See below for details.
objectId
Integer
R--
The id of the main object.
returnedObjectType String R--
The type of the returned object (user, event, address etc). See below for details.
path
String
R--
The path for accessing the object. See below for details about how deletions are handled

Detailed description of the properties

operation

The operation property can hold the following values:

"resync": A resync operation means that this sync event has been triggered by a request to the
/api/sync/resync method. You will get every reachable object once if you trigger a resync
"create": This means that the referenced object has been created on XING Events.
Examples for this are new ticket purchases.
"update": An update operation is triggered if the value of an object has been changed.
"delete": A delete means that the referenced object is no longer available.
Note that you cannot access the object if it has been deleted

objectType

The object type describes the main object which is references. An example:

You receive an update for /api/user/<objectId>.
Here the objectType will be "user" and the returned object type will also be "user".

You receive an update for /api/user/<objectId>/address/billing.
Here the objectType will be "user" but the returned object type will be "address".

The following object types are available:

"user": Means that the main object is a user referenced by /api/user/<objectId>
"event": Means that the main object is a event referenced by /api/event/<objectId>
"ticket": Means that the main object is a ticket referenced by /api/ticket/<objectId>
"payment": Means that the main object is a payment referenced by /api/payment/<objectId>

objectId

The object is the id corresponding to the main object type. An Example:

The objectType is "user" and the objectId is 342.
Then you could access this object through: /api/user/342

returnedObjectType

The returnedObjectType describes what type of object you will receive if you load the object. An example:

You receive an update for /api/user/<objectId>.
Here the objectType will be "user" and the returned object type will also be "user".

You receive an update for /api/user/<objectId>/address/billing.
Here the objectType will be "user" but the returned object type will be "address".

See also: all object types.

path

The path tells you where you can access the mentioned object. If you receive an "update" event, you can use the path to load the new values from XING Events. An example:

You receive an update about the billing address of a user.
The path will be: "/api/user/542/address/billing"

Methods

Read

Call GET /api/sync/<id>
Description This request will return a list of sync events starting with the ID you provided
Parameters maxResults: Defines the maximum number of sync events to be returned. Default: 50. Maximum: 200
Response {"events":[{"id":27,"operation":"update", ...}],"nextId":28,"success":true} for a new update
{"events":[],"nextId":28,"success":true} if there are no updates
Errors See General Errorcodes.

Resync

Call POST /api/sync/resync
Parameters None
Description This request will trigger the resync operation. Note that depending on the amount of data, this operation can take a long time and is quite costly.
Response {"nextId":<next id>,"success":true}.
Errors See General Errorcodes.
REST API Contents
Getting Started Get your API key Overview Formats Errors
Data Types Event Participant Payment Ticket
Ticket Categories ProductDefinition Products CodeDefinition
TicketShop Addresses Ticket Types Payment Types
BankAccount UserDataDefinition UserData User
ApiKey
Data Synchronization Sync Interface