# Inbox Endpoint

{% hint style="success" %}
Added in version 2.3.
{% endhint %}

{% hint style="warning" %}
**Developer Preview**\
The ESS Wallet Service endpoints are available as part of a Developer Preview program to allow early access to these features. Please be aware that these APIs may change.
{% endhint %}

The ESS Wallet Service provides the following endpoint for interacting with resources stored in the Wallet inbox:

```none
https://datawallet.{ESS Domain}/inbox
```

{% hint style="info" %}
**Note**\
To access the **`/inbox`** endpoint, users must be authenticated. The endpoint supports the use of HTTP-only, secure session cookies.
{% endhint %}

## List Inbox Items

The Wallet Service provides an endpoint to list all of the items currently stored in the inbox of the Wallet.

<table data-header-hidden><thead><tr><th width="160.8359375"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>GET</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>application/json</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Output

Returns an array of inbox items.

**Example response**

```json
[
  {
    "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "identifier": "https://example.com/",
    "webId": "https://id.{DOMAIN}/{username}",
    "resource": "https://storage.example/data/MyResource",
    "resourceName": "MyResource",
    "forPurpose": "https://example.com/",
    "expirationDate": "2024-07-19T09:18:52.233Z",
    "issuedDate": "2024-07-19T09:18:52.233Z",
    "modes": [
      "read"
    ],
    "logo": "https://images.example/logo.png",
    "ownerName": "Example Name",
    "isRDFResource": true
  }
]
```

The fields have the following values:

<table><thead><tr><th width="160.8671875">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>A unique identifier of this inbox item.</td></tr><tr><td><strong><code>identifier</code></strong></td><td>The URI identifying the inbox item.</td></tr><tr><td><strong><code>webId</code></strong></td><td>The WebID of the party requesting access to a resource.</td></tr><tr><td><strong><code>resource</code></strong></td><td>The URI of the resource within the Wallet to which access has been requested.</td></tr><tr><td><strong><code>resourceName</code></strong></td><td>The short-name of the resource within the Wallet to which access has been requested, without the hostname and parent path.</td></tr><tr><td><strong><code>forPurpose</code></strong></td><td>The URI of the document describing the purpose of this Access Request.</td></tr><tr><td><strong><code>expirationDate</code></strong></td><td>The expiration date of the Access Request in ISO-8601 format.</td></tr><tr><td><strong><code>issuedDate</code></strong></td><td>The date of issuance of the Access Request in ISO-8601 format.</td></tr><tr><td><strong><code>modes</code></strong></td><td>The modes of access that will be granted if this access request is approved (e.g. <strong><code>read</code></strong>, <strong><code>write</code></strong>, <strong><code>append</code></strong>).</td></tr><tr><td><strong><code>logo</code></strong></td><td>A URI identifying a logo to associate with the party requesting access to a resource (for display within the Wallet user interface).</td></tr><tr><td><strong><code>ownerName</code></strong></td><td>The name of the party requesting access to a resource, if available.</td></tr><tr><td><strong><code>webId</code></strong></td><td>The WebID of the party requesting access to a resource.</td></tr><tr><td><strong><code>isRDFResource</code></strong></td><td>Boolean value indicating whether this resource contains RDF data.</td></tr></tbody></table>

## Read Inbox Item

The Wallet Service provides an endpoint to get the content of an inbox item.

