Skip to content
Coritan Docs

Organization API: Customers: Staff

The 26 Organization API operations for staff.

View as Markdown

Part of Customers.

Method Path Summary
GET /api/v1/orgs/{org_slug}/staff/customers Directory for this brand, separate from the mixed desk search
POST /api/v1/orgs/{org_slug}/staff/customers An account for someone who ordered by phone or email
POST /api/v1/orgs/{org_slug}/staff/customers/bulk Staff customers bulk
GET /api/v1/orgs/{org_slug}/staff/customers/export.csv The directory as it is filtered, as a CSV
GET /api/v1/orgs/{org_slug}/staff/customers/tags Every label in use on this brand, with how many customers carry it
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id} Staff customer hub
PATCH /api/v1/orgs/{org_slug}/staff/customers/{customer_id} Fix the profile (support), or change the account's standing (admin)
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/activity Staff customer activity
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/chat-mute Silence a handle in community chat and the forum for a while, or lift it
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/close Staff close customer
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/credit Staff add credit
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/credit-ledger Staff credit ledger
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/data-export Everything held about the customer, as one JSON file, for a privacy request
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/emails Staff customer emails
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/impersonate Staff impersonate customer
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/mark-verified Vouch for an address the customer proved another way (a call, a ticket from that inbox)
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/notes List customer notes
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/notes Add customer note
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/payment-methods Staff customer payment methods
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/related Staff customer related
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/resend-verification Staff resend verification
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/reset-mfa For a customer who lost their phone: remove their second factor and end their sessions
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/reset-password Staff reset customer password
POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/revoke-sessions Staff revoke customer sessions
GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/sessions Staff customer sessions
PUT /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/tags Staff set customer tags

Directory for this brand, separate from the mixed desk search

Section titled Directory for this brand, separate from the mixed desk search

GET /api/v1/orgs/{org_slug}/staff/customers

Directory for this brand, separate from the mixed desk search.

status_filter is an account status or one of CUSTOMER_BUCKETS (unverified, new_7d, paying, free). counts carries one figure per status and per bucket. unverified is accounts whose email was never verified, new_7d signups inside the last seven days, paying accounts with at least one non-free service and free the rest. Every figure is counted under the audience the request carries, and none is narrowed by q, tag or the filter itself, so the tiles keep reading as the whole directory while the list is narrowed.

Name In Type Required Description
org_slug path string yes
q query string or null no
status_filter query string or null no
tag query string or null no
audience query string or null no
limit query integer no Default: 50.
offset query integer no Default: 0.
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

An account for someone who ordered by phone or email

Section titled An account for someone who ordered by phone or email

POST /api/v1/orgs/{org_slug}/staff/customers

An account for someone who ordered by phone or email. No password is set here; the customer gets a link to choose their own, so staff never know it.

Name In Type Required
org_slug path string yes

application/json (required)

Field Type Required
email string (email) yes
first_name string or null no
last_name string or null no
company string or null no
phone string or null no
currency string or null no
send_setup_email boolean no
Status Meaning
201 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/bulk

Suspend, unsuspend or terminate every order a selection of customers has, or ban the accounts outright.

The fleet's bulk route acts on servers picked one by one; this one is for the search that turned up a dozen accounts with the same email pattern. Same gate: support may suspend and unsuspend; anything that ends an order or an account is an org admin who has stepped up in the last ten minutes.

Name In Type Required
org_slug path string yes

application/json (required)

Field Type Required
customer_ids array of integer yes
action string yes
reason string yes
delete_after_days integer or null no
open_ticket boolean no
notify_customer boolean no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

The directory as it is filtered, as a CSV

Section titled The directory as it is filtered, as a CSV

GET /api/v1/orgs/{org_slug}/staff/customers/export.csv

The directory as it is filtered, as a CSV. Billing roles only: an export is every customer's contact details in one file. status_filter takes the same values as the directory, the tile buckets included.

Name In Type Required
org_slug path string yes
q query string or null no
status_filter query string or null no
tag query string or null no
audience query string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Every label in use on this brand, with how many customers carry it

Section titled Every label in use on this brand, with how many customers carry it

