/oauth/appsA new app and its client id. A confidential app’s client secret is in this answer only. Apps asking for write or store scopes work for you alone until an admin approves them.
collector.createMyOAuthApp()X-Request-Idnamestringrequired2–60 characters
descriptionstring or nullat most 300 characters
homepageUrlstringrequiredat most 500 characters
privacyUrlstringrequiredRequired: the consent screen links it.
at most 500 characters
termsUrlstring or nullat most 500 characters
redirectUrisarray of stringrequiredExact matches: https, or http on 127.0.0.1, [::1] or localhost (whose port may differ in a request).
1–10 items
scopesarray of enumrequiredPersonal or store scopes from the API key catalogue; never admin scopes.
1–40 items
catalog:readcollection:readcollection:writewishlist:readwishlist:writescans:writescans:readlabels:readlabels:writeinsights:readinsights:writeexports:readholds:readholds:writequestions:readquestions:writeaccount:readaccount:writereports:writestores:readstores:writeassistant:usewebhooks:readwebhooks:writestore:readstore:inventory:readstore:inventory:writestore:holds:readstore:holds:writestore:questions:readstore:questions:writestore:storefront:writestore:staff:readstore:staff:writestore:billing:readstore:webhooks:readstore:webhooks:writeclientTypeenumrequiredpublicconfidential201CreatedThe new app (and its secret, shown once).
An app just made (or its secret just rotated): the only time its secret is shown.
clientSecretstring or nullrequiredA confidential app’s client secret. Store it now: it can’t be shown again.
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
unauthorized: Not signed in (no session or token, or an expired one).
too_many_apps: Already 10 apps: delete one first.
payload_too_large: The body is over 1,048,576 bytes, this operation’s limit.
rate_limitedtemporarily_blocked
rate_limited: Over the caller’s limit: the per-minute burst or the per-day quota (RateLimit headers; wait Retry-After seconds).
temporarily_blocked: Too many refused requests in a row: blocked for a while (Retry-After says how long).
internal: Something went wrong on our side (quote the requestId).
api_keys_unavailable: This deployment isn’t set up for API keys and OAuth.