> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sumvin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Stamped Mandate Lifecycle

> Listing, inspecting, and revoking Stamped Mandates via the SIS API

After a <Tooltip headline="Stamped Mandate" tip="A signed authorisation a user grants for specific scoped actions — delivered on the wire as a PINT." cta="Glossary →" href="/glossary">Stamped Mandate</Tooltip> (PINT) is created via the [token exchange](/identity/token-exchange), it becomes a managed resource in the SIS. You can list, inspect, and revoke Stamped Mandates, and query which JWTs have been issued against them.

<Snippet file="product-term-disambiguation.mdx" />

A Stamped Mandate is delivered over the API as a `PINT` (header `x-sumvin-pint-token`). The routes, query parameters, and response fields on this page use the `PINT` identifier verbatim.

<Info>
  Stamped Mandate lifecycle management is in early access, and the endpoints below are the contract they will ship with. Partners operating against them today can harden their revocation, listing, and inspection flows against the real launch shape — contact your account manager for sandbox access.
</Info>

## Stamped Mandate States

```mermaid theme={null}
stateDiagram-v2
    [*] --> active : Stamped Mandate created via token exchange
    active --> expired : TTL expires (automatic)
    active --> revoked : DELETE /v0/sis/pint/{id}
    note right of active : New JWTs can be issued
    note right of expired : Automatic transition
    note right of revoked : All issued JWTs invalidated
```

| Status    | Description                                                                         |
| --------- | ----------------------------------------------------------------------------------- |
| `active`  | Mandate is valid. New audience-scoped JWTs can be issued against it                 |
| `expired` | Mandate's `expiresAt` timestamp has passed. Automatic transition                    |
| `revoked` | Mandate was explicitly revoked by the wallet owner. All issued JWTs are invalidated |

Stamped Mandates are never "consumed" — they remain `active` until they expire or are revoked, regardless of how many JWTs have been issued against them.

## List Stamped Mandates

```
GET /v0/sis/pint?wallet=0x...
```

Query Stamped Mandates for a wallet with filtering and cursor-based pagination.

```bash theme={null}
curl "https://sis.sumvin.com/v0/sis/pint?wallet=0xE23c9A70BC749EBddd8c78a864fd911D04E9e992&status=active&limit=20" \
  -H "Authorization: Bearer <your-api-key>"
```

### Query Parameters

| Parameter | Type    | Default      | Description                            |
| --------- | ------- | ------------ | -------------------------------------- |
| `wallet`  | string  | —            | **Required.** Filter by wallet address |
| `status`  | string  | `active`     | Filter: `active`, `revoked`, `expired` |
| `sort`    | string  | `created_at` | Sort field: `created_at`, `expires_at` |
| `order`   | string  | `desc`       | Sort direction: `asc`, `desc`          |
| `limit`   | integer | 20           | Page size (max 50)                     |
| `cursor`  | string  | —            | Cursor for pagination                  |

### Response

```json theme={null}
{
  "data": [
    {
      "pint_id": "sr:us:pint:abc123",
      "status": "active",
      "wallet": "0xE23c9A70BC749EBddd8c78a864fd911D04E9e992",
      "scopes": ["sr:us:pint:identity:proof_of_personhood"],
      "signer_type": "user",
      "created_at": "2026-02-13T10:00:00Z",
      "expires_at": "2026-02-13T12:00:00Z",
      "token_count": 2,
      "_links": {
        "self": { "href": "/v0/sis/pint/sr:us:pint:abc123" },
        "status": { "href": "/v0/sis/pint/sr:us:pint:abc123/status" },
        "tokens": { "href": "/v0/sis/pint/sr:us:pint:abc123/tokens" },
        "revoke": { "href": "/v0/sis/pint/sr:us:pint:abc123", "method": "DELETE" }
      }
    }
  ],
  "pagination": {
    "cursor": "eyJjcmVhdGVkX2F0Ijo...",
    "has_more": true
  },
  "_links": {
    "self": { "href": "/v0/sis/pint?wallet=0x...&status=active&limit=20" },
    "next": { "href": "/v0/sis/pint?wallet=0x...&status=active&limit=20&cursor=eyJjcmVhdGVkX2F0Ijo..." }
  }
}
```

**Access control:** Wallet owner only.

## Get Stamped Mandate Detail

