Tetradka Developers
Developer preview. API availability must be confirmed with your profile owner; this portal does not announce a production release.

Pagination and filters

Clients and employees

Client and employee-directory lists use skip (default 0) and take (default 15, range 1–100). Their count is the matching total before pagination. Advance skip by the requested page size. Clients sort by name, then clientID; employees by name, then userID. Assigned employee services use the same pagination defaults and sort by service sort, then serviceID.

Filters combine with AND. Client name and phone perform substring searches. For a complete international phone number, send phoneExact instead of phone. Sending both, even empty, returns 422. Encode the leading + as %2B or use curl --data-urlencode. A valid exact search can match multiple clients; it does not establish uniqueness.

curl --get "$TETRADKA_API_BASE/open/crm/v1/clients" \
  -H "X-Api-Key: $TETRADKA_API_KEY" \
  -H 'Accept: application/json' \
  --data-urlencode 'phoneExact=+44 (7700) 900-123' \
  --data-urlencode 'take=15'

Employee filters include name, serviceID, hasServices and isOnline. Boolean query values for these employee filters are the strings true or false.

Other collections

Pagination is not uniform across the API. Read each operation's parameters and response schema in the reference.

Collection Contract to preserve
Visits Grouped response by status; skip is accepted but currently does not apply an offset. There is no generic take pagination.
Services and category services Use the documented skip and exclude[] behavior; do not add a universal take parameter.
Service categories {count,categories} without nested services; categories sort by sort. The current list does not apply take without skip.
Schedules Date bounds and endpoint-specific skip/take; use the operation schema for defaults and limits.
Booking time slots Date and ordered employee/service selection, with the operation's skip/take rules.

An empty result is a successful read, not automatically a missing resource. Counts and response envelopes retain the individual domain contract; do not flatten grouped visits into a generic list.