<table data-header-hidden><thead><tr><th width="157.8046875"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>GET</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>*/*</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox/{uuid}</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Input

<table><thead><tr><th width="162.046875">Path Parameter</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The UUID of the inbox item to read.</td></tr></tbody></table>

### Output

The content of the inbox item.

## Delete Inbox Item

The Wallet Service provides an endpoint to delete an inbox item.

<table data-header-hidden><thead><tr><th width="160.39453125"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>DELETE</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>application/json</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox/{identifier}</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Input

<table><thead><tr><th width="160.8984375">Path Parameter</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The UUID of the inbox item to be deleted.</td></tr></tbody></table>

### Output

Upon completion, a status message is returned.

**Example response**

```json
{
    "message": "success"
}
```

The fields have the following values:

<table><thead><tr><th width="159.5390625">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>message</code></strong></td><td>A successful operation includes the string “success”.</td></tr><tr><td><strong><code>error</code></strong></td><td>An unsuccessful operation describes the failure category, such as “UNAUTHORIZED”.</td></tr></tbody></table>

## Verify Access Request

The Wallet Service provides an endpoint to verify that an Access Request within the inbox is valid and passes the [verification checks described by the Access Grant Service](https://docs.inrupt.com/ess/2.5/services/service-access-grant/service-access-grant-verifier) .

<table data-header-hidden><thead><tr><th width="159.64453125"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>GET</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>application/json</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox/{uuid}/verify</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Input

<table><thead><tr><th width="160.80859375">Path Parameter</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The UUID of the inbox item to be verified.</td></tr></tbody></table>

### Output

Upon completion, the verification results are returned.

**Example Response**

```json
{
  "identifier": "https://credential.example/{uuid}",
  "detail": {
    "checks": [
      "string"
    ],
    "warnings": [
      "string"
    ],
    "errors": [
      "string"
    ]
  },
  "status": "Invalid"
}
```

<table><thead><tr><th width="159.7421875">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>checks</code></strong></td><td>Lists the checks performed during verification.</td></tr><tr><td><strong><code>warnings</code></strong></td><td>Lists any warnings that occurred during verification.</td></tr><tr><td><strong><code>errors</code></strong></td><td>Lists any errors that occurred during verification.</td></tr><tr><td><strong><code>status</code></strong></td><td>The status of the verification, either <strong><code>Valid</code></strong> or <strong><code>Invalid</code></strong>.</td></tr></tbody></table>

## Grant Access Request

The Wallet Service provides an endpoint to generate an Access Grant based on an inbox Access Request.

<table data-header-hidden><thead><tr><th width="160.015625"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>PUT</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>application/json</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox/{uuid}/grantAccess</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Input

<table><thead><tr><th width="159.8828125">Path Parameter</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The UUID of the inbox item to be used to generate an Access Grant.</td></tr></tbody></table>

### Output

Upon completion a description of the new Access Grant is returned that can be used to display the Grant within the Wallet user interface.

**Example Response**

```json
{
  "uuid": "fc2f50db-bdb3-43d7-b194-9868512d2459",
  "identifier": "https://accessgrant.example/b7e42e71-8a67-44e8-b3da-fe2a778a9e28",
  "webId": "https://id.example/agent",
  "resource": "https://storage.example/data/MyResource",
  "resourceName": "MyResource",
  "forPurpose": "https://example.com/",
  "expirationDate": "2024-07-19T10:45:24.138Z",
  "issuedDate": "2024-07-19T10:45:24.138Z",
  "modes": [
    "read"
  ],
  "logo": "https://images.example/logo.png",
  "ownerName": "Example Name",
  "isRDFResource": true
}
```

The fields have the following values:

<table><thead><tr><th width="161.7265625">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The unique identifier of this inbox resource.</td></tr><tr><td><strong><code>identifier</code></strong></td><td>An identifier of the Access Grant.</td></tr><tr><td><strong><code>webId</code></strong></td><td>The WebID of the party granted access to a resource.</td></tr><tr><td><strong><code>resource</code></strong></td><td>The URI of the resource to which access has been granted.</td></tr><tr><td><strong><code>resourceName</code></strong></td><td>A short name of the resource to which access has been granted.</td></tr><tr><td><strong><code>forPurpose</code></strong></td><td>The URI of the document describing the purpose of this Access Grant.</td></tr><tr><td><strong><code>expirationDate</code></strong></td><td>The expiration of the Access Grant in ISO-8601 format.</td></tr><tr><td><strong><code>issuedDate</code></strong></td><td>The date of issuance of the Access Grant in ISO-8601 format.</td></tr><tr><td><strong><code>modes</code></strong></td><td>The modes of access granted (e.g. <strong><code>read</code></strong>, <strong><code>write</code></strong>, <strong><code>append</code></strong>).</td></tr><tr><td><strong><code>logo</code></strong></td><td>A URI identifying a logo to associate with the party granted access to a resource (for display within the Wallet user interface).</td></tr><tr><td><strong><code>ownerName</code></strong></td><td>The name of the party granted access to a resource, if available.</td></tr><tr><td><strong><code>isRDFResource</code></strong></td><td>Boolean value indicating whether the resource contains RDF data.</td></tr></tbody></table>

## Deny Access Request

The Wallet Service provides an endpoint to deny an Access Request that has been added to the inbox.

<table data-header-hidden><thead><tr><th width="160.38671875"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><strong><code>PUT</code></strong></td></tr><tr><td>Content-Type</td><td><strong><code>application/json</code></strong></td></tr><tr><td>Endpoint</td><td><strong><code>https://datawallet.{ESS Domain}/inbox/{uuid}/denyAccess</code></strong></td></tr><tr><td>Payload</td><td>none</td></tr></tbody></table>

### Input

<table><thead><tr><th width="159.671875">Path Parameter</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>uuid</code></strong></td><td>The UUID of the inbox item to be used to generate an Access Denial.</td></tr></tbody></table>

### Output

Upon completion, a status message is returned.

**Example response**

```json
{
    "message": "success"
}
```

The fields have the following values:

<table><thead><tr><th width="159.62109375">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong><code>message</code></strong></td><td>A successful operation includes the string “success”.</td></tr><tr><td><strong><code>error</code></strong></td><td>An unsuccessful operation describes the failure category, such as “UNAUTHORIZED”.</td></tr></tbody></table>
