# Presentations

A presentation, short for [Verifiable Presentation](https://www.w3.org/TR/vc-data-model/#presentations), is a data model that allows a Holder of [Verifiable Credentials (VCs)](https://www.w3.org/TR/vc-data-model/#credentials) to present their VCs to a Verifier. The Verifier can then attest the authorship of the credentials included in the presentation.

The data format used for a presentation is [vp-jwt](https://www.w3.org/TR/vc-data-model/#json-web-token). Other formats are not supported at this time.

## Prerequisites

* [DID](https://docs.meeco.me/guides/api-guides/dids/did-methods)
* [Credentials](https://docs.meeco.me/guides/api-guides/credentials)

## Who can undertake this operation?

Presentations are generated by the Holder and are verified by an Organisation (Verifier), or another user.

## Generate Verifiable Presentation

Generate a verifiable presentation, ready for signing.

**Endpoint**

```bash
POST /presentation/generate
```

**Request**

* DID
* List of VCs

**Response**

The presentation object that includes an unsigned JWT. The client calling this endpoint (e.g. Holder wallet) is responsible for adding the signature.

## Verify Verifiable Presentation

Verify a given verifiable presentation. The steps performed during verification are:

1. Validate the presentation structure
2. Resolve the presentation DID
3. Verify the presentation signature
4. For each credential in the presentation:
   * Validate the credential structure
   * Resolve the Issuer DID
   * Verify the credential signature

**Endpoint**

```bash
POST /presentation/verify
```

**Request**

* Verifiable Presentation – supported format is vp-jwt

**Response**

The result of the verification, either true or false. In the event the response is false, all errors are provided, with an explanation.
