ORBIS.ID Open the walletWallet

Partners · Issuer

You hand out credentials that people carry in a wallet and can show anywhere.

The path built for this role — what ORBIS needs from you, what the platform will prove before you reach production, and the calls to run at each step.

What ORBIS needs from you

You will need an ORBIS organization

Which is why this path starts with an application: an organization, its did:web identity and its vault-held key are created by an ORBIS operator through the provisioning ceremony. No public page can create one, including this one.

  • The legal entity that will appear as the issuer, and a contact who can answer for it.
  • A domain you control. Your issuer identity is did:web:orbis.id:t:<your-slug> today; a domain of your own is what a later self-hosted did:web needs.
  • The claims you intend to put in a credential, and which of them are optional.
  • How long a credential should stay valid, and what event should revoke it.

What ORBIS will never ask you for

A secret, a token, a private key, or a password — on this page or any other public one. There is no field for one anywhere in this pipeline. An operator token is revealed exactly once during provisioning and ORBIS keeps only its hash, so nobody at ORBIS can re-show it to you and nobody should ever ask you to send one back.

What the platform will prove before you go live

Not checkboxes — the real exercises, run against your integration, each recording the evidence it saw. This is what replaces weeks of email, and what stops anyone reaching production on a broken integration.

  • Your did:web document resolves publicly and carries the key ORBIS expects.
  • An OID4VCI issuance completes end to end into a test holder.
  • A revoked credential is refused against the signed status list.
  • Malformed input, an expired credential and a replayed proof are each refused.

Not built The engine that runs these is being built now. When it is wired, each check on your status page carries what it proves, what it saw, and — on a failure — the concrete fix.

The calls

Copy-pasteable, in order. Nothing here has been executed against the production origin and no value below is live data. Run everything against a demo- organization first.

You cannot run this yet — it needs an operator bearer ORBIS issues
# An operator token comes from the provisioning ceremony and is revealed
# exactly ONCE. ORBIS stores only its hash and can never show it to you again.
# Nothing on a public page can mint one — that is why you apply first.
export ORBIS_OPERATOR_TOKEN='<revealed to you once, at provisioning>'
Step 1 — your organization and its did:web identity
# DEMO-NAMESPACE LAW: a sandbox organization's slug starts with "demo-"
# and its display name ends with " (Demo)". It is never un-marked.
curl -sS https://orbis.id/api/tenants \
  -H "authorization: Bearer $ORBIS_OPERATOR_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"name":"Demo Acme Freight (Demo)"}'
# → {"slug":"demo-acme-freight-demo","did":"did:web:orbis.id:t:demo-acme-freight-demo"}
Step 2 — declare your claims
# Claim specs: key | key:date | key:number | key:money | key:bool
#            | key:array(text) | key:array(object) | key:enum(a|b|c)
# An unrecognised spec is a hard 400 — never a silently-dropped claim.
curl -sS https://orbis.id/api/types \
  -H "authorization: Bearer $ORBIS_OPERATOR_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"tenant":"demo-acme-freight-demo","name":"Carrier Licence",
       "claims":["carrier_name","licence_class:enum(A|B|C)","expires:date"]}'
Step 3 — issue, and take it back
curl -sS https://orbis.id/api/offers \
  -H "authorization: Bearer $ORBIS_OPERATOR_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"tenant":"demo-acme-freight-demo","typeId":"carrier-licence",
       "subject":{"carrier_name":"Acme Freight","licence_class":"B","expires":"2027-01-31"}}'
# → {"offerUri":"openid-credential-offer://..."}   ← render as a QR

# Revocation is public evidence, not a private flag: the signed status list
# every verifier already checks is what changes.
curl -sS https://orbis.id/api/revoke \
  -H "authorization: Bearer $ORBIS_OPERATOR_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"tenant":"demo-acme-freight-demo","statusIndex":1}'

Operations used on this path: POST /api/tenants, POST /api/types, POST /api/offers, POST /api/revoke. Their request and response shapes are in /openapi.json.

What happens next

  1. Applied ORBIS acts

    Your application exists and is in the review queue. Nothing has been provisioned.

    What moves it: An ORBIS reviewer picks it up. You do not need to do anything.

  2. Reviewing ORBIS acts

    A reviewer is reading it and may come back to you with questions.

    What moves it: The reviewer either asks you something or moves you to a sandbox.

  3. Sandbox you act

    You have a demonstration organization to build against. It is marked as a demo everywhere, permanently.

    What moves it: You build the integration, then ask for certification.

  4. Certifying you act

    The platform is running the real exercises against your integration and recording the evidence.

    What moves it: Every check on the readiness board passes. Each failure names the concrete fix.

  5. Live nobody waits

    You are a provisioned organization on the production rail.

    What moves it: Nothing — this is the destination. Your organization is now managed in Organizations, not here.

No duration is published for these stages because none has been measured — see the pipeline for why that is deliberate.

Already a partner? Sign in to the partner portal to see your status, issue and revoke your own API keys, and manage who else is on your account. To read your status without signing in, /partners/status takes your reference and contact email and nothing else.

The API reference lives at /developers and the machine-readable contract at /openapi.json. Nothing on this page restates them — they are the one source.