Get a customer
One customer with contacts and subjects. An erased (anonymized) customer is returned too, with anonymizedAt
set and no personal data: name, email, phone and note are null, contacts and subjects empty.
Requires the customers:read scope; a publishable key cannot call it.
ApiKeyAuth customers:readAuthorizationBearer <shyni_sk_live_*>An API key, issued once and never retrievable again: an organization key in the developer
portal, or a studio key in the studio's admin (Moje studio → API). Send as Authorization: Bearer shyni_sk_live_....
Scope: customers:read
id*stringThe customer's id (customer.id on an order, or id on a list item).
The customer.
application/json- response
A customer of the studio. For an erased customer (anonymizedAt set) the personal fields are null or empty;
the order count and dates stay, the orders themselves are kept.
id*stringname*string|nullemail*|The most recently used e-mail contact, null when the customer has none.
phone*|The most recently used phone contact, null when the customer has none.
contacts*array<>Every contact, most recently used first.
subjects*array<>note*|The studio's own note about the customer.
externalRef*|The customer's externalRef (your own id, set through customer.externalRef on POST /orders); kept after erasure, null when none.
orderCount*integerAll orders of the customer, cancelled ones included.
firstOrderAt*|Scheduled start of the earliest order.
date-timelastOrderAt*|Scheduled start of the latest order.
date-timecreatedAt*stringdate-timeanonymizedAt*|When the customer was erased; null for a live customer.
date-timecurl -X GET 'https://api.shyni.io/api/v1/customers/string' \ -H 'Authorization: Bearer shyni_sk_test_YOUR_KEY'Response 200
The customer.
{ "id": "string", "name": "string", "email": "string", "phone": "string", "contacts": [ { "type": "EMAIL", "value": "string", "lastUsedAt": "2019-08-24T14:15:22Z" } ], "subjects": [ { "id": "string", "type": "string", "variant": "string", "attributes": { "property1": "string", "property2": "string" }, "note": "string", "externalRef": "string" } ], "note": "string", "externalRef": "string", "orderCount": 0, "firstOrderAt": "2019-08-24T14:15:22Z", "lastOrderAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "anonymizedAt": "2019-08-24T14:15:22Z"}Response 401
Missing, malformed, unknown, or revoked API key (INVALID_API_KEY).
{ "code": "INVALID_API_KEY", "message": "Missing or invalid API key."}Response 403
The key is valid but the request is refused. Branch on code: INSUFFICIENT_SCOPE (the key lacks the
permission this endpoint requires), PLAN_REQUIRED (the studio is not on a plan that includes API keys,
Pro and above), ORIGIN_NOT_ALLOWED, SECRET_KEY_IN_BROWSER, or DEMO_STUDIO on a write to the demo studio.
See Authentication and Scopes above.
{ "code": "INSUFFICIENT_SCOPE", "message": "This API key does not have the permission this endpoint requires."}Response 404
The resource does not exist, or belongs to a different studio.
{ "code": "NOT_FOUND", "message": "Order not found."}Response 429
Burst rate limit exceeded.
{ "code": "RATE_LIMITED", "message": "Too many requests. Retry after the time given in the Retry-After header."}