Skyfleet sandbox demo
The sandbox of the Skyfleet API layer for the Kleinanzeigen engineers: quote, book and follow parcels against emulated carriers. Synthetic data only.
For integrators
| What | Where | Needs |
|---|---|---|
| API reference | /docs | Nothing |
| Try the API (Swagger UI) | /docs/try | Sandbox client id and secret |
| Request contract (OpenAPI) | /openapi.yaml | Nothing |
| Event contract (AsyncAPI) | /asyncapi.yaml | Nothing |
| Access token | POST /oauth2/token |
The client_id and client_secret handed to you |
| The API itself | /v1/..., for example POST /v1/quotes |
Authorization: Bearer with the access token |
| Liveness | /health | Nothing |
| The same API with real DPD labels through the shipcloud sandbox (prices still from Skyfleet; the customer sees DPD) | /shipcloud/v1/..., reference at /shipcloud/docs |
The same client_id and client_secret, token at
/shipcloud/oauth2/token
|
Get a token, then ask for a quote (replace the three placeholders):
curl -s -X POST <base-url>/oauth2/token -H 'content-type: application/json' \
-d '{"grant_type":"client_credentials","client_id":"<client_id>","client_secret":"<client_secret>"}'
A token lives for an hour; cache it rather than asking for one per call. Events arrive at your webhook receiver
once one is registered for the demo, or can be polled with GET /v1/events.
For operators
| What | Where | Needs |
|---|---|---|
| Wiki: architecture, decisions, loose ends | /wiki/ | Operator login |
| Journal viewer: every hop of a correlation id or shipment | /journal/viewer | Journal token, asked for on the page |
| Sandbox state | /sandbox/diagnostics | Operator login |
| Sandbox controls | POST /sandbox/clock, POST /sandbox/tick, POST /sandbox/reset |
Operator login |
Before you start
- State lives in memory: a restart of the sandbox drops every shipment. The journal keeps the message trail.
- The sandbox clock is shared: moving it moves it for every caller.
-
Every call is checked against the contract on the way in and out; a
400names the field at fault.