| Setup | Registers the issuer’s DID, endpoints, API key, and JWKS URL. Hosts schemas and programs in the Developer Dashboard. | Publishes its DID document and keys on its own domain | — |
| Identify the user | Maintains the user’s AIR Account and DID, and keeps the user’s public encryption and signing keys | Identifies the user in its own systems by its partner user ID | The user signs in to AIR |
| Preview (on-demand) | Calls the issuer’s available-vc endpoint with the user’s identity and public encryption key, then relays the encrypted previews | Loads claims and encrypts each preview to the user | Decrypts and shows the preview |
| Issue | Calls the issuer’s issue-vc endpoint, adding the user’s public signing key. For direct issuance, resolves the user by email instead. | Builds, binds, signs, and encrypts the credential | The user confirms (on-demand only) |
| Store | Receives the encrypted envelope through its DStorage API, writes it to Moca Chain storage providers, and returns a storage path | Calls the DStorage API with a Partner JWT | — |
| Index | Keeps cleartext metadata to find the credential later: holder DID, schema, format, expiry, storage path | Keeps its own issuance record, if it has a database | — |
| Discover (at verification) | Finds the user’s credentials that match a verification program | — | Fetches the ciphertext and decrypts it locally |
| Verify | Loads the program, keeps a verification session record, and, when the program enables it, asks the issuer for revocation status | Answers revocation status requests | Records consent, builds the presentation, and signs it with the user’s key |