Get OAuth Config
GET/api/shopify/config
Returns the Shopify OAuth configuration that tells the frontend which connection mode to render.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Authentication: Requires Bearer token.
Response fields:
- custom_app_mode (bool): when true, per-instance Client ID/Secret are used (custom app). When false, SKU.io's central public app credentials are used.
- legacy_custom_app_mode (bool): when true, the merchant pastes an Admin API access token directly (no OAuth).
- scopes (string): comma-separated OAuth scopes requested.
- redirect_url (string): the OAuth callback URL ({app_url}/shopify/callback).
Mode matrix:
- Public OAuth: custom_app_mode=false, legacy_custom_app_mode=false (no credentials entered; merchant just authorizes).
- Custom-app OAuth: custom_app_mode=true, legacy_custom_app_mode=false.
- Legacy custom app: legacy_custom_app_mode=true.
Note: custom_app_mode and legacy_custom_app_mode are resolved per-tenant. A tenant may override either flag (operators set this via the shopify:set-app-mode artisan command); when no override is present the global config default applies. The response shape is identical regardless of how the values resolve, so different tenants may legitimately return different mode values.
Request
Responses
- 200
- 401
- 403
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.