List policy changes

GET/policies/{id}/changesRetrieve the change history of a policy by its handle or LUID.

Each change contains a complete snapshot of the record at that point in time, the action performed (create, update, or drop), and a timestamp. Changes are returned newest first.

After a record is deleted, its change history remains accessible but must be queried using the record's LUID instead of its handle.

GET
/policies/{id}/changes

Usage Examples

curl -X GET "http://localhost:3000/v2/policies/<HANDLE>/changes" \  -H "x-ledger: <YOUR LEDGER HANDLE>"
{
  "hash": "3031e2302b29039916eac0c4a6872a88b934de3eb0ecf088568b48a3c790e764",
  "data": [
    {
      "luid": "$plc.-01xK6wXyZ7iX9BC8",
      "hash": "021af67fdd7a79e0f820f412eeefe62e8da2f6bc13824071008a0de5335eb232",
      "data": {
        "handle": "admin-policy",
        "parent": "7cf05252a4472a155a39edc222a26cb8fc9f85d60ecb2841e028b02c379de963",
        "schema": "access",
        "record": "policy",
        "values": [
          {
            "action": "any",
            "signer": {
              "$circle": "admin"
            }
          }
        ]
      },
      "meta": {
        "status": "created",
        "action": "update",
        "change": 2,
        "moment": "2025-04-05T14:30:00.220Z",
        "owners": [
          "AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8="
        ],
        "proofs": [
          {
            "signer": "ach-admin",
            "method": "ed25519-v2",
            "digest": "5c8e9dd78391ec081f776d3c02fada943cad79da4933e5c23e1dbda2e822de6e",
            "public": "AN6XpZ7T8FDCkjbSpIVE2cioQ7hajp8DBTOioz/TSZ8=",
            "result": "XAd2A4Xzm5lZPD8/hO5p6LKMj1Xdo2BtSIkJgk8zrBUIip1W7mcrkGLpIpK0OUdd3wwAruIKD2/IkF5VbtdZDA==",
            "custom": {
              "moment": "2025-04-05T14:30:00.200Z"
            }
          },
          {
            "signer": "system",
            "method": "ed25519-v2",
            "digest": "cf5c2466e582a949a6369a020cc040627856eb71020b7e6062778271b11fc3ae",
            "public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
            "result": "EHVnVWt9yMyUpGWMcIZ9YaV3rfIWT6amIiuH/s6GIlzmEqtzmVIsYOxuTIZpLXcIorDnt4lvzSQH/zQ4RL+CCw==",
            "custom": {
              "luid": "$plc.-01xK6wXyZ7iX9BC8",
              "moment": "2025-04-05T14:30:00.220Z"
            }
          }
        ]
      }
    },
    {
      "luid": "$plc.-01xK6wXyZ7iX9BC8",
      "hash": "7cf05252a4472a155a39edc222a26cb8fc9f85d60ecb2841e028b02c379de963",
      "data": {
        "handle": "admin-policy",
        "schema": "access",
        "record": "any",
        "values": [
          {
            "action": "any",
            "signer": {
              "$circle": "admin"
            }
          }
        ]
      },
      "meta": {
        "status": "created",
        "action": "create",
        "change": 1,
        "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"
            }
          }
        ]
      }
    }
  ],
  "page": {
    "index": 0,
    "limit": 20,
    "total": 2
  },
  "meta": {
    "moment": "2025-04-05T14:30:00.300Z",
    "proofs": [
      {
        "signer": "system",
        "method": "ed25519-v2",
        "digest": "7f685a1ec9c4d589f81ed94f612338db58c2aa2c85b3b939a9b31f73657f19ea",
        "public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
        "result": "op90IO5txVJJzun8hEw9GLi0luW2+9/e22eid5LjjsS906/Q8i4lCqctwmGKxNSUCq4nFjqJjjhCKb5nm7IhBw==",
        "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": "d6c59a6df7165fa4a75159799ca5f5e26e544cbb8769eced3d35d8021f6f7935",
  "data": {
    "reason": "record.not-found",
    "detail": "Signer not found"
  },
  "meta": {
    "proofs": [
      {
        "signer": "system",
        "method": "ed25519-v2",
        "digest": "78cf86f34aefcf9da6ed4167a38aac0a2739f68f7bafb1d3e033c01ed1b6cdf1",
        "public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
        "result": "9Ledk+/iAAtj+uLjGe2afq4kID7n8UQD6UpRpLBCujxFjxddq0uZ2tnYRTAXmYdHDkbF0uXqtNM9qO3xhEtpAA==",
        "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"
        }
      }
    ]
  }
}

Path Parameters

id*|

The unique identifier of the record - it is luid or handle (address).

Query Parameters

page?

Pagination options. Set limit and index to page through results.

filter?

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

x-ledger?|

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