Hereafter is the documentation of the private API of Pims: Pointages Intelligents pour le Monde du Spectacle. This API is designed for 3rd-party softwares, editors and partners. Its main purpose is to give access the core data of a Pims customer (i.e. events, ticket counts and promotions).
The API uses basic access authentication, meaning you will need a username and password to get authorized.
As each customer in Pims has its own domain (e.g. caramba.pims.io, gdp.pims.io…), each credentials will be valid for one domain/customer only. If you need dedicated credentials for one domain, please contact us. (In any case, we will need an explicit agreement from the customer before we create these credentials.)
The API returns JSON and matches the HAL specification. The Content-Type
of each response will be application/hal+json
, unless an error occurs.
Please note that this documentation describes all responses “as if” they were plain JSON. The specificities of HAL are ignored on purpose, in order to remain compact and avoid repetition.
{
"id": 123,
"property1": "Lorem ipsum",
"object": {
"id": 456,
"property2": 7.89
}
}
{
"id": 123,
"property2": "Lorem ipsum",
"_embedded": {
"object": {
"id": 456,
"property2": 7.89,
"_links": {
"self": {
"href": "https://api.mydomain.com/other-item/456"
}
}
}
}
"_links": {
"self": {
"href": "https://api.mydomain.com/item/123"
}
}
}
Errors return JSON too and tries to match the Problem Details for HTTP APIs specification. If it does not match this spec, that’s either a bug or a compatibility issue. Please contact us to solve the problem.
The Content-Type
of errors will be application/problem+json
. The content will match the following JSON:
{
"type": "https://tools.ietf.org/html/rfc2616#section-10",
"title": "Not Found",
"status": 404,
"detail": "Entity not found"
}
The API is fully versionned, using an URL-versioning scheme: https://demo.pims.io/api/v1/events
, https://demo.pims.io/api/v2/events
,…
The version part of the URL is optional, and will be completed with the last stable version if omitted.
All responses corresponding to a collection of resources (e.g. /venues
or /series/:id/events
) are paginated. When so, you will only get the first 25 resources you asked for.
If you need to get more resources in one call, you can use the page_size
query parameter. E.g. /venues?page_size=50
to get the 50 first venues.
Also note that with HAL, the navigation in paginated responses is a piece of cake, as you can see below:
{
"_links": {
"self": {
"href": "https://demo.pims.io/api/v1/events?page=1"
},
"first": {
"href": "https://demo.pims.io/api/v1/events"
},
"last": {
"href": "https://demo.pims.io/api/v1/events?page=14"
},
"next": {
"href": "https://demo.pims.io/api/v1/events?page=2"
}
},
"_embedded": {
... // data content goes here
},
"page_count": 14,
"page_size": 25,
"total_items": 331,
"page": 1
}
Every textual filter (e.g. /events?label=U2
) and/or sort (e.g. /events?sort=label
) performed with the API uses UTF8_UNICODE_CI collation, meaning it is:
When performing a sort, it will always be ascending by default. To make it descending, just use a minus sign (-
) in front of the parameter value (e.g. /events?sort=-label
).
In responses, some labels can be translated (e.g. promotion types, event input types, etc.). These translatable labels are clearly indicated in the documentation below.
By default, they will be displayed in English, but you can change this behaviour via the Accept-Language
header. E.g., use fr
as a value for French.
We provide a simple yet convenient SDK for the PHP language, see the Github page of the project.
Generaly, you will start by fetching one or more events. An event can be anything that occurs in one venue at one given date and time: a concert, a play, a match, a conference, etc. Additionnally, you can explore the series: a series is just a group of events (e.g. a tour or a festival).
Once you retrieved the events you were interested in, you can look for the sales (ticket counts):
/events/:id/ticket-counts
Eventually, you may also want to fetch the promotions. A promotion can be anything meant to leverage the sales: ads, marketing campaigns, buzz or news around the event, etc. A promotion can be linked to any combination of events and/or series.
Use this page to mock Pims in your testing and development.
Run our mock API sample using the open source WireMock library, or in the free edition of WireMock Cloud. You'll have a working API server simulating the behavior of Pims, which will allow you to keep building and testing even if the actual API you isn't currently available.