Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,9 @@ The Edit Tenant page includes the following sections:
| | Email | The tenant's email address. |
| Identity Provider Information | Consent URL | The URL for the tenant's identity provider consent endpoint. |
| | Secret | The secret for the tenant's identity provider. |
| Sensitive Information | API Secret | A unique identifier assigned by Rafiki when the tenant was created. This cannot be changed. |
| Sensitive Information | API Secret | The tenant's API credential used to authenticate requests. Read-only for operators. |

You can modify the public name, email, consent URL, and secret for a tenant. The tenant ID and API secret are read-only.
You can modify the public name, email, consent URL, and secret for a tenant. The tenant ID cannot be changed. The API secret is read-only for operators but can be rotated by the tenants when logged in under their own account.

After editing any of the preceding fields, select **Save** to commit those changes.

Expand Down Expand Up @@ -266,6 +266,10 @@ While the Edit Asset page shares fields with the Create Asset page, it also incl

After editing any of the preceding fields in the General Information or Sending Fee sections, select **Save** to commit those changes.

:::note
The asset code and scale cannot be modified after creation. These fields remain read-only when viewing or editing an existing asset.
:::

#### Delete asset

The final section of the Edit Asset page is the irreversible action of deleting an asset. Select **Delete asset** to make this change.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,14 @@ An asset represents an item of value that can be transferred via the Interledger

**Permissions**

- Operators can create assets for any tenant
- Operators can view any asset
- Operators can edit and delete assets that belong to any tenant
- Tenants can only view their own assets
- Tenants can only edit and delete their own assets
- Tenants cannot create assets
Operators can create, view, edit, and delete both their own assets and those that belong to any tenant.

Tenants can view, edit, and delete only their own assets. They cannot create assets.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tenants can also create their own assets


## Add an asset

Use the `createAsset` mutation to register a new asset with your Rafiki instance.

