# Wallet Service

{% 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 Wallet Service provides a set of endpoints to support the creation of a Data Wallet application that connects to a Solid Pod. With the Wallet Service:

* An application can incorporate Wallet capabilities for managing resources in the Wallet (e.g. **`Read`** , **`Write`** , **`Delete`** ).
* An application can incorporate Access Requests and Access Grants for managing access to data stored in the Wallet.
* An application can add the ability to download data from an external reference for storage in the Wallet.

## ESS Wallet Service Endpoints

ESS Wallet Service endpoints run at:

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

The ESS Wallet Service consists of the following endpoints:

### Wallet Endpoint

Create, Read, Update and Delete Wallet resources.

<table><thead><tr><th width="157.3984375">HTTP Method</th><th width="215.046875">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>GET</code></strong></td><td><strong><code>/wallet</code></strong></td><td>List all resources in the Wallet.</td></tr><tr><td><strong><code>PUT</code></strong></td><td><strong><code>/wallet</code></strong></td><td>Create or update a resource in the Wallet.</td></tr><tr><td><strong><code>GET</code></strong></td><td><strong><code>/wallet/{identifier}</code></strong></td><td>Get the content of a resource in the Wallet.</td></tr><tr><td><strong><code>DELETE</code></strong></td><td><strong><code>/wallet/{identifier}</code></strong></td><td>Delete a resource from the Wallet.</td></tr></tbody></table>

### Inbox Endpoint

Manage Access Requests in the Wallet inbox.

<table><thead><tr><th width="157.0859375">HTTP Method</th><th width="252.04296875">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>GET</code></strong></td><td><strong><code>/inbox</code></strong></td><td>List all Access Requests in the inbox.</td></tr><tr><td><strong><code>GET</code></strong></td><td><strong><code>/inbox/{uuid}</code></strong></td><td>Fetch the content of a specific Access Request from the inbox.</td></tr><tr><td><strong><code>DELETE</code></strong></td><td><strong><code>/inbox/{uuid}</code></strong></td><td>Delete an Access Request from the inbox.</td></tr><tr><td><strong><code>GET</code></strong></td><td><strong><code>/inbox/{uuid}/verify</code></strong></td><td>Verify an Access Request in the inbox.</td></tr><tr><td><strong><code>PUT</code></strong></td><td><strong><code>/inbox/{uuid}/grantAccess</code></strong></td><td>Grant access to a resource based on a specific Access Request in the inbox.</td></tr><tr><td><strong><code>PUT</code></strong></td><td><strong><code>/inbox/{uuid}/denyAccess</code></strong></td><td>Deny access to a resource based on a specific Access Request in the inbox.</td></tr></tbody></table>

### Access Grant Endpoint

Manage Access Grants in a user’s Wallet.

<table><thead><tr><th width="156.984375">HTTP Method</th><th width="263.8125">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>GET</code></strong></td><td><strong><code>/accessgrants</code></strong></td><td>List all Access Grants managed by the user’s Wallet.</td></tr><tr><td><strong><code>GET</code></strong></td><td><strong><code>/accessgrants/{uuid}</code></strong></td><td>Fetch an Access Grant managed by the user’s Wallet.</td></tr><tr><td><strong><code>DELETE</code></strong></td><td><strong><code>/accessgrants/{uuid}</code></strong></td><td>Delete an Access Grant managed by the user’s Wallet.</td></tr><tr><td><strong><code>PUT</code></strong></td><td><strong><code>/accessgrants/{uuid}/revoke</code></strong></td><td>Revoke and delete an Access Grant managed by the user’s Wallet.</td></tr><tr><td><strong><code>PUT</code></strong></td><td><strong><code>/accessgrants/revoke</code></strong></td><td>Revoke and delete multiple Access Grants managed by the user’s Wallet.</td></tr></tbody></table>

### Signup Endpoint

Initialize a Solid Pod for use with the Wallet.

<table><thead><tr><th width="157.1640625">HTTP Method</th><th width="226.1015625">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>POST</code></strong></td><td><strong><code>/signup</code></strong></td><td>Initialize a user’s Pod for use with the Wallet.</td></tr></tbody></table>

### Access Prompt Endpoint

Initiate and validate Access Request flows with third-party applications.

<table><thead><tr><th width="156.44921875">HTTP Method</th><th width="217.39453125">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>POST</code></strong></td><td><strong><code>/accessprompt</code></strong></td><td><strong>Endpoint subject to change</strong>. Send a prompt to a third party, initiating an Access Request flow.</td></tr><tr><td><strong><code>GET</code></strong></td><td><strong><code>/accessprompt/resource</code></strong></td><td><strong>Endpoint subject to change</strong>. Validate an Access Request and search the Wallet for data of the requested type.</td></tr></tbody></table>

### Login Endpoint

Facilitate login flows for applications.

<table><thead><tr><th width="152.6328125">HTTP Method</th><th width="221.046875">Endpoint</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>GET</code></strong></td><td><strong><code>/login/userInfo</code></strong></td><td><strong>Experimental</strong>. Provide user properties to a client application.</td></tr></tbody></table>

## Endpoint Access Control

The ESS Wallet Service endpoints listed above require the caller to be authenticated. The endpoints support the use of HTTP-only, secure session cookies.

## Wallet Service Configuration

As part of the [installation process](https://docs.inrupt.com/ess/2.5/installation), Inrupt provides base Kustomize overlays and associated files that require deployment-specific configuration inputs.

The following configuration options are available for the service and may be set as part of [updating the inputs for your deployment](https://docs.inrupt.com/ess/installation#step-1-initialize-the-installation-directory). The Inrupt-provided base Kustomize overlays may be using updated configuration values that differ from the default values.

### Required

#### **SPRING\_APPLICATION\_HTTP\_BASE\_URL**

Default : **`https://datawallet.<ESS Domain>`**

Specifies the root URL of the wallet service.

#### **SPRING\_SECURITY\_OAUTH2\_CLIENT\_REGISTRATION\_WALLET\_APP\_CLIENT\_ID**

Default : **`https://datawallet.<ESS Domain>/app/id`**

Specifies the URL of the ClientID document for the wallet service.

### Optional

Multiple third-party clients can be configured using indexed properties. The indexed property values must be consecutive non-negative integers starting at 0. For example:

```none
WALLET_APP_THIRD_PARTY_CLIENTS_0_CLIENT=ffc36f46-45cf-4dbd-853e-7cdc5587e206
WALLET_APP_THIRD_PARTY_CLIENTS_0_NAME=DataWallet Companion App
WALLET_APP_THIRD_PARTY_CLIENTS_1_CLIENT=8257876e-ec3f-4b4c-8dda-8a00142351eb
WALLET_APP_THIRD_PARTY_CLIENTS_1_NAME=Third-party Wallet Application
```

#### **WALLET\_APP\_THIRD\_PARTY\_CLIENTS\_{index}\_CLIENT**

A unique identifier for a third-party client. For example, **`ffc36f46-45cf-4dbd-853e-7cdc5587e206`** .

#### **WALLET\_APP\_THIRD\_PARTY\_CLIENTS\_{index}\_NAME**

A name for a third-party companion application. For example, “DataWallet Companion App”
