MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by contacting Crescat on contact@crescat.no.

Group

GET Group Event List

requires authentication

Get array of all events for your group

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/calendar?start=vel&end=veritatis" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/calendar"
);

const params = {
    "start": "vel",
    "end": "veritatis",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 [
   {
     "id": 1,
     "name": "Event Name",
     "start": 2000-01-01 12:00:00,
     "end": 2000-01-01 15:00:00,
     "event_type_id": 1,
     "fields": [
       {
         "id": 1,
         "show_time_id": 1,
         "value": *,
        }
        for details on formatting: see event field format
     ],
     "show_times": [
       {
         "id": 1,
         "title": "Show Title",
         "start": 2000-01-01 12:00:00,
         "end": 2000-01-01 15:00:00,
         "room_id": 1,
        }
     ],
     "rooms": [
       {
         "id": 1,
         "name": "Room Name",
         "title": "Show Title",
         "start": 2000-01-01 12:00:00,
         "end": 2000-01-01 15:00:00,
        }
     ],
   }
 ]
}
 

Request      

GET external/v1/calendar

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

start   string  optional  

Start of dates to query.
If not provided: today.
Format: 2000-01-01 Example: vel

end   string  optional  

End of dates to query.
If not provided: today.
Format: 2000-01-01 Example: veritatis

GET Group Event Response Format

requires authentication

Get format of events returned when requesting events

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/calendar/format" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/calendar/format"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 event_types [
   {
     "id": 1,
     "name": "Event Type",
   }
 ],
 fields [
   {
     "id": 1,
     "title": "Title of Your Field",
     "format": String,
   }
 ]

Formats of Fields:
 String
 Rich formatted Text
 Date (2000-01-01)
 Time (12:00:00)
 Document url
 Boolean
}
 

Example response (401, Festival Not Found: either not existing, or not your festival.):



 

Request      

GET external/v1/calendar/format

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Venue/Rooms

GET Venue Rooms List

requires authentication

Get array of all rooms on your venue

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/rooms" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/rooms"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 [
   {
     "id": 1,
     "name": "Room Name",
   }
 ]
}
 

Request      

GET external/v1/rooms

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET Room Booking List

requires authentication

Get array of all bookings for room

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/rooms/1/calendar?start=impedit&end=enim" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/rooms/1/calendar"
);

const params = {
    "start": "impedit",
    "end": "enim",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 [
   {
     "id": 1,
     "name": "Event Name",
     "start": 2000-01-01 12:00:00,
     "end": 2000-01-01 15:00:00,
   }
 ]
}
 

Request      

GET external/v1/rooms/{roomId}/calendar

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

roomId   integer   

The id of the room you want to get calendar for. Example: 1

Query Parameters

start   string  optional  

Start of dates to query.
If not provided: today.
Format: 2000-01-01 Example: impedit

end   string  optional  

End of dates to query.
If not provided: today.
Format: 2000-01-01 Example: enim

Festival

GET Festival List

requires authentication

Array of all festivals for your organization.

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/festivals" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/festivals"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
Array of all festivals for your organization.
 [
   {
     "id": 1,
     "name": "Name of Your Festival",
     "start": 2000-01-01 12:00:00,
     "end": 2000-01-01 15:00:00,
   }
 ]
}
 

Request      

GET external/v1/festivals

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET Festival Performance List

requires authentication

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/festivals/1/performances" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/festivals/1/performances"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 [
   {
     "id": 1,
     "name": "Performance Name",
     "type": "Performance Type",
      "fields": [
       {
         "id": 1,
         "value": *,
        }
        for details on formatting: see performance field format
     ],
     "events": [
       {
         "id": 1,
         "name": "Name of Event",
        }
     ],
   }
 ]
}
 

Request      

GET external/v1/festivals/{festivalId}/performances

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

festivalId   integer   

The id of the festival you want to get performances for. Example: 1

GET Festival Performance Response Format & Definitions

requires authentication

Get format of all performance fields that will be included when requesting performances

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/festivals/1/performances/format" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/festivals/1/performances/format"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 fields [
   {
     "id": 1,
     "title": "Title of Your Field",
     "format": String,
   }
 ]

Formats of Fields:
 String
 Rich formatted Text
 Date (2000-01-01)
 Time (12:00:00)
 Document url
 Boolean
}
 

Example response (401, Festival Not Found: either not existing, or not your festival.):



 

Request      

GET external/v1/festivals/{festivalId}/performances/format

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

festivalId   integer   

The id of the festival you want to get performances for. Example: 1

GET Festival Event List

requires authentication

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/festivals/1/events" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/festivals/1/events"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 [
   {
     "id": 1,
     "name": "Event Name",
     "start_date": 2000-01-01,
     "end_date": 2000-01-01,
     "production_period": [
         "start": 2000-01-01 12:00:00,
         "end": 2000-01-01 15:00:00,
     ],
     "fields": [
       {
         "id": 1,
         "show_time_id": 1,
         "value": *,
        }
        for details on formatting: see event field format
     ],
     "show_times": [
       {
         "id": 1,
         "title": "Show Title",
         "start": 2000-01-01 12:00:00,
         "end": 2000-01-01 15:00:00,
         "room_id": 1,
        }
     ],
     "festival_resources": [
       {
         "id": 1,
         "name": "Festival Resource",
        }
     ],
     "rooms": [
       {
         "id": 1,
         "title": "Show Title",
         "start": 2000-01-01 12:00:00,
         "end": 2000-01-01 15:00:00,
        }
     ],
     "performances": [
       {
         "id": 1,
         "name": "Performance Name",
        }
     ],
     "venue": {
         "id": 1,
         "name": "Venue Name",
         "address": "Venue Address",
         "city": "Venue City",
         "postal_code": "Postal Code",
         "country": "Country",
         "website": "Website",
         "phone": "Phone",
        },
   }
 ]
}
 

Request      

GET external/v1/festivals/{festivalId}/events

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

festivalId   integer   

The id of the festival you want to get events for. Example: 1

GET Festival Event Response Format & Definitions

requires authentication

Get format and info from fields that will be included when requesting events

Example request:
curl --request GET \
    --get "https://app.crescat.io/external/v1/festivals/1/events/format" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.crescat.io/external/v1/festivals/1/events/format"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 fields [
   {
     "id": 1,
     "title": "Title of Your Field",
     "format": String,
   }
 ],
 festival_event_types [
   {
     "id": 1,
     "name": "Concert",
   }
 ]

Formats of Fields:
 String
 Rich formatted Text
 Date (2000-01-01)
 Time (12:00:00)
 Document url
 Boolean
}
 

Example response (401, Festival Not Found: either not existing, or not your festival.):



 

Request      

GET external/v1/festivals/{festivalId}/events/format

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

festivalId   integer   

The id of the festival you want to get events for. Example: 1