List policies
Use this endpoint to review system configuration and business rules, find policies targeting a specific resource type, or audit which rules apply in a domain.
Supported filters:
data.record— target resource typedata.schema— policy typemeta.status— record statusmeta.labels— record labelsmeta.domain— domain scopedata.custom.<field>— any custom field (may be slower on large datasets)
Usage Examples
curl -X GET "http://localhost:3000/v2/policies" \ -H "x-ledger: <YOUR LEDGER HANDLE>"{
"hash": "35f2c257be876315a4e302a854e852da297645086e3250a890578a1fb66b4420",
"data": [
{
"luid": "$plc.-01xK6wXyZ7iX9BC8",
"hash": "7cf05252a4472a155a39edc222a26cb8fc9f85d60ecb2841e028b02c379de963",
"data": {
"handle": "admin-policy",
"schema": "access",
"record": "any",
"values": [
{
"action": "any",
"signer": {
"$circle": "admin"
}
}
]
},
"meta": {
"status": "created",
"moment": "2025-04-05T14:30:00.050Z",
"owners": [
"AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8="
],
"proofs": [
{
"signer": "ach-admin",
"method": "ed25519-v2",
"digest": "374422ed861753b7ae317172751fae081a8450e515387c120ed8eace1733b612",
"public": "AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8=",
"result": "2UOiiMOYmQFsduziE62Kg8F0lZ4mwZYYF6lXijqjGDMWxaqCv72mF42P8/bVsJMGQattLAXFrencq5/Mc7rVCQ==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "582080899a94d868fc76331c26bf3bbe3de75fe1c140be5bb7cfe9ccb51fa629",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "SOn8asw27mPCGLkbaRkIcZhUWAv6uCAFRIqdWnBt+rNmVMqSLybMytGLTVGKGeglhfdPY/L7TQ3+KVvOenCtDQ==",
"custom": {
"luid": "$plc.-01xK6wXyZ7iX9BC8",
"moment": "2025-04-05T14:30:00.050Z",
"status": "created"
}
}
]
}
},
{
"luid": "$plc.-01xG84B8wiHH0CD8",
"hash": "16838fc0e9544534bffe45df0da1c14fe11179db3232d2443ef1d599cbe5175c",
"data": {
"handle": "wallet-access",
"parent": "7cf05252a4472a155a39edc222a26cb8fc9f85d60ecb2841e028b02c379de963",
"schema": "access",
"record": "wallet",
"values": [
{
"action": "any",
"bearer": {
"$signer": {
"$record": "owner"
}
}
},
{
"action": "read",
"bearer": {
"$signer": {
"$ledger": "owner"
}
}
}
]
},
"meta": {
"status": "created",
"moment": "2025-04-05T14:21:40.025Z",
"owners": [
"AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8="
],
"proofs": [
{
"signer": "ach-admin",
"method": "ed25519-v2",
"digest": "bd89f3db5ca52234d6b88feb036d39af8c0d8f4fb963a03da28ec81f2ff3687c",
"public": "AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8=",
"result": "URPGDX6W4g/VjPMeeqrOo/U+Q4gT1b4j2QlB6mte2V+WHz2Bql7u37oXXDVW/vMhzzt55vyv7Lf7DpT9u0mcAw==",
"custom": {
"moment": "2025-04-05T14:21:40.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "670a66bab5ea72135c8160ae12708f13687211d64fe964fa1682631bf5f9ad3a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "I1lC+NmbpK+0tlVnDEfv7qY01M7aBipWzBF0q5NIBmIuguxBQsXf7zICbvlpjHpb2nZhwo4NtBelfFsICRJJDw==",
"custom": {
"luid": "$plc.-01xG84B8wiHH0CD8",
"moment": "2025-04-05T14:21:40.025Z",
"status": "created"
}
}
]
}
}
],
"page": {
"index": 0,
"limit": 20
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "2c253e90bb69f2ee5b8c89c58173844caa586f46de03568273825d0f30e10020",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "M4TXaXW+EHCb6hkLwj49srUB8C6YoIbC8zbPXFX6C4+iSnyZNn3LM9M9nLrEeRkdhqoijD4LVC9vxl1c9/t5Cg==",
"custom": {
"moment": "2025-04-05T14:30:00.100Z"
}
}
]
}
}{
"hash": "b7eb7ccf5ffc126951e13e29a8dcfdaf95db859715d4edfc2d16f59a79d4cd58",
"data": {
"reason": "auth.unauthorized",
"detail": "Invalid token."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "3acece870c4118bfe4223118e4d2f3cfd5b8947a7093785b66d49aa57fa2890a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "gnK63DqqWDY/UXvnZHixDKPKS6tfeGHgdARylnPiJLwQGyYxuD97TYbSg2wrzsf/bDrHwQYZaf8Gu5ryYP0UAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "9ec02726b50650add8acfd124c6defeb978a9ac252a5de888f9493ddc701e927",
"data": {
"reason": "auth.forbidden",
"detail": "Request is not authorized"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "4f8cbdc38d73348de0c31805c783c84a0fecc6be736d7e187004ba68cd00e675",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "P3hRnveehtuobb4AIO56XBmiduvmYJbpdmOHltG/IifBEH7QSWdv/0pqled4SO9x1Ne3oXuWxJy40DzMvx1MBA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "bd1e78b47e837376b7994e3e481aa547c110c4d6a1c1d8ecd047cc465edd33bd",
"data": {
"reason": "api.request-timeout",
"detail": "Processing of request on server timed out. Your request may or may not have been processed."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "cdf5b09c809ec52934cd76ca3b0aa59310049e3cae8b171aee3cf9e0f98bddb2",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "6h1lhq3TOccWrfIdtOa9pkz9pIHVAN9tyXuNaucvLpbspWACog6HpSAdr0FSwGzn0zAKwx8YppGOVjFhfeBLBw==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "1c084e8dcfb9bb84bc8ea96e9e137b149a34b2bbd85f8e60b4263f5aba980476",
"data": {
"custom": {
"errors": [
{
"instancePath": "/handle",
"schemaPath": "#/properties/handle/pattern",
"keyword": "pattern",
"params": {
"pattern": "^[a-zA-Z0-9_\\-+.]+$"
},
"message": "must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
}
]
},
"reason": "record.schema-invalid",
"detail": "Schema validator error: data.handle must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "7a5febb431719b6f43d7e88e79211308e16ac651b71b339276373fdb4e7c3760",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "2/1zYw4AaIzsIHfOIC6V/CHw6owbjYHt48cwmFOig0ibeT0IbojLmj1RCRi8W00ka0udPa9WsacWDd7ObMY8CA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "93a5f4d97a42c2df97f827c58ff7768d02568c15aca931e22b81fa3160ba0df3",
"data": {
"reason": "api.unexpected-error",
"detail": "An unexpected error occurred"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "efaf5360143b586917d9636779ad6e08571c5b06909a20dd0f5eba4bf3be7eae",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "hERh6Aecj59iR+Fb25OQsHJScOi4t8EiffKSfjlMQdjHMccTnfDlgZFdaJzXzUtpSwy/NHq0l+7ydh3HSWCoAg==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}Query Parameters
Pagination options. Set limit and index to page through results.
Filter by field values using dot notation (e.g. data.handle=value). Operators like $in and $regex are optional — equality is the default.
Header Parameters
The unique identifier of ledger in context for multi tenant requests.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
Create policy POST
Policies are enforced unless their status is set to `inactive`. Use proofs to activate or deactivate a policy. The `schema` field determines the policy type: - **access** — control who can perform actions on records - **status** — define available statuses and quorum requirements for transitions - **labels** — enforce label uniqueness and assignment rules - **schedule** — trigger actions on a time-based schedule - **processing** — invoke bridges for anchor operations - **authentication** — configure OAuth 2.0 token issuance Rules within policies support filters using MongoDB-style query syntax for fine-grained matching. Broadcasts the `policy-created` signal. Use [effects](/ledger/reference/api/effect) to subscribe.
Get policy GET
Next Page