Update signer factor
The request must include the current record hash in data.parent
to prevent conflicts from concurrent updates. If the parent hash
does not match the record's current hash, the request is rejected
with a 422 error.
Broadcasts the signer-factor-updated signal. Use
effects to subscribe.
Usage Examples
curl -X PUT "http://localhost:3000/v2/signers/string/factors/<HANDLE>" \ -H "x-ledger: <YOUR LEDGER HANDLE>" \ -H "Content-Type: application/json" \ -d '{ "luid": "$snf.-01xK1rTtU2dS4wX3", "hash": "a3ea08b8ae78413c3e211b783bc5f124042698064e455cae87d9e17ae8d06003", "data": { "handle": "signing-key", "parent": "82baa21c2f24351786a768bb66bf258cbbee9092f53549810ac2e9fdec809036", "signer": "tesla-bank-admin", "public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=", "format": "ed25519-raw", "schema": "key-pair", "custom": { "title": "Admin primary signing key" } }, "meta": { "proofs": [ { "method": "ed25519-v2", "digest": "a03c71c10e300256f7257cdb7ac4b498ba5cee5156c0abc66b549934138a051e", "public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=", "result": "TX0zmtCCd8mCYNKEodWQFk4RZzOE8Zkmdy+mHPW1bPfuarHIB9v4mgJphY6iaAA2Z62+CONrihzHWjtpiBKQCg==", "custom": { "moment": "2025-04-05T14:30:00.200Z" } } ] } }'{
"luid": "$snf.-01xK1rTtU2dS4wX3",
"hash": "a3ea08b8ae78413c3e211b783bc5f124042698064e455cae87d9e17ae8d06003",
"data": {
"handle": "signing-key",
"parent": "82baa21c2f24351786a768bb66bf258cbbee9092f53549810ac2e9fdec809036",
"signer": "tesla-bank-admin",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"format": "ed25519-raw",
"schema": "key-pair",
"custom": {
"title": "Admin primary signing key"
}
},
"meta": {
"status": "created",
"moment": "2025-04-05T14:30:00.220Z",
"owners": [
"dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk="
],
"proofs": [
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "a03c71c10e300256f7257cdb7ac4b498ba5cee5156c0abc66b549934138a051e",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "TX0zmtCCd8mCYNKEodWQFk4RZzOE8Zkmdy+mHPW1bPfuarHIB9v4mgJphY6iaAA2Z62+CONrihzHWjtpiBKQCg==",
"custom": {
"moment": "2025-04-05T14:30:00.200Z"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "9a65e23893bdb7bc00ab6cfe3e3380b756c73386e52292f7e3268b8d5f825f32",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "0kyeKtb3YTv1oVS7+igdv3rFeCEgU0j25+KCKRc1SWiX6s2QwCPfc2si4RyeLuOsUTDyjxZvqgJC5Zt6nDC/CA==",
"custom": {
"luid": "$snf.-01xK1rTtU2dS4wX3",
"moment": "2025-04-05T14:30:00.220Z"
}
}
]
}
}{
"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": "dc973d46dd35baa27b0ec5a107e2ee3a8cc57116d086dd868dd0f044a8de7d92",
"data": {
"reason": "record.duplicated",
"detail": "Ledger with handle instant-payments already exists."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "3e1317cc165d132f95ec2f6374890063c162d905d86b33270f97416f8441a872",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "b+0gSDCUzjEKlZQ/c40yqNpZoyQxCFsbV1Ut5/0zM2wM46xmHMBj3qeo3/GDaFD4NgSNm2G8n1f9c9rfvkl3BA==",
"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
The unique identifier of the signer this factor belongs to it is luid or handle (address).
The unique identifier of the record - it is luid or handle (address).
Query Parameters
The references to include with the signer factor.
Header Parameters
The unique identifier of ledger in context for multi tenant requests.
Request Body
application/json
Signer factor body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
Get signer factor GET
Previous Page
Add signer factor proof POST
Appends a signed proof to the record. The proof must be signed against the record's current hash. Use proofs to change status, update labels, or record custom data — see [About Proofs](/ledger/structuring-data/about-proofs) for details. Returns the updated record with the new proof in `meta.proofs`. Broadcasts the `signer-factor-proofs-added` signal. Use [effects](/ledger/reference/api/effect) to subscribe.