Docs

Get a roster shift

Preview· P9
GET
/roster-shifts/{roster_shift_id}

Returns one roster shift.

Scope: attendance:read · Plan: Pro and Enterprise in live mode; every plan in test mode.

Authorization

headerAuthorizationBearer <token>

Send Authorization: Bearer <token> on every request. The token is one of:

PrefixWhat it isWhere it may be used
agoo_sk_live_Secret key, live modeYour servers only
agoo_sk_test_Secret key, test modeYour servers only
agoo_pk_live_Publishable key, live modeBrowsers and apps: create pre-registrations and bookings, read public booking types (with their intake questions) and their free slots, read the visit types open for pre-registration with their public forms. Never lists people.
agoo_pk_test_Publishable key, test modeAs above, in test mode

Admins create keys in Console → Developers → API keys and choose each key's scopes. A key is shown once. Never put a secret key in a URL, a browser or a mobile app.

Scope: attendance:read

Path Parameters

roster_shift_id*string

The roster shift's ID.

Match^roster_shift_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"roster_shift_01m5dk4qexa6kwfsr9nhy4r7w5"

Response Body

The roster shift.

application/json
  1. response

A shift on a site's roster. A published shift with a change waiting shows its published values.

id*RosterShiftId

A roster shift ID (TypeID with the roster_shift prefix).

Match^roster_shift_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"roster_shift_01m5dk4qexa6kwfsr9nhy4r7w5"
site_id*SiteId

A site ID (TypeID with the site prefix).

Match^site_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"site_01kjpt3yw0fz0v414608h9x65s"
person_id*|

Who works it; null for an open shift.

open*boolean

No one works it yet: once published, staff who can take it may ask for it.

on_date*string

The local day it belongs to at its site (a night shift belongs to the evening it starts).

Formatdate
starts_at*string
Formatdate-time
ends_at*string
Formatdate-time
start_time*string

Local time at the site, HH:MM.

Example"20:00"
end_time*string

Local time at the site, HH:MM.

Example"08:00"
shift_id*ShiftId

A shift ID (TypeID with the shift prefix).

Match^shift_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"shift_01kn6pqfm0fmasbh61jnr3syze"
name*string
Example"Night gate"
label*|
Example"Main gate"
colour*string
Value in"blue""teal""green""gold""amber""rose""violet""slate"
break_kind*|

Its break; null follows your organisation's standard day.

Value in"none""paid""unpaid"null
break_minutes*integer|null
break_starts*|

When the planned break starts, HH:MM.

note*|

Shown to the person with the shift.

status*string

draft: staff don't see it yet. cancelled: removed after it was published. removed: a draft taken off.

Value in"draft""published""cancelled""removed"
pending_change*boolean

A change waits for the next publish.

removing*boolean

It will be removed at the next publish.

source*string
Value in"pattern""manual""import""swap""claim"
published_at*|
Formatdate-time
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
curl -X GET 'https://api.agoo.ardent.africa/v1/roster-shifts/roster_shift_01m5dk4qexa6kwfsr9nhy4r7w5'
{  "id": "roster_shift_01m5dk4qexa6kwfsr9nhy4r7w5",  "site_id": "site_01m5h0fsfjj4dax85mkb6z3djr",  "person_id": "person_01m50j6prqtcmm8yjekp0am4ge",  "open": false,  "on_date": "2026-11-04",  "starts_at": "2026-11-04T20:00:00Z",  "ends_at": "2026-11-05T08:00:00Z",  "start_time": "20:00",  "end_time": "08:00",  "shift_id": "shift_01m5zwj3nby2d63x571ncmshhj",  "name": "Night gate",  "label": "Main gate",  "colour": "violet",  "break_kind": "paid",  "break_minutes": 30,  "break_starts": null,  "note": null,  "status": "published",  "pending_change": false,  "removing": false,  "source": "pattern",  "published_at": "2026-10-14T16:00:00Z",  "created_at": "2026-10-12T10:00:00Z",  "updated_at": "2026-10-14T16:00:00Z"}