Who am I
GET/v1/me
no scope required
The first call any integration makes: which environment you are talking to, which seller the key acts for, and what it may do. No scope required — a key can always describe itself.
Response#
| Field | Type | Description |
|---|---|---|
api_version | string | Always v1 for this API. A second version, if there ever is one, lives at a different base path — this will not change under you. |
environment | string | Which environment this key talks to. Worth checking on startup: a deploy that picked up the wrong key is far cheaper to catch here than after it lists a product. Accepts |
is_sandbox | boolean | The same fact as a boolean, so a guard reads as one line. true means nothing you do here is real. |
app | object | The integration the key belongs to. |
app. | integer | Our id for the integration. |
app. | string | Its display name, as the seller who authorised it sees it. |
app. | string | The software vendor behind it. |
key | object | The key you just presented. The secret itself is never returned — by this or anything else. |
key. | string | A short, non-secret id for this key. Safe to log, and what support will ask you for. |
key. | string[] | Exactly what this key may do. A call outside them fails with insufficient_scope, so read this rather than finding the boundary by hitting it. |
key. | string|null | ISO-8601 UTC, or null for a key that does not expire. Sandbox keys last 90 days — watch this and rotate before it lapses. |
seller | object | The account this key acts for. Every endpoint in the API is scoped to it. |
seller. | integer | Our id for the seller. |
seller. | string | The seller's name. |
seller. | boolean | Whether the account is a company. The /v1/company endpoints only work when this is true. |
shipping_address | object | Whether this seller can ship anything at all. Check this on your first call. Products publish perfectly well without an address, look correct in the dashboard, and then the first real order has nowhere to ship from — this is the only place that says so in advance. |
shipping_address. | boolean | false means there is no address. Create one with POST /v1/addresses before you sync a catalogue. |
shipping_address. | string | no_address when not ready, otherwise null. |
shipping_address. | string | A sentence you can show to whoever set the integration up. Null when ready. |
shipping_address. | object | The address orders ship FROM, and the location a product published without a city_id inherits. Null when there is none. |
shipping_address. | integer | Its id on /v1/addresses. |
shipping_address. | string | Street and number. |
shipping_address. | string | City name. |
shipping_address. | string | County name. |
shipping_address. | string | Postal code. |
shipping_address. | string | ISO 3166-1 alpha-2. |
shipping_address. | string | Where to manage them: /v1/addresses. |
rate_limits | object | What this key is allowed. Exceeding either gives 429 with a Retry-After header. |
rate_limits. | integer | Requests per minute. |
rate_limits. | integer | Requests per day. |
Example
{
"api_version": "v1",
"environment": "test",
"is_sandbox": true,
"app": {
"id": 1,
"name": "EasySales (pilot)",
"vendor": "easysales"
},
"key": {
"public_id": "88e2fb06233a",
"scopes": [
"catalog.read",
"products.read"
],
"expires_at": null
},
"seller": {
"user_id": 22,
"name": "Bike Shop SRL",
"is_company": true
},
"shipping_address": {
"ready": true,
"reason": null,
"message": null,
"default_address": {
"id": 4812,
"street": "Bulevardul Decebal 14",
"city": "Craiova",
"county": "Dolj",
"postal_code": "200001",
"country_code": "RO"
},
"details_url": "/v1/addresses"
},
"rate_limits": {
"per_minute": 60,
"per_day": 5000
}
}