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

# GET /api/vaults/:vaultId/gate — Deposit Gate Status

> Returns whether a facility is gated by an XLS-70 credential domain, which credential types are accepted, and whether Orma's issuer address is named.

Use this endpoint to find out whether a facility requires an XLS-70 credential to deposit, and if so, exactly which credential issuers are trusted. This is enforcement, not advice: an LP without an accepted credential from a named issuer cannot deposit at all — the ledger refuses the transaction. The endpoint also answers the rater's own question — is Orma cited as an accepted issuer — without asking the vault owner, because the rating relationship is unilateral by design.

## Parameters

<ParamField path="vaultId" type="string" required>
  64-character hex object ID of the `Vault` ledger entry. Case insensitive.
</ParamField>

This route is cached for 30 seconds per vault. A domain changes only when someone edits it, not every four seconds, and the gate lookup requires two extra ledger reads.

## Request

```bash theme={null}
curl -s http://localhost:8787/api/vaults/4A5A8E3716D52E334AEB077ADB09456EF4A941CC26021A8EAD37F95B00190DF5/gate
```

## Response — Gated Vault

```json theme={null}
{
  "serverTime": "2026-09-12T22:20:22Z",
  "ledgerIndex": 5263343,
  "vaultId": "4A5A8E3716D52E334AEB077ADB09456EF4A941CC26021A8EAD37F95B00190DF5",
  "gated": true,
  "private": true,
  "domainId": "FFBEC89D98B4E7CF52F4F254235086514A90CED0EC531941BDF747AF40C5A2FB",
  "acceptedCredentials": [
    {
      "issuer": "rKQjjU5KFs9RAZCDvYVjcaoVK5gGsCJgkP",
      "type": "ORMA-IG",
      "typeHex": "4F524D412D4947"
    }
  ],
  "domainOwner": "rGFFSqqY1R3764FKF7crU5F6bYh9qaD45S",
  "note": null,
  "issuerNamed": true,
  "raterAddress": "rKQjjU5KFs9RAZCDvYVjcaoVK5gGsCJgkP"
}
```

## Response — Open Vault

```json theme={null}
{
  "serverTime": "2026-09-12T22:20:22Z",
  "ledgerIndex": 5263343,
  "vaultId": "5763707D11EA19D1B5FF04E4EBA4F9336057955CDE65B725D1FF3EF2A96CB0E5",
  "gated": false,
  "private": false,
  "domainId": null,
  "acceptedCredentials": [],
  "domainOwner": null,
  "note": "open to any depositor",
  "issuerNamed": false,
  "raterAddress": "rKQjjU5KFs9RAZCDvYVjcaoVK5gGsCJgkP"
}
```

## Response Fields

<ResponseField name="vaultId" type="string">
  The vault ID this response covers, echoed for verification.
</ResponseField>

<ResponseField name="gated" type="boolean">
  `true` only when `private` is `true` **and** at least one accepted credential is listed. A vault with a `DomainID` but without the `tfVaultPrivate` flag enforces nothing — `gated` is `false` and `note` explains why.
</ResponseField>

<ResponseField name="private" type="boolean">
  Whether the `tfVaultPrivate` flag (`0x00010000`) is set on the vault.
</ResponseField>

<ResponseField name="domainId" type="string | null">
  64-character hex object ID of the `PermissionedDomain` on the share `MPTokenIssuance`. `null` when no domain is attached.
</ResponseField>

<ResponseField name="acceptedCredentials" type="array">
  List of credential types that grant deposit access.

  <Expandable title="credential fields">
    <ResponseField name="issuer" type="string">
      XRPL address of the credential issuer.
    </ResponseField>

    <ResponseField name="type" type="string">
      UTF-8 decoded credential type string, e.g. `"ORMA-IG"`.
    </ResponseField>

    <ResponseField name="typeHex" type="string">
      Hex-encoded credential type as stored on the ledger.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="domainOwner" type="string | null">
  XRPL address of the account that controls the `PermissionedDomain`. `null` when no domain exists.
</ResponseField>

<ResponseField name="note" type="string | null">
  Human-readable explanation when `gated` is `false`. For example: `"open to any depositor"` or `"DomainID present but tfVaultPrivate not set — domain does not enforce access"`.
</ResponseField>

<ResponseField name="issuerNamed" type="boolean">
  Whether the configured `raterAddress` appears in `acceptedCredentials`. This is the rater's own question — am I cited in this domain — answered without asking the vault owner.
</ResponseField>

<ResponseField name="raterAddress" type="string | null">
  The rater address configured in the Orma deployment. Used to compute `issuerNamed`.
</ResponseField>

<Warning>
  `DomainID` is **not** stored on the `Vault` ledger object. It lives on the share `MPTokenIssuance`. Reading the `Vault` object to determine whether a vault is gated returns nothing, which looks exactly like "open to everyone". This route reads the issuance, not the vault, to give you the correct answer.
</Warning>

<Note>
  `tfVaultPrivate` must be set alongside `DomainID` at `VaultCreate`. A `DomainID` without the flag does not enforce access control — the flag and the domain together are what gate deposits. If you see `domainId` set but `gated: false`, read the `note` field.
</Note>
