Teambridge Collections (Unified API) 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.). ## Filtering The unified Collections API (`/v1/collections/{collectionId}/records`) supports powerful filtering via query parameters. You can filter records by adding query parameters in the format `{fieldUUID}_{operator}={value}`. **Supported Operators:** - `_is`: Exact match (all field types) - **default if no suffix provided** - `_contains`: Partial text match (TEXT fields only) - `_gt`: Greater than (NUMBER, DATETIME fields) - `_gte`: Greater than or equal (NUMBER, DATETIME fields) - `_lt`: Less than (NUMBER, DATETIME fields) - `_lte`: Less than or equal (NUMBER, DATETIME fields) **Filtering Features:** - **Multiple filters**: Up to 10 filters per request with implicit AND logic (all must match) - **Default operator**: Parameters without a suffix default to `_is` behavior - **Multiple operators on same field**: Allowed (e.g., `age_gte=21&age_lte=65` for range queries) - **Case-insensitive**: TEXT and SELECT field matching is case-insensitive - **Smart date handling**: DATETIME fields support both date-only (`2025-01-01`) and full ISO 8601 format (`2025-01-01T14:30:00Z`) **Reserved Parameters**: The following parameter names are reserved and cannot be used as filter bases: `page`, `size`, `limit`, `offset`. **Filtering Examples:** - Single filter (exact match): `?550e8400-..._is=john@example.com` - Default operator (no suffix): `?550e8400-...=john@example.com` (equivalent to `_is`) - Partial text match: `?550e8400-..._contains=john` - Date exact match: `?abc123-..._is=2025-12-01` - Date range: `?abc123-..._gte=2025-01-01&abc123-..._lte=2025-12-31` - Number range: `?age-uuid-..._gte=21&age-uuid-..._lte=65` - Multiple fields: `?550e8400-..._is=john@example.com&7c9e6679-..._is=active` - Mixed operators: `?name-uuid-..._contains=john&age-uuid-..._gte=21`