generated: '2026-08-23' method: probed source: 'Anonymous HTTPS probes of https://api.janio.asia (2026-08-23) plus https://www.janio.asia/integrations' docs: https://www.janio.asia/integrations note: >- Janio publishes no API reference, so almost every cross-cutting convention below is UNDOCUMENTED rather than absent — the difference matters. What could be established was established by probing the live production host anonymously: the API is real, it answers under /api/order/, and it is a Django REST Framework application. Everything marked `documented: false` is a gap in what Janio publishes, not a claim that the behaviour does not exist. Nothing here is inferred from a spec, because there is no spec. surface: base_url: https://api.janio.asia style: REST/JSON framework_fingerprint: Django REST Framework evidence: - url: https://api.janio.asia/api/order/orders/ status: 403 body: '{"detail":"Permission denied."}' - url: https://api.janio.asia/api/order/order/create/ status: 403 body: '{"detail":"Permission denied."}' - url: https://api.janio.asia/api/v1/ status: 404 body: '

Not Found

' documented_capabilities: - Order management (create, update, track; batch processing for high volume) - Webhooks and events (shipment status, delivery updates, exception alerts) - Rate & quote (real-time shipping rates and transit times per carrier/route) - Tracking (unified across carriers, "standardized status codes and timestamps") - Inventory sync (across warehouses and sales channels) - Label generation (shipping labels, customs documents, commercial invoices) capabilities_source: https://www.janio.asia/integrations auth: style: credential-required documented: false scheme: unknown evidence: 'Anonymous requests are rejected with HTTP 403 and the DRF {"detail":"Permission denied."} envelope rather than 401 with a WWW-Authenticate challenge, so the credential type cannot be read off the wire. No OAuth metadata is served (/.well-known/oauth-authorization-server 404s) and no auth page is published. Third-party carrier-integration vendors describe Janio as API-key based, but that is their statement, not Janio''s, and is not recorded here as fact.' error_envelope: format: application/json shape: '{"detail": ""}' rfc9457: false documented: false observed_status_codes: - 403 - 404 note: 'The 403 envelope was observed directly. Non-auth error shapes could not be observed because every path requires credentials before it reaches application logic. Unmatched paths return an HTML "Not Found" body rather than JSON, so the error format is not uniform across the host.' idempotency: supported: unknown documented: false header: null note: 'No idempotency key, retry-safety or replay-protection guidance is published, and the write surface (order create, batch order upload) is exactly where it would matter. No Idempotency pointer is emitted in apis.yml — emitting one would assert a guarantee Janio does not make.' pagination: style: unknown documented: false note: 'Django REST Framework list endpoints commonly paginate, and /api/order/orders/ is a list route, but the anonymous 403 prevents observing any envelope, and no docs state the scheme. Not asserted.' versioning: in_path: false header: unknown documented: false note: 'See lifecycle/janio-lifecycle.yml. /api/v1/ 404s; the live prefix is /api/order/.' rate_limit_signaling: documented: false headers_observed: [] note: 'See rate-limits/janio-rate-limits.yml — limit_count 0.' request_id_tracing: documented: false header: null field_expansion: supported: unknown documented: false metadata_fields: supported: unknown documented: false webhooks: advertised: true documented: false events_claimed: - shipment status - delivery updates - exception alerts source: https://www.janio.asia/integrations note: 'Webhooks are advertised in prose on the Integrations page but no event catalog, payload schema, signing scheme, retry policy or endpoint-registration procedure is published. No Webhooks or AsyncAPI pointer is emitted, because an advertised capability with no published event surface is a claim, not a contract. If Janio publishes the event list, this becomes an asyncapi/ artifact.' sandbox: advertised: true documented: false source: https://www.janio.asia/integrations note: '"Sandbox testing environment" is listed as an integration benefit, but no sandbox host, test credential, test tracking number, magic identifier or fixture is published. No Sandbox pointer is emitted for the same reason as webhooks.' reversibility: grade: undocumented applicable: true rationale: >- The API has a real write surface — Janio's own Integrations page states the API can "Create, update, and track orders programmatically", generate shipping labels, customs documents and commercial invoices, and synchronise inventory — so reversibility is applicable, not `na`. But Janio publishes no reversal operation and no reversal window anywhere a reader can reach: no cancel-order call, no void-label call, no return/RTO initiation, no stated cut-off such as "cancel before pickup" or "void a label within N hours". The FAQ, pricing and integrations pages are silent on cancellation entirely. An agent acting through this API cannot learn, before it acts, whether an order it creates or a label it generates can be taken back. NOTHING is asserted here about what the API actually supports internally — only about what a consumer can find out in advance, which is nothing. write_surfaces: - surface: Order creation reversal_operation: null reversal_window: null docs: null evidence: 'https://www.janio.asia/integrations describes create/update/track and batch order processing; no cancellation is mentioned. Live route https://api.janio.asia/api/order/order/create/ returns 403 anonymously.' - surface: Label / customs document generation reversal_operation: null reversal_window: null docs: null evidence: 'https://www.janio.asia/integrations lists label, customs document and commercial invoice generation; no void or cancel path is published.' - surface: Inventory synchronisation reversal_operation: null reversal_window: null docs: null evidence: 'Described as keeping levels synchronised across warehouses and sales channels; no rollback or restore semantics published.' dry_run_mode: supported: unknown documented: false note: 'The Rate & Quote capability is a read-only price/transit estimate and is the closest thing to a rehearsal of a shipment, but Janio does not present it as a dry run of order creation and publishes no dry-run flag.' cross_links: rate_limits: rate-limits/janio-rate-limits.yml lifecycle: lifecycle/janio-lifecycle.yml conformance: conformance/janio-conformance.yml plans: plans/janio-plans-pricing.yml packages: packages/janio-packages.yml