🛠️
Technical Documentation
  • Introduction
    • About Empeiria
  • Empe Blockchain
    • Overview
    • Chain Architecture
      • Auth
      • Authz
      • Bank
      • Distribution
      • Governance
      • Staking
      • IBC
      • DidDoc
      • Vesting
      • Minter
  • EVDI
    • EVDI Architecture
    • Self-Sovereign Identity
      • Technical Foundations
      • Roles in the SSI framework
      • Protocols and Standards
  • User Guide
    • Empe DID Wallet
      • Intro
      • Download and first launch
      • Create or import did
      • Main screen overview
      • How to claim credential from issuer
      • How to use credential with verifier
      • Settings and other options
    • Keplr Wallet and Blockchain Operations
      • How to Connect Keplr Wallet
    • Ping Pub operation
    • Staking Tokens Guide
    • Voting on Governance Proposals Guide
    • Sending Tokens Guide
  • Developer Guide
    • Tutorial: Credential Issuance & Verification
      • Overview
      • Understanding Key Concepts
      • Project Setup
      • Deploying the Issuer
      • Uploading the Credential Schema
      • Issuing Credentials
      • Frontend for Credential Issuance
      • Testing Credential Issuance
      • Deploying the Verifier
      • Setting Up the Verification Flow
      • Creating a Verification Endpoint
      • Creating a Protected Dashboard
      • Testing the Verification Flow
      • Summary & Next Steps
    • One-click deployment
      • Introduction
      • Registration
      • Login
      • Creating an Issuer
      • Issuer Data Description
      • Creating a Verifier
      • Verifier Data Description
    • Verifier
      • Terminology and Concepts
      • Architecture Overview
      • Core Responsibilities
      • Query Language
      • Frontend Integration
      • Client Configuration
      • Security Considerations
      • Error Handling and Troubleshooting
      • Future Enhancements
      • References and Standards
      • FAQ
    • Issuer
      • Terminology and Concepts
      • Architecture Overview
      • Core Responsibilities
      • DID Document Management
      • Schemas Management
      • Issuing Credentials
      • Interacting with Wallets
      • Security Considerations
      • Error Handling and Troubleshooting
      • Future Enhancements
      • References and Standards
      • FAQ
    • Wallet SDK (Coming soon)
    • Introduction to cosmwasm
  • Validator Guide
    • Important links
    • Validators Guide
      • New validator
      • Hardware requirements
      • Required software installation
      • Go installation
      • Install prebuild binary
      • Install binary from source code (option B)
      • Configure a node
      • Cosmovisor setup
      • Sync with state-sync
      • Full state sync from archive snapshot
      • Latest snapshot
      • Run a Validator
      • Migration to v0.2.2
      • Migration to v0.3.0
    • FAQ
  • Appendix
    • Glossary
Powered by GitBook
On this page
  1. Developer Guide
  2. Issuer

Issuing Credentials

Issuing credentials involves creating an offering and enabling recipients to claim them via their wallets.

High-Level Steps:

  1. Create Offering:

    POST /api/v1/offering
    x-client-secret: [Client Secret]
    Content-Type: application/json

    Specify credential type, credential_subject, and optionally a recipient DID.

    • Targeted offering: requires recipient DID.

    • Open offering: no recipient needed, accessible by any wallet scanning the QR code.

  2. QR Code Generation: The response includes a qr_code_url. The client app converts this into a scannable QR code.

  3. Wallet Scans and Authenticates: The wallet retrieves offering details. For targeted offerings, it proves DID ownership via:

    • POST /api/v1/authorize
      POST /api/v1/authorize/verify

    On success, an authorization code is issued.

  4. Token Exchange:

    POST /api/v1/connect/token
    Content-Type: application/json
    {
      "authorization_code": "validAuthorizationCode"
    }

    Response:

    {
      "access_token": "JWTAccessToken",
      "token_type": "Bearer",
      "expires_in": 3600
    }
  5. Credential Retrieval:

    POST /api/v1/issue-credential/{id}
    Authorization: Bearer JWTAccessToken

    Example Response:

    {
      "id": "credential-id",
      "type": "ProofOfPurchase",
      "recipient": "did:empe:123456789",
      "credentialSubject": {
        "ticket": "ticket123",
        "seat": "A12",
        "description": "Concert ticket"
      },
      "vc": {...}
    }
  6. Credential Storage: The wallet stores the Verifiable Credential locally.

Targeted vs. Open Offerings:

  • Targeted Offering: Recipient DID specified, requires DID ownership proof.

  • Open Offering: Available to anyone scanning the QR code (e.g., Proof of Attendance).

This flow ensures a secure, user-friendly credential distribution process aligned with SSI standards.

PreviousSchemas ManagementNextInteracting with Wallets

Last updated 4 months ago