Staff

3 operations. Every schema and example on this page is generated from the platform contract.

List a store's staff members and their permissions.

Merchant views everyone with access to the store, the owner plus any scoped staff, each with their fine-grained permission grants (manage classes, process payments, view reports, and so on). Owners are flagged and hold every permission implicitly. Gated on the gym-management entitlement.

Parameters

store_idstring · uuidqueryrequired

Store whose staff to list (also authorises the merchant).

Response, 200

staffarray of objectrequired
6 child fields
user_idstringrequired
emailstring, nullablerequired
full_namestring, nullablerequired
permissionsobjectrequired
10 child fields
can_manage_classesbooleanrequired
can_manage_membershipsbooleanrequired
can_process_paymentsbooleanrequired
can_waive_penaltiesbooleanrequired
can_override_bookingbooleanrequired
can_view_reportsbooleanrequired
can_manage_staffbooleanrequired
can_manage_eventsbooleanrequired
can_manage_configbooleanrequired
can_message_customersbooleanrequired
is_ownerbooleanrequired
has_explicit_grantsbooleanrequired
curl -G "https://www.membber.com/api/v1/staff/permissions" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  --data-urlencode "store_id=6659c139-0000-4000-8000-d0c500000066"
Response, 200
{
  "staff": [
    {
      "user_id": "f73aee0f-0000-4000-8000-d0c5000000f7",
      "email": "alex@example.com",
      "full_name": "Alex Example",
      "permissions": {
        "can_manage_classes": true,
        "can_manage_memberships": true,
        "can_process_payments": true,
        "can_waive_penalties": true,
        "can_override_booking": true,
        "can_view_reports": true,
        "can_manage_staff": true,
        "can_manage_events": true,
        "can_manage_config": true,
        "can_message_customers": true
      },
      "is_owner": true,
      "has_explicit_grants": true
    }
  ]
}

Read a staff member's view preferences.

Returns which screen the app opens on for this person and how their Diary is framed. Reads your own preference by default; pass target_user_id (with can_manage_staff) to read a colleague's. The preference is stored against the person, so it follows them to any device they sign in on.

Parameters

store_idstring · uuidqueryrequired

Store the preference belongs to (also authorises the merchant).

target_user_idstring · uuidqueryoptional

Read a COLLEAGUE's preference instead of your own. Requires can_manage_staff.

Response, 200

is_setbooleanrequired

False when this person has never chosen, the values are then defaults, not a decision. Clients use this to tell "never chose" from "deliberately chose My day".

prefsobjectrequired
2 child fields
start_screenenumrequired

Which screen the app opens on for this person: their day, or the full diary.

my_dayfull_diary
calendar_modeenumrequired

How the Diary frames classes: mine first with others dimmed, everyone's, or mine only.

mine_first_dimmedeveryonemine_only
updated_atstring, nullablerequired
set_by_otherbooleanrequired

The row was last written by someone else (an owner setting it from the Staff detail).

curl -G "https://www.membber.com/api/v1/staff/view-prefs" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  --data-urlencode "store_id=6659c139-0000-4000-8000-d0c500000066"
Response, 200
{
  "is_set": true,
  "prefs": {
    "start_screen": "my_day",
    "calendar_mode": "mine_first_dimmed"
  },
  "updated_at": "<updated_at>",
  "set_by_other": true
}

Set a staff member's view preferences.

Sets which screen the app opens on for this person and how their Diary is framed. Sets your own by default; pass target_user_id (with can_manage_staff) to set a colleague's, which takes effect on their device. Idempotent, one row per (person, store), replaced in place.

Request body

store_idstring · uuidrequired

Store the preference belongs to (also authorises the merchant).

target_user_idstring · uuidoptional

Set a COLLEAGUE's preference instead of your own. Requires can_manage_staff.

start_screenenumrequired

Which screen the app opens on for this person: their day, or the full diary.

my_dayfull_diary
calendar_modeenumrequired

How the Diary frames classes: mine first with others dimmed, everyone's, or mine only.

mine_first_dimmedeveryonemine_only

Response, 200

prefsobjectrequired
2 child fields
start_screenenumrequired

Which screen the app opens on for this person: their day, or the full diary.

my_dayfull_diary
calendar_modeenumrequired

How the Diary frames classes: mine first with others dimmed, everyone's, or mine only.

mine_first_dimmedeveryonemine_only
curl -X PUT "https://www.membber.com/api/v1/staff/view-prefs" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "store_id": "6659c139-0000-4000-8000-d0c500000066",
    "start_screen": "my_day",
    "calendar_mode": "mine_first_dimmed"
  }'
Response, 200
{
  "prefs": {
    "start_screen": "my_day",
    "calendar_mode": "mine_first_dimmed"
  }
}
WhatsApp
Book a Call
Start Free