MENU navbar-image

Introduction

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

Base URL

app.crescat.io

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.

Festival

GET Festival List

requires authentication

Array of all festivals for your organization.

Example request:
curl --request GET \
    --get "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(
    "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

GET Festival Performance List

requires authentication

Example request:
curl --request GET \
    --get "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(
    "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

URL Parameters

festivalId  integer  

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

GET Festival Event List

requires authentication

Example request:
curl --request GET \
    --get "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(
    "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,
        }
     ],
     "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

URL Parameters

festivalId  integer  

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

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 "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(
    "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

URL Parameters

festivalId  integer  

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

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 "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(
    "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

URL Parameters

festivalId  integer  

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

Group

GET Group Event List

requires authentication

Get array of all events for your group

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

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,
        }
     ],
     "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

URL Parameters

start  string optional  

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

end  string optional  

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

GET Group Event Response Format

requires authentication

Get format of events returned when requesting events

Example request:
curl --request GET \
    --get "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(
    "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

Venue/Rooms

GET Venue Rooms List

requires authentication

Get array of all rooms on your venue

Example request:
curl --request GET \
    --get "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(
    "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

GET Room Booking List

requires authentication

Get array of all bookings for room

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

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

URL Parameters

roomId  integer  

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

start  string optional  

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

end  string optional  

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