Teambridge External API (0.1.0)

Download OpenAPI specification:

External API for Teambridge platform.

Date-Time Format: All date-time fields in this API use ISO 8601 format with timezone information (YYYY-MM-DDTHH:MM:SSZ). Examples: 2025-06-05T09:00:00Z (UTC), 2025-06-05T09:00:00-07:00 (with timezone offset).

Authentication: This API uses OAuth 2.0 Client Credentials flow for authentication.

Collections (Unified API)

Powerful generic endpoints for reading and writing any collection type. Works with all collections using field UUIDs. Query /fields first to discover the schema, then use these endpoints for flexible data access across all collection types (shifts, users, placements, locations, custom collections, etc.).

List collections

Returns metadata about all collections for the account associated with the provided access token.

Authorizations:
OAuth2

Responses

Response samples

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

Retrieve field metadata for a collection

Returns all field definitions for a collection, including field identifiers, names, types, write format hints, select options (for native selects), and linked collection IDs (for link-to-object fields). Use this endpoint to discover the schema before reading or writing records.

Authorizations:
OAuth2
path Parameters
collectionId
required
string <uuid>

Unique ID of the collection

Responses

Response samples

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

List records in a collection

Returns a paginated list of records for a collection. Each record is represented as a map of field UUIDs to values. Use the /fields endpoint first to get field metadata (names, types, write format hints) to interpret the data.

Authorizations:
OAuth2
path Parameters
collectionId
required
string <uuid>

Unique ID of the collection

query Parameters
page
required
integer >= 0
Default: 0

Zero-based page index

size
required
integer [ 1 .. 50 ]
Default: 20

Number of records per page (maximum 50)

Responses

Response samples

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

Create a new record

Creates a new record in the collection. The request body should contain a map of field UUIDs to string values. Use the /fields endpoint to discover field IDs and their expected write formats (writeFormatHint).

Authorizations:
OAuth2
path Parameters
collectionId
required
string <uuid>

Unique ID of the collection

Request Body schema: application/json
required
required
object

Map of field UUIDs to string values. Keys are the field identifiers (UUIDs), values are the field values formatted according to the field's writeFormatHint.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": "Resource created with ID: 123e4567-e89b-12d3-a456-426614174000",
  • "error": null
}

Get a single record by ID

Returns a single record identified by its UUID. The record is represented as a map of field UUIDs to values. Use the /fields endpoint to get field metadata.

Authorizations:
OAuth2
path Parameters
collectionId
required
string <uuid>

Unique ID of the collection

recordId
required
string <uuid>

Unique ID of the record

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Update an existing record

Updates an existing record. The request body should contain a map of field UUIDs to string values for the fields you want to update. Only include fields that need to be changed. Use the /fields endpoint to discover field IDs and write formats.

Authorizations:
OAuth2
path Parameters
collectionId
required
string <uuid>

Unique ID of the collection

recordId
required
string <uuid>

Unique ID of the record to update

Request Body schema: application/json
required
required
object

Map of field UUIDs to string values. Keys are the field identifiers (UUIDs), values are the field values formatted according to the field's writeFormatHint.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Shifts

Specialized endpoints for shifts with strongly-typed DTOs. Returns only standard shift fields. For custom fields or more flexible data access, use the unified Collections API instead.

Get paginated shifts (standard fields only)

Returns a paginated list of shifts with standard fields only (start/end times, user, location, pay rates, etc.). Does not include custom fields. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records). Maximum 50 shifts per page with 0-based pagination (page 0 is the first page).

Authorizations:
OAuth2
query Parameters
page
required
integer >= 0
Default: 0

Zero-based page number for pagination (page 0 is the first page)

size
required
integer [ 1 .. 50 ]
Default: 20

Number of shifts per page (max 50)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Create shifts (standard fields only)

Creates multiple shifts with standard fields only (max 50 per request). Does not support setting custom fields. For custom fields, use the unified Collections API (POST /v1/collections/{collectionId}/records).

Roles: When creating shifts with roles, you can specify up to 10 role names per shift. If a role with the specified name does not exist, it will be automatically created.

Authorizations:
OAuth2
Request Body schema: application/json
required
required
Array of objects (CreateShiftRequest) <= 50 items

List of shifts to create (max 50)

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Get shift by ID (standard fields only)

Returns a single shift with standard fields only. Does not include custom fields. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records/{recordId}).

Authorizations:
OAuth2
path Parameters
shiftId
required
string <uuid>

UUID of the shift to retrieve

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Get paginated shift timestamps (standard fields only)

Returns a paginated list of shift timestamp records with standard fields only (scheduled times, clock in/out times, shift IDs). Does not include custom fields. For custom fields, use the unified Collections API. 0-based pagination (page 0 is the first page).

Authorizations:
OAuth2
query Parameters
page
required
integer >= 0
Default: 0

