Aksiyon İşlemleri
Aksiyonlar üstünde işlem yapmak için aşağıdaki endpointler kullanılır.
Aksiyonları getir
Aksiyon tipine göre ilgili tenant için aksiyonlarını getirir.
Authentication
x-auth + tenant-id
HTTP Request
GET /tenant/actions
Request Parameters
| Field | Type | Required | Default | Desc |
|---|---|---|---|---|
status | string | false | - | Action status |
Response Parameters
Aksiyonlar liste halinde döner.
Aksiyon alanları
| Field | Type | Nullable | Desc |
|---|---|---|---|
txId | string | false | Aksiyon transaction id. Signature payload'un SHA256 özeti alınarak elde edilir. |
ts | number | true | Aksiyon oluşum epoch timestamp. |
tag | string | true | Aksiyon niteleyici |
status | string | true | Aksiyon durumu |
type | string | true | Aksiyon tipi |
makerUserId | number | true | Aksiyon isteğini oluşturan kullanıcı id'si |
threshold | number | true | Aksiyonun gerçekleşmesi için gereken onay sayısı |
signatures | json[] | true | Verilen onaylar. Her bir onay, zamanı, imzayı ve imzalayanın kullanıcı id'sini barındırır. |
method | string | true | HTTP method |
endpoint | string | true | Endpoint ismi |
params | json | true | GET ise query params, POST ise request body. JSON halinde. |
signPayloadBase64 | string | true | İmzalanması gereken payload. base64 |
Response Body Example
2FA gerektiren login sonucu.
[
{
"txId": "306a8a4e92726e1eafe06f95d692b59e9f71517d0b7f01f1c98bbd4d35112c58",
"ts": 1756708844515,
"tag": "TEST_POST_ENDPOINT",
"status": "PENDING",
"type": "COMMON",
"makerUserId": 1716,
"threshold": 2,
"signatures": [
{
"ts": 1756708847609,
"sig": "3046022100aeb054257a2ce934ccbf73b2610e172f3f3160333bb3beae0bf44dbad01eb941022100b4c8bafd74dd5c52b369333ac57758c58c417aa71a8c7cdef73c3321084c36ab",
"signer": 1500
}
],
"method": "POST",
"endpoint": "/tenant/actions/test",
"params": {
"test_param": 2,
"hello": "1234567"
},
"signPayloadBase64": "MTc1NjcwODg0NDUxNVBPU1QvdGVuYW50L2FjdGlvbnMvdGVzdHsKICAgICJ0ZXN0X3BhcmFtIjogMiwKICAgICJoZWxsbyI6ICIxMjM0NTY3Igp9"
},
{
"txId": "e59fb4a14a6176b7f1075a8e2814e92a666609325bed6af8bf150e0b350e6868",
"ts": 1756707458262,
"tag": "TEST_POST_ENDPOINT",
"status": "ACCEPTED",
"type": "COMMON",
"makerUserId": 1716,
"threshold": 2,
"signatures": [
{
"ts": 1756707460722,
"sig": "3045022100b5b9c2334c541815e4a93d133f25cc40a67298de2b751e60b6ae8dee54d1927f02207387a4b32de20aae59f2d50991f922e8178da4ed11d6fb52ce296aed071918f7",
"signer": 1500
},
{
"ts": 1756708731525,
"sig": "7dd01930a1744bff72d4140a9c53b416cdd19d18c9bc32bde05cc626d3c2f42bfb2fed6cbb76ef7bea85475e9eff74fc1dfaea250317d0bcb6bb725980056673",
"signer": 1716
}
],
"method": "POST",
"endpoint": "/tenant/actions/test",
"params": {
"test_param": 2,
"hello": "1234567"
},
"signPayloadBase64": "MTc1NjcwNzQ1ODI2MlBPU1QvdGVuYW50L2FjdGlvbnMvdGVzdHsKICAgICJ0ZXN0X3BhcmFtIjogMiwKICAgICJoZWxsbyI6ICIxMjM0NTY3Igp9",
"result": {
"statusCode": "200",
"body": {
"test_param": 2,
"hello": "1234567"
}
}
}
]
Aksiyon onayı gönder
Maker'ın oluşturduğu istek cihazdaki keypair private key'i ile imzalanır ve API'ye gönderilir.
Authentication
x-auth + tenant-id + device_signature(optional) + 2FA
HTTP Request
POST /tenant/actions/proof
Request Parameters
| Field | Type | Required | Default | Desc |
|---|---|---|---|---|
txId | string | true | - | Action tx id |
signature | string | false | - | Action tx signature with device generated keypair |
deviceId | string | false | - | Device id, to skip 2FA flow with device sig |
Response Example Web
{
"challenge": {
"challengeId": "ENJGgxCwk2SryykQ",
"ts": 1756722390307,
"status": "PENDING",
"expire": 300,
"methodList": [
{
"id": "W7gy",
"name": "PUSH",
"expire": 60,
"renewStart": 0
}
]
}
}
Response Example Mobile With Signature
{
"challenge": {
"challengeId": "MBTwC4HJNPX8HUes",
"ts": 1756725299422,
"status": "COMPLETED",
"expire": 300,
"methodList": []
},
"result": {
"challengeId": "MBTwC4HJNPX8HUes",
"action": "TENANT_ACTION",
"execResult": {
"success": true,
"data": {
"tag": "TEST_POST_ENDPOINT",
"result": {
"statusCode": "200",
"body": {
"test_param": 2,
"hello": "1234567"
}
}
}
}
}
}
Aksiyon onaylama challenge getir
2FA akışında bulunan POST /auth/2fa/challenge/ongoing endpoint'i çağırılır. Dönen obje içindeki ayrıştırıcılar sayesinde mobil client imzalama yapması gerektiğini anlayabilir.
action alanında bulunan TENANT_ACTION verisi ile karşılaşıldığında signPayloadBase64 alanındaki veri cihazda üretilen keypair'in private key'i ile imzalanır. Oluşan imza POST /auth/2fa/challenge/complete isteğinin body kısmının signature alanına eklenir.
[
{
"body": "TEST_POST_ENDPOINT isteğini onaylamak için tıklayınız. (292670812d1236818d32505d00bccb1bdc6a85060e86ba2120fb291bf0998876)",
"data": {
"challengeId": "Lqb3vi8BFAFsPQBf",
"methodId": "wpsH",
"action": "TENANT_ACTION",
"params": {
"txId": "292670812d1236818d32505d00bccb1bdc6a85060e86ba2120fb291bf0998876",
"tenantId": "be88d767-d238-4503-940d-04c52a52468d",
"tx_id": "292670812d1236818d32505d00bccb1bdc6a85060e86ba2120fb291bf0998876",
"tag": "TEST_POST_ENDPOINT",
"makerUserId": "1716",
"threshold": 2,
"method": "POST",
"endpoint": "/tenant/actions/test",
"params": "{\"test_param\":2,\"hello\":\"1234567\"}",
"signPayloadBase64": "MTc1NjcyNjYxNTQ5OFBPU1QvdGVuYW50L2FjdGlvbnMvdGVzdHsKICAgICJ0ZXN0X3BhcmFtIjogMiwKICAgICJoZWxsbyI6ICIxMjM0NTY3Igp9",
"infoTable": {
"metadata": {
"type": "simple",
"rows": 6,
"cols": 2
},
"data": [
[
"Action Id",
"292670812d1236818d32505d00bccb1bdc6a85060e86ba2120fb291bf0998876"
],
[
"Tag",
"TEST_POST_ENDPOINT"
],
[
"Maker",
"1716"
],
[
"Confirmations",
"1 / 2"
],
[
"Detail",
"POST /tenant/actions/test"
],
[
"Values",
"{\"test_param\":2,\"hello\":\"1234567\"}"
]
]
},
"expire": 56
}
}
}
]