curl --request POST \
--url https://sandbox.api.byzantine.fi/v1/submit/update-users-role \
--header 'Content-Type: application/json' \
--header 'X-Pubkey: <x-pubkey>' \
--header 'X-Pubkey, X-Timestamp, X-Signature: <api-key>' \
--header 'X-Signature: <x-signature>' \
--header 'X-Timestamp: <x-timestamp>' \
--data '
{
"signedBody": {
"type": "ACTIVITY_TYPE_UPDATE_ROOT_QUORUM",
"timestampMs": "<string>",
"organizationId": "d107c1e1-766a-4091-802c-de61a3973e91",
"parameters": {
"threshold": 1,
"userIds": [
"<string>"
]
}
},
"webAuthnStamp": "<string>"
}
'import requests
url = "https://sandbox.api.byzantine.fi/v1/submit/update-users-role"
payload = {
"signedBody": {
"type": "ACTIVITY_TYPE_UPDATE_ROOT_QUORUM",
"timestampMs": "<string>",
"organizationId": "d107c1e1-766a-4091-802c-de61a3973e91",
"parameters": {
"threshold": 1,
"userIds": ["<string>"]
}
},
"webAuthnStamp": "<string>"
}
headers = {
"X-Pubkey": "<x-pubkey>",
"X-Timestamp": "<x-timestamp>",
"X-Signature": "<x-signature>",
"X-Pubkey, X-Timestamp, X-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Pubkey': '<x-pubkey>',
'X-Timestamp': '<x-timestamp>',
'X-Signature': '<x-signature>',
'X-Pubkey, X-Timestamp, X-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
signedBody: {
type: 'ACTIVITY_TYPE_UPDATE_ROOT_QUORUM',
timestampMs: '<string>',
organizationId: 'd107c1e1-766a-4091-802c-de61a3973e91',
parameters: {threshold: 1, userIds: ['<string>']}
},
webAuthnStamp: '<string>'
})
};
fetch('https://sandbox.api.byzantine.fi/v1/submit/update-users-role', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"accountId": "550e8400-e29b-41d4-a716-446655440000",
"threshold": 1,
"rootUserIds": [
"<string>"
]
}Step 2 Update users role (passkey)
Update the roles of users of a Byzantine account. This action must be approved by the current root quorum.
curl --request POST \
--url https://sandbox.api.byzantine.fi/v1/submit/update-users-role \
--header 'Content-Type: application/json' \
--header 'X-Pubkey: <x-pubkey>' \
--header 'X-Pubkey, X-Timestamp, X-Signature: <api-key>' \
--header 'X-Signature: <x-signature>' \
--header 'X-Timestamp: <x-timestamp>' \
--data '
{
"signedBody": {
"type": "ACTIVITY_TYPE_UPDATE_ROOT_QUORUM",
"timestampMs": "<string>",
"organizationId": "d107c1e1-766a-4091-802c-de61a3973e91",
"parameters": {
"threshold": 1,
"userIds": [
"<string>"
]
}
},
"webAuthnStamp": "<string>"
}
'import requests
url = "https://sandbox.api.byzantine.fi/v1/submit/update-users-role"
payload = {
"signedBody": {
"type": "ACTIVITY_TYPE_UPDATE_ROOT_QUORUM",
"timestampMs": "<string>",
"organizationId": "d107c1e1-766a-4091-802c-de61a3973e91",
"parameters": {
"threshold": 1,
"userIds": ["<string>"]
}
},
"webAuthnStamp": "<string>"
}
headers = {
"X-Pubkey": "<x-pubkey>",
"X-Timestamp": "<x-timestamp>",
"X-Signature": "<x-signature>",
"X-Pubkey, X-Timestamp, X-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Pubkey': '<x-pubkey>',
'X-Timestamp': '<x-timestamp>',
'X-Signature': '<x-signature>',
'X-Pubkey, X-Timestamp, X-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
signedBody: {
type: 'ACTIVITY_TYPE_UPDATE_ROOT_QUORUM',
timestampMs: '<string>',
organizationId: 'd107c1e1-766a-4091-802c-de61a3973e91',
parameters: {threshold: 1, userIds: ['<string>']}
},
webAuthnStamp: '<string>'
})
};
fetch('https://sandbox.api.byzantine.fi/v1/submit/update-users-role', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"accountId": "550e8400-e29b-41d4-a716-446655440000",
"threshold": 1,
"rootUserIds": [
"<string>"
]
}Authorizations
Headers
Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd
Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826
ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: {timestamp}{METHOD}{path_and_query}{json_body}. Example: 0x3045022100...
Body
Body to update the root quorum of a Byzantine account
The object that needs to be signed by the end user to update the root quorum of a Byzantine account.
Show child attributes
Show child attributes
Cryptographically passkey signed (stamped). For more info, see authentication methods.
Response
Users' roles updated successfully
Response body when users' roles are successfully updated

