Surfboard API (unstable)

Download OpenAPI specification:Download

This is the API specification for Surfboard. Our API is JSON-encoded and follows a REST style.

Authentication

To access the API, you can reach out to your customer success manager who will provide you securely with an access token which is valid for one year.

This token should be included in any requests you make to Surfboard’s API in the Authorization header in 'bearer token' format, like so:

curl 'https://api.teamsurfboard.com/...' \
  -H 'Authorization: Bearer ...'

API requests without authentication will fail.

Rate limiting

The API enforces a rate limit of 60 requests per minute to ensure stability. Once this limit is exceeded, the API will respond with a status code of 429.

Versioning

Over time, new endpoints will be made available and existing endpoints may evolve, but backwards compability will be maintained. Fields will not be removed from response payloads, but new fields may be added to existing endpoints.

Any backwards-incompatible changes will be made in a new version of the API, and existing versions will remain functional.

Get schedule

Returns the published schedule within the specified date range.

query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
}

Get tasks

Returns a list of all tasks.

query Parameters
page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get change requests

Returns all the shift change requests submitted by surfer.

query Parameters
state
Array of strings
Items Enum: "pending" "approved" "rejected" "void"
page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}

Get all surfers

Returns the surfers.

query Parameters
page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}

Create the surfer

Creates a new surfer in Surfboard.

Request Body schema: application/json
firstName
required
string
lastName
required
string
email
required
string
timezone
required
string
teamId
string

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "timezone": "string",
  • "teamId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Get surfer

Returns the surfer associated to the given ID.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "timezone": "string",
  • "teamId": "string"
}

Update the surfer

Updates the details of the surfer.

path Parameters
id
required
string
Request Body schema: application/json
firstName
string
lastName
string
timezone
string
teamId
string

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "timezone": "string",
  • "teamId": "string"
}

Response samples

Content type
application/json
{ }

Offboard the surfer

Offboard the surfer removing them from the schedule and any existing plan.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{ }

Get all managers

Returns the managers.

query Parameters
page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}

Create the manager

Creates a new manager in Surfboard.

Request Body schema: application/json
firstName
required
string
lastName
required
string
email
required
string

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Get manager

Returns the manager associated to the given ID.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string"
}

Update the manager

Updates the details of the manager.

path Parameters
id
required
string
Request Body schema: application/json
firstName
string
lastName
string

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string"
}

Response samples

Content type
application/json
{ }

Offboards the manager

Remove the mananger from Surfboard.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{ }

Get all the ticket groups

Returns the ticket groups used to categorize the work volume from other systems.

query Parameters
page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}

Get ticket group

Returns the ticket group.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "connectedTicketingSystem": "aircall"
}

Get all the forecasting data

Returns the forecasting prediction for the given interval.

path Parameters
ticketGroupId
required
string
query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}