---
title: "Initiate OIDC Compose Credential Issuance"
method: POST
path: "/issuer/profiles/{profileID}/{profileVersion}/interactions/compose-and-initiate-issuance"
tags: ["issuer"]
---

# Initiate OIDC Compose Credential Issuance

`POST /issuer/profiles/{profileID}/{profileVersion}/interactions/compose-and-initiate-issuance`

Used by the issuer to initiate OIDCI credential issuance interaction in VCS. The response contains initiate issuance URL which can be used to initiate the flow from issuer applications.

## Request body

- InitiateOIDC4CIRequest — Model for Initiate OIDC Credential Issuance Request.
  - `client_initiate_issuance_url` string — URL of the issuance initiation endpoint of a Wallet. Takes precedence over client_wellknown request parameter. If both client_initiate_issuance_url and client_wellknown are not provided then response initiate issuance URL will contain custom initiate issuance URL in format openid-initiate-issuance://.
  - `client_wellknown` string — String containing wallet/holder application OIDC client wellknown configuration URL.
  - `op_state` string — String value created by the Credential Issuer and opaque to the Wallet that is used to bind the sub-sequent authentication request with the Credential Issuer to a context set up during previous steps. If the client receives a value for this parameter, it MUST include it in the subsequent Authentication Request to the Credential Issuer as the op_state parameter value. MUST NOT be used in Authorization Code flow when pre-authorized_code is present.
  - `grant_type` 'authorization_code' | 'urn:ietf:params:oauth:grant-type:pre-authorized_code' — Issuer can provide custom grant types through this parameter. This grant type has to be used while exchanging an access token for authorization code in later steps.
  - `scope` string[] — Contains scopes that issuer expects VCS to use while requesting authorization code for claim data. Defaults to openid.
  - `response_type` string — Contains response type that issuer expects VCS to use while performing OIDC authorization request. Defaults to token.
  - `authorization_details` string — Customizes what kind of access Issuer wants to give to VCS.
  - `user_pin_required` boolean — Required for Pre-Authorized Code Flow. Boolean value specifying whether the issuer expects presentation of a user PIN along with the Token Request in a pre-authorized code flow.
  - `wallet_initiated_issuance` boolean — Boolean flags indicates whether given transaction is initiated by Wallet.
  - `credential_configuration` InitiateIssuanceCredentialConfiguration[] — An array of objects that describes specifics of the Multiple Credential Issuance.
    - `claim_data` object, nullable — Required for Pre-Authorized Code Flow. VCS OIDC Service acts as OP for wallet applications
    - `claim_endpoint` string, nullable — Claim endpoint of the Issuer from where credential claim data has to be requested after successfully acquiring access tokens.
    - `credential_template_id` string — Template of the credential to be issued while successfully concluding this interaction. REQUIRED, if the profile is configured to use multiple credential templates.
    - `credential_expires_at` string, date-time — Date when credentials should be consider as expired
    - `credential_name` string — Credential name
    - `credential_description` string — Credential description

## Response `200`

OK

- InitiateOIDC4CIComposeRequest — Model for Initiate OIDC Compose Credential Issuance Request.
  - `client_initiate_issuance_url` string — URL of the issuance initiation endpoint of a Wallet. Takes precedence over client_wellknown request parameter. If both client_initiate_issuance_url and client_wellknown are not provided then response initiate issuance URL will contain custom initiate issuance URL in format openid-initiate-issuance://.
  - `client_wellknown` string — String containing wallet/holder application OIDC client wellknown configuration URL.
  - `op_state` string — String value created by the Credential Issuer and opaque to the Wallet that is used to bind the sub-sequent authentication request with the Credential Issuer to a context set up during previous steps. If the client receives a value for this parameter, it MUST include it in the subsequent Authentication Request to the Credential Issuer as the op_state parameter value. MUST NOT be used in Authorization Code flow when pre-authorized_code is present.
  - `grant_type` 'authorization_code' | 'urn:ietf:params:oauth:grant-type:pre-authorized_code' — Issuer can provide custom grant types through this parameter. This grant type has to be used while exchanging an access token for authorization code in later steps.
  - `scope` string[] — Contains scopes that issuer expects VCS to use while requesting authorization code for claim data. Defaults to openid.
  - `response_type` string — Contains response type that issuer expects VCS to use while performing OIDC authorization request. Defaults to token.
  - `authorization_details` string — Customizes what kind of access Issuer wants to give to VCS.
  - `user_pin_required` boolean — Required for Pre-Authorized Code Flow. Boolean value specifying whether the issuer expects presentation of a user PIN along with the Token Request in a pre-authorized code flow.
  - `wallet_initiated_issuance` boolean — Boolean flags indicates whether given transaction is initiated by Wallet.
  - `compose` InitiateIssuanceCredentialConfigurationCompose[] — An array of objects that describes specifics of the Multiple Credential Issuance.
    - `credential_override_id` string, nullable — override for the ID field in credentialSubject. Supports templating.
    - `credential_override_issuer` boolean, nullable — Override issuer.
    - `credential_override_subject_did` boolean, nullable — Override credential subject did.
    - `credential_perform_strict_validation` boolean, nullable — Perform strict validation.
    - `credential` object — Raw Complete credential for sign and customization
    - `credential_expires_at` string, date-time — Date when credentials should be consider as expired

## Other responses

- `400` — Bad request

---

[API](https://skmtc.net/trustbloc/apis/verifiable-credential-service-vcs.md) · [All operations](https://skmtc.net/trustbloc/apis/verifiable-credential-service-vcs/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/trustbloc/verifiable-credential-service-vcs/revisions/9e21ad997121/schema)