<Tabs>
<TabItem label="Operation">
```graphql
Expand Down Expand Up @@ -81,3 +80,150 @@ The `asset` object in the response will include the `tenantId` of the tenant to

</TabItem>
</Tabs>

## Update an asset

Once an asset has been created, you may need to adjust its operational threshold values. You can use the `updateAsset` mutation to modify the `withdrawalThreshold` and `liquidityThreshold`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we de-emphasize withdrawalThreshold here? 😅 Its referring to old behaviour for web monetization for wallet addresses. But liquidityThreshold is good to keep, this is indeed after which we would send the liquidity low notifications/webhooks


These thresholds influence when Rafiki triggers low‑liquidity notifications but do not directly deposit or withdraw asset liquidity.

For information about adding or removing liquidity, see [Asset liquidity](/admin/liquidity/asset-liquidity).

<Tabs>
<TabItem label="Operation">
```graphql
mutation UpdateAsset($input: UpdateAssetInput!) {
updateAsset(input: $input) {
asset {
id
code
scale
withdrawalThreshold
liquidityThreshold
tenantId
}
}
}
```
</TabItem>

<TabItem label="Variables">
The input object for the update operation requires the asset `id`. Only the threshold fields are editable; all other fields are immutable.

```json
{
"input": {
"id": "b3dffeda-1e0e-47d4-82a3-69b1a622eeb9",
"withdrawalThreshold": 100,
"liquidityThreshold": 500
}
}
```

For more information about this mutation’s input object, see [`UpdateAssetInput`](/apis/graphql/backend/#definition-UpdateAssetInput).

:::note[Tenant ID and HMAC-signed request headers]
<TenantIdHmacNote />
:::

</TabItem>

<TabItem label="Response">
```json
{
"data": {
"updateAsset": {
"asset": {
"id": "b3dffeda-1e0e-47d4-82a3-69b1a622eeb9",
"code": "USD",
"scale": 2,
"withdrawalThreshold": 100,
"liquidityThreshold": 500,
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
}
}
```

:::note[Tenant ID in the asset response]
The `asset` object in the response will include the `tenantId` of the tenant to which the asset belongs. This `tenantId` is used to identify the tenant when processing requests related to the asset.
:::

</TabItem>
</Tabs>

---

## Delete an asset

Deleting an asset removes it from active use within a Rafiki instance.

You can only delete an asset if it's not associated with any peers or wallet addresses. Rafiki prevents deleting any asset that's still in use.

:::danger
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think we need the danger here? Given that it not possible to delete an asset with any existing references, I think admins shouldn't worry about breaking something :)

Deleting an asset is permanent and cannot be reversed.

You can only delete an asset if:

- No peers reference the asset
- No wallet addresses are associated with it

If the asset is still in use, the backend prevents deletion and returns an error.
:::

<Tabs>
<TabItem label="Operation">
```graphql
mutation DeleteAsset($input: DeleteAssetInput!) {
deleteAsset(input: $input) {
asset {
id
code
scale
tenantId
}
}
}
```
</TabItem>

<TabItem label="Variables">
```json
{
"input": {
"id": "b3dffeda-1e0e-47d4-82a3-69b1a622eeb9"
}
}
```

For more information about this mutation’s input object, see [`DeleteAssetInput`](/apis/graphql/backend/#definition-DeleteAssetInput).

:::note[Tenant ID and HMAC-signed request headers]
<TenantIdHmacNote />
:::

</TabItem>

<TabItem label="Response">
```json
{
"data": {
"deleteAsset": {
"asset": {
"id": "b3dffeda-1e0e-47d4-82a3-69b1a622eeb9",
"code": "USD",
"scale": 2,
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
}
}
```

:::note[Tenant ID in the asset response]
The `asset` object in the response will include the `tenantId` of the tenant to which the asset belongs. This `tenantId` is used to identify the tenant when processing requests related to the asset.
:::

</TabItem>
</Tabs>
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,9 @@ Whether you are using the Backend Admin API or the Rafiki Admin application, the

**Permissions**

- Operators can create peers for any tenant
- Operators can view any peer
- Operators can edit and delete peers that belong to any tenant
- Tenants can only view their own peers
- Tenants can only edit and delete their own peers
- Tenants cannot create peers
Operators can create, view, edit, and delete both their own peers and those that belong to any tenant.

Tenants can view, edit, and delete only their own peers. They cannot create peers.

## Perform prerequisites

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ Only operators can create, edit, and delete tenants.

## Create a tenant

Use the `createTenant` mutation to register a new tenant within your Rafiki instance.

This operation is restricted to operators. When a new tenant is created, Rafiki automatically assigns a default ILP address, applies standard configuration settings, and registers the tenant with the `auth` service. Operators can also provide initial custom settings during creation.

After you create a tenant, securely communicate the tenant `id` and `apiSecret` to the tenant out-of-band.

<Tabs>
Expand Down Expand Up @@ -111,6 +115,10 @@ After you create a tenant, securely communicate the tenant `id` and `apiSecret`

## Update a tenant

Use the `updateTenant` mutation to modify an existing tenant’s configuration.

Tenants can update their own profile details such as the public name, contact email, or identity provider URLs. Tenants can also rotate their own `apiSecret` using this mutation. Operators can update any tenant’s information, but cannot modify a tenant's `apiSecret` on their behalf.

<Tabs>
<TabItem label="Operation">
```graphql
Expand Down Expand Up @@ -166,6 +174,10 @@ After you create a tenant, securely communicate the tenant `id` and `apiSecret`

## Delete a tenant

Use the `deleteTenant` mutation to remove a tenant from Rafiki. Only operators can perform this action.

Deleting a tenant marks the tenant as deleted and removes all associated tenant settings and authentication entries. After deletion, the tenant can no longer be used to create or manage resources in Rafiki.

<Tabs>
<TabItem label="Operation">
```graphql
Expand Down
Loading