# Offers (DCP)

{% hint style="info" %}
Specifications and best practice implementations for Verifiable Credentials are currently being developed. This page is expected to be updated, closely following these developments.
{% endhint %}

The `POST` request to the `/offers` endpoint prompts a holder to request a new Verifiable Credential.

{% hint style="info" %}
The `POST` request to the `/offers` is an **OPTIONAL** endpoint and is part of the iSHARE Framework's Verifiable Credentials support in line with the **Decentralised Claims Protocol (DCP)**.
{% endhint %}

## Issuer initiates reissuance of credential at holder

> A Credential Issuer can proactively prompt a Holder to request a new Verifiable Credential. More information in the \[DCP specification]\(<https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/#credential-offer-api>).

```json
{"openapi":"3.1.0","info":{"title":"iSHARE Decentralized Claims Protocol (DCP) API specifications","version":"3.0"},"tags":[{"name":"Holder","description":"Endpoints relevant for the VC Holder role (e.g., storing credentials, receiving offers)."}],"paths":{"/offers":{"post":{"tags":["Holder"],"summary":"Issuer initiates reissuance of credential at holder","description":"A Credential Issuer can proactively prompt a Holder to request a new Verifiable Credential. More information in the [DCP specification](https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/#credential-offer-api).","operationId":"post-offer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/x-ext/f1da757"}}}},"responses":{"200":{"description":"Credential offer received successfully"},"400":{"description":"Bad Request - Invalid credential offer request"},"500":{"description":"Internal Server Error"}}}}}}
```

### Request model

The model for the CredentialOfferMessage is defined in: <https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/resources/issuance/credential-offer-message-schema.json>.

* `@context`\
  **Array of Strings**. Root level. <mark style="color:red;">(Required)</mark>\
  Specifies a valid Json-Ld context. Must contain `"https://w3id.org/dspace-dcp/v1.0/dcp.jsonld"`
* `type`\
  **String**. Root level. <mark style="color:red;">(Required)</mark>\
  A string specifying the CredentialOfferMessage type. Must contain `"CredentialOfferMessage"`
* `issuer`

  **String**. Root level. <mark style="color:red;">(Required)</mark>\
  The credential issuer DID.
* `credentials`\
  **Array of Objects**. Root level. <mark style="color:red;">(Required)</mark>\
  An array of [credential objects](https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/#credentialobject) that the issuer supports.
  * `id`\
    **String**. Contained in the credential object. <mark style="color:red;">(Required)</mark>\
    A string defining a unique, stable identifier for this CredentialObject.
  * `type`\
    **String**. Contained in credential object. <mark style="color:red;">(Required)</mark>\
    A string specifying the object type. Must contain `CredentialObject`.
  * `credentialType`\
    **String**. Contained in credential object.\
    A single string specifying type of credential being offered.
  * `bindingMethods`\
    **Array of strings**. Contained in credential object.\
    An array of strings defining the key material that an issued credential is bound to.
  * `profile`\
    **String**. Contained in credential object.\
    Contains the alias of the [profiles](https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/#profiles-of-the-decentralized-claims-protocol), e.g. `"vc20-bssl/jwt"`.
  * `issuancePolicy`\
    **Object**. Contained in credential object.\
    A [presentation definition](https://identity.foundation/presentation-exchange/spec/v2.1.1/#presentation-definition) signifying the required [Verifiable Presentation](https://eclipse-dataspace-dcp.github.io/decentralized-claims-protocol/v1.0/#dfn-verifiable-presentation) for issuance. Further details are omitted from this specifications, refer to <https://identity.foundation/presentation-exchange/spec/v2.1.1/#presentation-definition> for more information.

### Example request

```json
POST /offers
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json

{
  "@context": [
    "https://w3id.org/dspace-dcp/v1.0/dcp.jsonld"
  ],
  "type": "CredentialOfferMessage",
  "issuer": "did:ishare:EU.NL.NTRLNL-10000000",
  "credentials": [
    {
      "id": "d5c77b0e-7f4e-4fd5-8c5f-28b5fc3f96d1",
      "type": "CredentialObject",
      "credentialType": "FrameworkRole",
      "bindingMethods": [
        "did:web"
      ],
      "profile": "vc10-sl2021/jwt",
      "issuancePolicy": {
        "id": "a468fc48-5c1a-43c7-903e-ab1851882afb",
        "input_descriptors": [
          {
            "id": "framework-compliance",
            "name": "Requires proof of compliance to framework",
            "purpose" :: 
            "constraints": {
              "fields": [
                {
                  "path": [
                    "$.vc.type"
                  ],
                  "filter": {
                    "type": "string",
                    "pattern": "^FrameworkCompliance$"
                  }
                }
              ]
            }
          }
        ]
      }
    }
  ]
}
```

### Response model

On succesfull receipt of the CredentialOfferMessage, the holder must return a 200 code.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.ishare.eu/all-roles-common-endpoints/m2m-verifiable-credential-endpoints/offers-dcp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
