Customer · customer
Cross-system customer contract for the POS vertical. firstName and lastName stay optional for read portability, but Square, Lightspeed R-Series, and Clover write targets require them when creating customers.
Entity type:
customer· Methods: GET · POST
Cross-system customer contract for the POS vertical. firstName and lastName stay optional for read portability, but Square, Lightspeed R-Series, and Clover write targets require them when creating customers.
Endpoints
GET /unified/{accountId}/customer # List normalized customer records
POST /unified/{accountId}/customer # Create / push one customerSchema
| Field | Type | Required | Description |
|---|---|---|---|
externalId | string | Yes | Stable source customer identifier. Used as the idempotency key on writes. |
name | string | Yes | Best available display name for the customer. |
firstName | string | — | Given name. Required by some write targets such as Square, Lightspeed R-Series, and Clover. |
lastName | string | — | Family name. Required by some write targets such as Square and Lightspeed R-Series. |
email | string · email | — | Primary email address. |
phone | string | — | Primary phone number. |
companyName | string | — | Business or company name. |
notes | string | — | Customer note or internal note. |
address | object | — | Primary mailing or billing address. |
address.line1 | string | — | Street address, first line. |
address.line2 | string | — | Street address, second line. |
address.city | string | — | City or locality. |
address.state | string | — | State, province, or region. |
address.postalCode | string | — | ZIP or postal code. |
address.country | string | — | Country name or code. |
Example object
{
"externalId": "cus_00417",
"name": "Samir Haddad",
"firstName": "Samir",
"lastName": "Haddad",
"email": "samir@driftretail.com",
"phone": "+1 212 555 0177",
"address": {
"line1": "88 Prince St",
"city": "New York",
"state": "NY",
"postalCode": "10012",
"country": "US"
}
}The same shape is used as the POST request body and returned by GET reads — reads from
every connected system are normalized to it.
Requests
curl "https://dev.flow.staging.linktoany.com/api/1.0/standalone-link-engine-service/unified/{accountId}/customer?mappingKey={readKey}&pageSize=50" \
-H "authorization: Bearer <token>"curl -X POST "https://dev.flow.staging.linktoany.com/api/1.0/standalone-link-engine-service/unified/{accountId}/customer?mappingKey={writeKey}" \
-H "authorization: Bearer <token>" \
-H "content-type: application/json" \
-d '{"externalId":"cus_00417","name":"Samir Haddad","firstName":"Samir","lastName":"Haddad","email":"samir@driftretail.com","phone":"+1 212 555 0177","address":{"line1":"88 Prince St","city":"New York","state":"NY","postalCode":"10012","country":"US"}}'Supported systems
| System | Read | Write | Auth | Rate limit |
|---|---|---|---|---|
| Shopify | Yes | Yes | OAuth 2.0 | 1 req / s |
| Lightspeed X-Series | Yes | Yes | OAuth 2.0 | 10 req / s · 100 req / min |
| Lightspeed R-Series | Yes | Yes | OAuth 2.0 | 1 req / 10s |
| Square | Yes | Yes | OAuth 2.0 | 5 req / s |
| Clover (Asia Pacific) | Yes | Yes | API token | 5 req / 6s |
Retail POS
Unified customers, orders, and products across retail point-of-sale and e-commerce platforms — Shopify, Lightspeed, Square, and Clover behind one contract.
Order · order
Portable POS order contract with source order identity, status, party references, and normalized line items. currencyCode and locationExternalId matter when targeting Square; lineItems[].productExternalId matters when targeting Lightspeed X-Series sales.