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.
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.).
Returns metadata about all collections for the account associated with the provided access token.
{- "metadata": {
- "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9",
- "count": 1
}, - "collections": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "Shifts"
}
]
}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.
| collectionId required | string <uuid> Unique ID of the collection |
{- "data": [
- {
- "id": "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1",
- "name": "First Name",
- "readOnly": false,
- "type": "TEXT",
- "writeFormatHint": "plain_text"
}, - {
- "id": "df14fac6-ce85-480b-a5a8-0e5b90471205",
- "name": "Last Name",
- "readOnly": false,
- "type": "TEXT",
- "writeFormatHint": "plain_text"
}, - {
- "id": "199c7b23-5ba6-4cf4-a778-6da9394b7884",
- "name": "Email",
- "readOnly": false,
- "type": "EMAIL",
- "writeFormatHint": "email"
}, - {
- "id": "f7958d78-9e4c-4d23-a16e-ac732636b281",
- "name": "Phone",
- "readOnly": false,
- "type": "PHONE",
- "writeFormatHint": "e164_phone"
}, - {
- "id": "7064ba02-0ba2-48ca-9d0d-3698630b0050",
- "name": "Date of Birth",
- "readOnly": false,
- "type": "DATETIME",
- "writeFormatHint": "iso8601_datetime"
}, - {
- "id": "39336d37-1d19-4b84-9bf9-6d8e88938558",
- "name": "Certifications",
- "readOnly": false,
- "type": "LINK_TO_ROLE",
- "writeFormatHint": "comma_separated_uuids",
- "linkedCollectionId": "7822e1fa-dfde-4090-bf1e-bb41a31c763f"
}, - {
- "id": "e33d4a71-5140-4a30-afc7-567471a89c39",
- "name": "Assigned Facilities",
- "readOnly": false,
- "type": "LINK_TO_LOCATION",
- "writeFormatHint": "comma_separated_uuids",
- "linkedCollectionId": "b8e9e5a9-074d-4df2-a95a-4c8dbd5d8781"
}, - {
- "id": "1d566c20-accd-450f-afad-8c572f176bd0",
- "name": "Employment Status",
- "readOnly": false,
- "type": "SINGLE_SELECT",
- "writeFormatHint": "single_uuid",
- "selectOptions": [
- {
- "id": "bb31a869-2e73-4468-ab94-73ea256e08a2",
- "name": "Full-Time"
}, - {
- "id": "68ddbd25-b819-4362-add1-9c87c079515c",
- "name": "Part-Time"
}, - {
- "id": "4bfabc6f-f512-4c48-849b-8c94b83c215e",
- "name": "Per Diem"
}
]
}, - {
- "id": "5ef9a0a5-f7e5-42a7-af8c-927a9057c839",
- "name": "Specialties",
- "readOnly": false,
- "type": "MULTI_SELECT",
- "writeFormatHint": "comma_separated_uuids",
- "selectOptions": [
- {
- "id": "641367e5-0c24-4eb4-8b32-eda6a87540f3",
- "name": "ICU"
}, - {
- "id": "89667f7f-cc87-4246-9f10-e0cfe13fdd8c",
- "name": "ER"
}, - {
- "id": "4374192c-ece1-4475-9372-23dbe0f98527",
- "name": "Surgery"
}
]
}, - {
- "id": "0fe6e99f-8e3a-4f21-b315-3b149bcdf2f7",
- "name": "Created At",
- "readOnly": true,
- "type": "COMPUTED"
}, - {
- "id": "a943302a-5b1e-4ba9-b4c0-728c8e7fe2bd",
- "name": "Home Address",
- "readOnly": false,
- "type": "ADDRESS",
- "writeFormatHint": "plain_text"
}
], - "error": null
}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.
| collectionId required | string <uuid> Unique ID of the collection |
| page required | integer >= 0 Default: 0 Zero-based page index |
| size required | integer [ 1 .. 50 ] Default: 20 Number of records per page (maximum 50) |
{- "data": [
- {
- "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1": "Sarah",
- "df14fac6-ce85-480b-a5a8-0e5b90471205": "Johnson",
- "199c7b23-5ba6-4cf4-a778-6da9394b7884": "sarah.johnson@hospital.com",
- "f7958d78-9e4c-4d23-a16e-ac732636b281": "+14155551234",
- "8d74ff97-4cb5-49c8-af77-a3d98af4b1c2": false,
- "ade2b23c-6a3b-49fe-bc13-d37b0c39941c": 1234,
- "0fe6e99f-8e3a-4f21-b315-3b149bcdf2f7": "2024-01-15T10:30:00Z"
}
], - "error": null
}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).
| collectionId required | string <uuid> Unique ID of the collection |
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. |
{- "data": {
- "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1": "Sarah",
- "df14fac6-ce85-480b-a5a8-0e5b90471205": "Johnson",
- "199c7b23-5ba6-4cf4-a778-6da9394b7884": "sarah.johnson@hospital.com",
- "f7958d78-9e4c-4d23-a16e-ac732636b281": "+14155551234",
- "7064ba02-0ba2-48ca-9d0d-3698630b0050": "1985-03-15T00:00:00Z",
- "39336d37-1d19-4b84-9bf9-6d8e88938558": "bb31a869-2e73-4468-ab94-73ea256e08a2,68ddbd25-b819-4362-add1-9c87c079515c",
- "1d566c20-accd-450f-afad-8c572f176bd0": "4bfabc6f-f512-4c48-849b-8c94b83c215e"
}
}{- "data": "Resource created with ID: 123e4567-e89b-12d3-a456-426614174000",
- "error": null
}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.
| collectionId required | string <uuid> Unique ID of the collection |
| recordId required | string <uuid> Unique ID of the record |
{- "data": {
- "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1": "Sarah",
- "df14fac6-ce85-480b-a5a8-0e5b90471205": "Johnson",
- "199c7b23-5ba6-4cf4-a778-6da9394b7884": "sarah.johnson@hospital.com",
- "f7958d78-9e4c-4d23-a16e-ac732636b281": "+14155551234",
- "8d74ff97-4cb5-49c8-af77-a3d98af4b1c2": false,
- "ade2b23c-6a3b-49fe-bc13-d37b0c39941c": 1234,
- "0fe6e99f-8e3a-4f21-b315-3b149bcdf2f7": "2024-01-15T10:30:00Z"
}, - "error": null
}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.
| collectionId required | string <uuid> Unique ID of the collection |
| recordId required | string <uuid> Unique ID of the record to update |
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. |
{- "data": {
- "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1": "Sarah",
- "df14fac6-ce85-480b-a5a8-0e5b90471205": "Johnson",
- "199c7b23-5ba6-4cf4-a778-6da9394b7884": "sarah.johnson@hospital.com",
- "f7958d78-9e4c-4d23-a16e-ac732636b281": "+14155551234",
- "7064ba02-0ba2-48ca-9d0d-3698630b0050": "1985-03-15T00:00:00Z",
- "39336d37-1d19-4b84-9bf9-6d8e88938558": "bb31a869-2e73-4468-ab94-73ea256e08a2,68ddbd25-b819-4362-add1-9c87c079515c",
- "1d566c20-accd-450f-afad-8c572f176bd0": "4bfabc6f-f512-4c48-849b-8c94b83c215e"
}
}{- "data": {
- "c5a8e667-fe00-4c18-a559-84bfdbf7e8d1": "Sarah",
- "df14fac6-ce85-480b-a5a8-0e5b90471205": "Johnson",
- "199c7b23-5ba6-4cf4-a778-6da9394b7884": "sarah.johnson@hospital.com",
- "f7958d78-9e4c-4d23-a16e-ac732636b281": "+14155551234",
- "8d74ff97-4cb5-49c8-af77-a3d98af4b1c2": false,
- "ade2b23c-6a3b-49fe-bc13-d37b0c39941c": 1234,
- "0fe6e99f-8e3a-4f21-b315-3b149bcdf2f7": "2024-01-15T10:30:00Z"
}, - "error": null
}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.
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).
| 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) |
{- "data": {
- "data": [
- {
- "recordId": "550e8400-e29b-41d4-a716-446655440000",
- "startAt": "2025-06-05T09:00:00Z",
- "endAt": "2025-06-05T17:00:00Z",
- "published": true,
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "locationId": "789e0123-e89b-12d3-a456-426614174002",
- "clockIn": "2025-06-05T08:55:00Z",
- "clockOut": "2025-06-05T17:05:00Z",
- "openCount": 1,
- "bonus": 100,
- "payRate": 38.5,
- "billRate": 55,
- "billBonus": 150,
- "hoursWorkedMilliseconds": 28800000,
- "hoursScheduledMilliseconds": 28800000,
- "timezone": "America/Los_Angeles",
- "roles": [
- "nurse",
- "cna"
]
}
], - "page": 0,
- "size": 20,
- "totalCount": 150
}, - "error": null
}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.
required | Array of objects (CreateShiftRequest) <= 50 items List of shifts to create (max 50) |
{- "shifts": [
- {
- "startAt": "2025-06-05T09:00:00Z",
- "endAt": "2025-06-05T17:00:00Z",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "locationId": "789e0123-e89b-12d3-a456-426614174002",
- "payRate": 38.5,
- "billRate": 55,
- "timezone": "America/Los_Angeles",
- "clockIn": "2025-06-05T08:55:00Z",
- "clockOut": "2025-06-05T17:05:00Z",
- "roles": [
- "nurse",
- "cna"
]
}
]
}{- "data": {
- "created": [
- {
- "recordId": "550e8400-e29b-41d4-a716-446655440000",
- "startAt": "2025-06-05T09:00:00Z",
- "endAt": "2025-06-05T17:00:00Z",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "locationId": "789e0123-e89b-12d3-a456-426614174002",
- "payRate": 38.5,
- "billRate": 55,
- "timezone": "America/Los_Angeles",
- "clockIn": "2025-06-05T08:55:00Z",
- "clockOut": "2025-06-05T17:05:00Z",
- "hoursScheduledMillis": 28800000,
- "hoursWorkedMillis": 28800000,
- "roles": [
- "nurse",
- "cna"
]
}
]
}, - "error": null
}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}).
| shiftId required | string <uuid> UUID of the shift to retrieve |
{- "data": {
- "recordId": "550e8400-e29b-41d4-a716-446655440000",
- "startAt": "2025-06-05T09:00:00Z",
- "endAt": "2025-06-05T17:00:00Z",
- "published": true,
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "locationId": "789e0123-e89b-12d3-a456-426614174002",
- "clockIn": "2025-06-05T08:55:00Z",
- "clockOut": "2025-06-05T17:05:00Z",
- "openCount": 1,
- "bonus": 100,
- "payRate": 38.5,
- "billRate": 55,
- "billBonus": 150,
- "hoursWorkedMilliseconds": 28800000,
- "hoursScheduledMilliseconds": 28800000,
- "timezone": "America/Los_Angeles",
- "roles": [
- "nurse",
- "cna"
]
}, - "error": null
}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).
| 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 |
{- "data": {
- "data": [
- {
- "internalId": "6868d0ce-34a2-4e78-b137-31229ba3e81a",
- "externalId": "3200d382-adfe-4314-ab30-798cdd0fcdb5",
- "scheduledStartTime": "2025-06-05T17:00:00Z",
- "scheduledEndTime": "2025-06-06T01:00:00Z",
- "clockInTime": "2025-06-05T16:47:00Z",
- "clockOutTime": "2025-06-06T00:45:00Z",
- "createdAt": "2025-06-03T09:00:00Z",
- "updatedAt": "2025-06-06T00:45:00Z"
}
], - "page": 0,
- "size": 20,
- "totalCount": 102
}, - "error": null
}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.
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).
| 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) |
{- "data": {
- "data": [
- {
- "recordId": "550e8400-e29b-41d4-a716-446655440000",
- "job": "Travel Nurse - ICU",
- "name": "13-Week ICU Assignment - UCSF",
- "description": "Travel nursing assignment in the Intensive Care Unit providing critical care to patients",
- "startDate": "2025-01-01T00:00:00Z",
- "endDate": "2025-12-31T23:59:59Z",
- "roles": [
- "icu-nurse",
- "charge-nurse"
], - "location": "UCSF Medical Center, San Francisco, CA",
- "hoursPerWeek": 40,
- "yearsOfExperience": 5,
- "hourlyRate": 75.5,
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "supervisorId": "456e7890-e89b-12d3-a456-426614174001",
- "notes": "Housing stipend provided, requires BLS certification",
- "stage": "Published",
- "published": true
}
], - "page": 0,
- "size": 20,
- "totalCount": 25
}, - "error": null
}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).
required | Array of objects (CreatePlacementRequest) <= 50 items List of placements to create (max 50) |
{- "placements": [
- {
- "jobId": "789e0123-e89b-12d3-a456-426614174002",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "stage": "Published",
- "supervisorId": "456e7890-e89b-12d3-a456-426614174001",
- "notes": "Housing stipend provided, requires BLS certification",
- "published": true,
- "startDate": "2025-01-01T00:00:00Z",
- "endDate": "2025-12-31T23:59:59Z",
- "hoursPerWeek": 40
}
]
}{- "data": { },
- "error": null
}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.
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).
| 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 |
{- "data": {
- "data": [
- {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "firstName": "Sarah",
- "lastName": "Johnson",
- "email": "sarah.johnson@email.com",
- "phone": "+1-415-555-1234",
- "dateOfBirth": "1936-08-17"
}
], - "page": 0,
- "size": 20,
- "totalCount": 1
}, - "error": null
}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).
required | Array of objects (CreateUserRequest) |
{- "users": [
- {
- "firstName": "string",
- "lastName": "string",
- "email": "user@example.com"
}
]
}{- "data": {
- "created": [
- {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "email": "user@example.com"
}
]
}, - "error": null
}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.
string <email> The email address of the user. | |
| phone | string The phone number of the user. |
{- "data": {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "firstName": "Sarah",
- "lastName": "Johnson",
- "email": "sarah.johnson@email.com",
- "phone": "+1-415-555-1234",
- "dateOfBirth": "1936-08-17"
}, - "error": null
}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}).
| recordId required | string <uuid> |
{- "data": {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "firstName": "Sarah",
- "lastName": "Johnson",
- "email": "sarah.johnson@email.com",
- "phone": "+1-415-555-1234",
- "dateOfBirth": "1936-08-17"
}, - "error": null
}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.
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).
| 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 |
{- "data": {
- "data": [
- {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "name": "CNA",
- "address": "UCSF Medical Center, 505 Parnassus Ave, San Francisco, CA 94143",
- "description": "Assist patients with daily living activities, take vital signs, and provide basic medical care under supervision",
- "startDate": "2026-06-05T17:00:00Z",
- "endDate": "2025-06-05T17:00:00Z",
- "location": "UCSF Medical Center, San Francisco, CA",
- "hoursPerWeek": 37.5,
- "yearsOfExperience": 7,
- "hourlyRate": 65,
- "status": "Open"
}
], - "page": 0,
- "size": 20,
- "totalCount": 1
}, - "error": null
}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).
required | Array of objects (CreateJobRequest) |
{- "jobs": [
- {
- "name": "Registered Nurse - Emergency Department",
- "description": "Provide emergency nursing care, triage patients, and collaborate with physicians in fast-paced environment",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "locationId": "1a5515a3-ba81-4a42-aee7-ad9ffc090a54",
- "hoursPerWeek": 40,
- "yearsOfExperience": 3,
- "hourlyRate": 45
}
]
}{- "data": [
- {
- "recordId": "0470cfd4-dcf3-4d8c-ac28-58c6deeff25f",
- "name": "string",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z"
}
], - "error": null
}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.
Returns a single location by its UUID for the authenticated account.
| locationId required | string <uuid> UUID of the location to retrieve |
{- "data": {
- "recordId": "550e8400-e29b-41d4-a716-446655440000",
- "name": "UCSF Medical Center",
- "email": "staffing@ucsf.edu",
- "phone": "+1-415-476-9000",
- "address": {
- "street": "505 Parnassus Ave",
- "city": "San Francisco",
- "state": "CA",
- "zipCode": "94143",
- "country": "United States"
}, - "timezone": "America/Los_Angeles"
}, - "error": null
}Uploads a document file with optional metadata for the authenticated account.
Important: This endpoint requires multipart/form-data content type for file upload.
Limits:
The request consists of two parts:
file: The document file to upload (required)request: JSON metadata for the document (optional)| file required | string <binary> The document file to upload (max 100MB) |
object (CreateDocumentRequest) |
{- "data": {
- "recordId": "200c7b23-5ba6-4cf4-a332-6da9394b7112",
- "fileName": "certification.pdf",
- "contentType": "application/pdf"
}, - "error": null
}