Apps and credentials
The sandbox apps you create yourself, the production app ColiSwift creates for you at go-live, and what each credential is.
| Sandbox | Production | |
|---|---|---|
| Who creates it | You, signed in as your test seller | ColiSwift, after reviewing your integration |
| How | Intégrations → « Applications développeur » — see Sandbox and testing | Contact ColiSwift — see Go-live |
| How many | Up to 5 active apps per seller account | One per integration |
| Who can connect it | Only the seller account that created it | Any seller who approves it |
| Redirect URIs | Yours (https: or http://localhost) | Your own HTTPS callbacks |
| Webhooks | Delivered to your URL | Delivered to your URL |
| COD Drop catalogue synchronisation | Never | Only if ColiSwift enables it for the app |
orders:details (internal order details) | Never (SCOPE_NOT_SELF_SERVICE) | Only if ColiSwift enables it for the app |
products:details (internal product details) | Never (SCOPE_NOT_SELF_SERVICE) | Only if ColiSwift enables it for the app |
App settings
The same fields, whether you fill them in on the sandbox or ColiSwift registers them for your production app, with the same rules:
namestring, 1–80requiredShown to the seller on the consent page and in their « Connected apps » list.
descriptionstring, ≤ 280Internal description of the app.
logoUrlURLLogo shown on the consent page (displayed
contain, any aspect ratio).redirectUrisstring[], 1–10requiredEvery callback URL you will use, exactly as you will send it.
https:only, excepthttp://localhost,http://127.0.0.1andhttp://[::1](any port). No#fragment, no*wildcard, no user:password.allowedScopesstring[]requiredThe most your app may ever ask a seller for.
orders:details(internal order details) andproducts:details(internal product details) are restricted: set by ColiSwift only, on request, never on a sandbox app. See Scopes.profile:readcatalogue:readproducts:writeorders:writeorders:readcod_drop:writeorders:detailsproducts:details
webhookUrlURLOne HTTPS URL per app that receives the events of every connected seller. Must not point at a private or loopback address.
webhookEventsstring[]Optional filter. Empty = every event your scopes entitle you to. Otherwise only the listed types. See Webhooks.
COD Drop catalogue synchronisationon / offSet by ColiSwift only, off by default, never on for a sandbox app. Off:
GET /cod-drop/catalogandGET /cod-drop/catalog/{productId}answer403 COD_DROP_CATALOG_NOT_ENABLEDandcod_drop.catalog_changedis not delivered. Adoptions and their events do not depend on it.
Credentials
| Credential | Format | Use |
|---|---|---|
| Client id | cs_client_ + 32 hex | Public identifier, goes in the authorize URL. |
| Client secret | cs_secret_… | Server-side only. Authenticates /oauth/token and /oauth/revoke. |
| Webhook secret | whsec_… | Verifies the X-Coliswift-Signature of every delivery. |
Secrets are displayed once, when the app is created (and when one is rotated). ColiSwift keeps only a hash of the client secret and an encrypted copy of the webhook secret; nobody can read them back. If you lose one, rotate it — yourself on the sandbox, by asking ColiSwift in production.
Changes, rotation and deactivation
- Client secret rotation: the old secret stops working immediately — there is no overlap window. Deploy the new one at once.
- Webhook secret rotation: every delivery attempt after the rotation is signed with the new secret, including retries of events queued before it.
- Scope removed from the app: every live connection and every live token loses it immediately — calls it allowed answer
403 INSUFFICIENT_SCOPE, its events stop. The other scopes keep working. A connection left with no scope at all is revoked. - Scope added to the app: nothing changes for existing connections; the seller must approve again (a new consent) to grant it.
- Redirect URIs, webhook URL and event filter can be changed at any time and apply from then on.
- Deactivation (a « Delete » on the sandbox): every seller connection of the app is revoked, all tokens die, and pending deliveries are marked dead. Re-activating a production app does not restore the connections: each seller must connect again. A deleted sandbox app stays deleted.