GET /api/v1/orgs/{org_slug}/staff/customers/tags

Every label in use on this brand, with how many customers carry it.

Name In Type Required
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}

One customer's record: the account (with display_name), their services, invoices, tickets and staff notes. Each ticket carries its department and assigned_agent_name (the team member's first and last name, else their email; null when unassigned), as the inbox shows them.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Fix the profile (support), or change the account's standing (admin)

Section titled Fix the profile (support), or change the account's standing (admin)

PATCH /api/v1/orgs/{org_slug}/staff/customers/{customer_id}

Fix the profile (support), or change the account's standing (admin).

A new email address is unverified again and gets a fresh verification mail: the old inbox proved nothing about the new one. Leaving active ends every session the customer has, so a ban is not decorative.

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
email string (email) or null no
first_name string or null no
last_name string or null no
company string or null no
phone string or null no
status string or null no
reason string or null no
currency string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/activity

One timeline, newest first: what staff did to the account, what the customer did, and what billing and support recorded.

Name In Type Required Description
customer_id path integer yes
org_slug path string yes
limit query integer no Default: 100.
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Silence a handle in community chat and the forum for a while, or lift it

Section titled Silence a handle in community chat and the forum for a while, or lift it

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/chat-mute

Silence a handle in community chat and the forum for a while, or lift it.

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json

Field Type Required
minutes integer or null no
reason string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/close

Close and anonymise, with the same guard the customer's own close has: no active services, no unpaid invoices.

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
reason string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/credit

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
amount number or string yes
description string no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/credit-ledger

Name In Type Required Description
customer_id path integer yes
org_slug path string yes
limit query integer no Default: 50.
offset query integer no Default: 0.
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Everything held about the customer, as one JSON file, for a privacy request

Section titled Everything held about the customer, as one JSON file, for a privacy request

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/data-export

Everything held about the customer, as one JSON file, for a privacy request.

The privacy policy promises a copy of their data to anyone who asks; this is the copy. Admin and stepped-up like closing the account, because it is the whole person in one download; rate-limited with the other exports; and audited before the document is built, so the document itself records that it was produced, by whom, and when.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/emails

Every transactional email the brand sent this customer and whether it went, so "we emailed your server details on this date" can be shown rather than asserted.

Name In Type Required Description
customer_id path integer yes
org_slug path string yes
limit query integer no Default: 50.
offset query integer no Default: 0.
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/impersonate

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json

Field Type Required
mode string or null no
elevated boolean no
reason string or null no
next string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Vouch for an address the customer proved another way (a call, a ticket from that inbox)

Section titled Vouch for an address the customer proved another way (a call, a ticket from that inbox)

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/mark-verified

Vouch for an address the customer proved another way (a call, a ticket from that inbox). Admin only, and on the record.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/notes

Name In Type Required Description
customer_id path integer yes
org_slug path string yes
limit query integer no Default: 50.
offset query integer no Default: 0.
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/notes

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
body string yes
Status Meaning
201 Success.
422 The request is not valid. detail lists each problem.

Staff customer payment methods

Section titled Staff customer payment methods

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/payment-methods

What the customer has on file, as the customer sees it: a label, a brand, the last four digits, the expiry. The gateway token never leaves the row.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/related

Other customers on this brand that share a sign-up IP, a sign-up fingerprint, a phone number or a recent session address with this one.

Signals, not verdicts: a household shares an IP. Each match says which signal it came from so the person reading can weigh it.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/resend-verification

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

For a customer who lost their phone: remove their second factor and end their sessions

Section titled For a customer who lost their phone: remove their second factor and end their sessions

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/reset-mfa

For a customer who lost their phone: remove their second factor and end their sessions. They sign in again and, if the brand requires it, enrol.

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/reset-password

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
password string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Staff revoke customer sessions

Section titled Staff revoke customer sessions

POST /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/revoke-sessions

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json

Field Type Required
token_id integer or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/sessions

Name In Type Required
customer_id path integer yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

PUT /api/v1/orgs/{org_slug}/staff/customers/{customer_id}/tags

Name In Type Required
customer_id path integer yes
org_slug path string yes

application/json (required)

Field Type Required
tags array of string no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.