```
GET /v0/sis/pint/{pint_id}
```

Returns the full Stamped Mandate resource. Supports an `expand` parameter to inline related resources.

```bash theme={null}
curl "https://sis.sumvin.com/v0/sis/pint/sr:us:pint:abc123?expand=tokens" \
  -H "Authorization: Bearer <your-api-key>"
```

| Parameter | Type      | Description                                  |
| --------- | --------- | -------------------------------------------- |
| `expand`  | string\[] | Expand nested resources. Supported: `tokens` |

### Response (with `?expand=tokens`)

```json theme={null}
{
  "pint_id": "sr:us:pint:abc123",
  "status": "active",
  "wallet": "0xE23c9A70BC749EBddd8c78a864fd911D04E9e992",
  "nonce": 42,
  "statement": "Purchase authorization for partner X",
  "scopes": ["sr:us:pint:identity:proof_of_personhood", "sr:us:pint:personalization:read"],
  "resources": ["sr:us:pint:abc123"],
  "max_amount": 0,
  "max_amount_token": "0x0000000000000000000000000000000000000000",
  "signer_type": "user",
  "kyc_status": "verified",
  "created_at": "2026-02-13T10:00:00Z",
  "expires_at": "2026-02-13T12:00:00Z",
  "revoked_at": null,
  "token_count": 2,
  "tokens": [
    {
      "jti": "jwt-001",
      "audience": "partner-x.example.com",
      "issued_at": "2026-02-13T10:01:00Z",
      "expires_at": "2026-02-13T12:00:00Z",
      "revoked": false
    },
    {
      "jti": "jwt-002",
      "audience": "partner-y.example.com",
      "issued_at": "2026-02-13T10:05:00Z",
      "expires_at": "2026-02-13T12:00:00Z",
      "revoked": false
    }
  ],
  "_links": {
    "self": { "href": "/v0/sis/pint/sr:us:pint:abc123" },
    "status": { "href": "/v0/sis/pint/sr:us:pint:abc123/status" },
    "tokens": { "href": "/v0/sis/pint/sr:us:pint:abc123/tokens" },
    "revoke": { "href": "/v0/sis/pint/sr:us:pint:abc123", "method": "DELETE" },
    "issue_token": { "href": "/v0/sis/token/pint", "method": "POST" }
  }
}
```

**Access control:** Wallet owner or authorised third-party caller.

## Revoke a Stamped Mandate

```
DELETE /v0/sis/pint/{pint_id}
```

Revokes a Stamped Mandate and invalidates all JWTs issued against it.

```bash theme={null}
curl -X DELETE "https://sis.sumvin.com/v0/sis/pint/sr:us:pint:abc123" \
  -H "Authorization: Bearer <your-api-key>"
```

**Returns `204 No Content`** on success.

When a Stamped Mandate is revoked:

* The mandate status transitions to `revoked` with a `revoked_at` timestamp
* All JWTs issued against it are marked as revoked
* The [revocation check endpoint](/merchant/revocation) will return `"valid": false` for this mandate
* Subsequent token exchange calls for this mandate return `409 Conflict`

| Status | When                                 |
| ------ | ------------------------------------ |
| 204    | Stamped Mandate revoked successfully |
| 404    | Stamped Mandate not found            |
| 409    | Stamped Mandate is already revoked   |

**Access control:** Wallet owner only.

## List Issued Tokens

```
GET /v0/sis/pint/{pint_id}/tokens
```

Lists all audience-scoped JWTs that have been issued against a Stamped Mandate.

```bash theme={null}
curl "https://sis.sumvin.com/v0/sis/pint/sr:us:pint:abc123/tokens" \
  -H "Authorization: Bearer <your-api-key>"
```

```json theme={null}
{
  "pint_id": "sr:us:pint:abc123",
  "data": [
    {
      "jti": "jwt-001",
      "audience": "partner-x.example.com",
      "issued_at": "2026-02-13T10:01:00Z",
      "expires_at": "2026-02-13T12:00:00Z",
      "revoked": false
    }
  ],
  "_links": {
    "pint": { "href": "/v0/sis/pint/sr:us:pint:abc123" },
    "issue_token": { "href": "/v0/sis/token/pint", "method": "POST" }
  }
}
```

**Access control:** Wallet owner only.