Zero-based page number for pagination (page 0 is the first page)

size
required
integer >= 1
Default: 20

Number of timestamp records per page

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Placements

Specialized endpoints for placements with strongly-typed DTOs. Returns only standard placement fields. For custom fields or more flexible data access, use the unified Collections API instead.

Get paginated placements (standard fields only)

Returns a paginated list of placements with standard fields only (job, user, roles, dates, rates, stage, etc.). Does not include custom fields. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records). Maximum 50 placements per page with 0-based pagination (page 0 is the first page).

Authorizations:
OAuth2
query Parameters
page
required
integer >= 0
Default: 0

Zero-based page number for pagination (page 0 is the first page)

size
required
integer [ 1 .. 50 ]
Default: 20

Number of placements per page (max 50)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Create placements (standard fields only)

Creates multiple placements with standard fields only (max 50 per request). Does not support setting custom fields. For custom fields, use the unified Collections API (POST /v1/collections/{collectionId}/records).

Authorizations:
OAuth2
Request Body schema: application/json
required
required
Array of objects (CreatePlacementRequest) <= 50 items

List of placements to create (max 50)

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": { },
  • "error": null
}

Users

Specialized endpoints for users with strongly-typed DTOs. Returns only standard user fields. For custom fields or more flexible data access, use the unified Collections API instead.

Get paginated list of active users (standard fields only)

Returns a paginated list of active users with standard fields only (name, email, phone, date of birth, etc.). Does not include custom fields or archived users. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records). 0-based pagination (page 0 is the first page).

Authorizations:
OAuth2
query Parameters
page
required
integer >= 0
Default: 0

Zero-based page number for pagination (page 0 is the first page)

size
required
integer >= 1
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Create users in bulk (standard fields only)

Creates users with standard fields only (max 200 per request). Does not support setting custom fields. For custom fields, use the unified Collections API (POST /v1/collections/{collectionId}/records). This operation is atomic (all-or-nothing).

Authorizations:
OAuth2
Request Body schema: application/json
required
required
Array of objects (CreateUserRequest)

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Get user by attribute (standard fields only)

Retrieve a user by email or phone number with standard fields only. At least one of email or phone must be provided. Does not include custom fields. For custom fields, use the unified Collections API.

Authorizations:
OAuth2
query Parameters
email
string <email>

The email address of the user.

phone
string

The phone number of the user.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Get user by record ID (standard fields only)

Returns a user by record ID with standard fields only. Returns null if the user does not exist or does not belong to the authenticated account. Does not include custom fields. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records/{recordId}).

Authorizations:
OAuth2
path Parameters
recordId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Jobs

Specialized endpoints for jobs with strongly-typed DTOs. Returns only standard job fields. For custom fields or more flexible data access, use the unified Collections API instead.

Get paginated jobs (standard fields only)

Returns a paginated list of jobs with standard fields only (name, description, location, dates, rates, status, etc.). Does not include custom fields. For custom fields, use the unified Collections API (/v1/collections/{collectionId}/records). 0-based pagination (page 0 is the first page).

Authorizations:
OAuth2
query Parameters
page
required
integer >= 0
Default: 0

Zero-based page number for pagination (page 0 is the first page)

size
required
integer >= 1
Default: 20

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Create one or more jobs (standard fields only)

Creates jobs with standard fields only (max 50 per request). Does not support setting custom fields. For custom fields, use the unified Collections API (POST /v1/collections/{collectionId}/records).

Authorizations:
OAuth2
Request Body schema: application/json
required
required
Array of objects (CreateJobRequest)

Responses

Request samples

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

Response samples

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

Locations

Specialized endpoints for locations with strongly-typed DTOs. Returns only standard location fields. For custom fields or more flexible data access, use the unified Collections API instead.

Get location by ID

Returns a single location by its UUID for the authenticated account.

Authorizations:
OAuth2
path Parameters
locationId
required
string <uuid>

UUID of the location to retrieve

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "error": null
}

Get supported timezones

Returns a list of all supported timezone identifiers, sorted alphabetically.

Authorizations:
OAuth2

Responses

Response samples

Content type
application/json
[
  • "America/Los_Angeles",
  • "America/New_York",
  • "Europe/London",
  • "Asia/Tokyo"
]

Documents

Endpoints for uploading and managing documents.

Upload a document

Uploads a document file with optional metadata for the authenticated account.

Important: This endpoint requires multipart/form-data content type for file upload.

Limits:

  • Maximum file size: 100MB
  • Maximum roles per document: 10

The request consists of two parts:

  • file: The document file to upload (required)
  • request: JSON metadata for the document (optional)
Authorizations:
OAuth2
Request Body schema: multipart/form-data
required
file
required
string <binary>

The document file to upload (max 100MB)

object (CreateDocumentRequest)

Responses

Response samples

Content type
application/json
{}