Datoka API

Signed client-declared API receipts. Free preparation/verification; issuance 0.002 USDC via x402.

我該用這個嗎

品質與安全性

A
說明品質
93%
結構描述完整度
68%
命名品質
90%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'get_api_public_keys' description lacks action verb在 get_api_public_keys 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~5,054Token(工具定義)
~11.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.95%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "api": {
      "url": "https://datoka-api.bhazarstudio.workers.dev/mcp"
    }
  }
}

遠端端點

https://datoka-api.bhazarstudio.workers.dev/mcpstreamable-http

它能做什麼

工具清單

工具(4)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢prepare_api_exchange(event)

Validate a client-declared HTTP exchange and compute its commitment; no receipt is persisted.

輸入結構描述

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "event"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "additionalProperties": false
    },
    "commitment": {
      "type": "object",
      "properties": {
        "algorithm": {
          "type": "string",
          "const": "sha256"
        },
        "encoding": {
          "type": "string",
          "const": "jcs"
        },
        "digest": {
          "type": "string"
        }
      },
      "required": [
        "algorithm",
        "encoding",
        "digest"
      ],
      "additionalProperties": false
    },
    "chain": {
      "type": "string"
    }
  },
  "required": [
    "event",
    "commitment",
    "chain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪issue_api_receipt(event, idempotencyKey)

Persist a signed commitment to a client-declared HTTP exchange. Public price: 0.002 USDC via x402 when enabled; otherwise requires pilot issuance permission. Preserve the event, idempotency key and original payment authorization on retries. This does not prove independent observation or the truth of the response.

輸入結構描述

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "additionalProperties": false
    },
    "idempotencyKey": {
      "type": "string",
      "pattern": "^[\\x21-\\x7e]{16,200}$"
    }
  },
  "required": [
    "event",
    "idempotencyKey"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢verify_api_receipt(event, receipt)

Verify signature, trusted issuer, tenant, event commitment and API protocol semantics.

輸入結構描述

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "additionalProperties": false
    },
    "receipt": {
      "type": "object",
      "properties": {
        "body": {
          "type": "object",
          "properties": {
            "version": {
              "type": "string",
              "const": "datoka.receipt.v1"
            },
            "id": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "issuer": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
            },
            "keyId": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
            },
            "issuedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
            },
            "request": {
              "type": "object",
              "properties": {
                "scope": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
                },
                "chain": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
                },
                "eventType": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
                },
                "subject": {
                  "type": "object",
                  "properties": {
                    "algorithm": {
                      "type": "string",
                      "const": "sha256"
                    },
                    "encoding": {
                      "type": "string",
                      "enum": [
                        "jcs",
                        "bytes"
                      ]
                    },
                    "digest": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{64}$"
                    }
                  },
                  "required": [
                    "algorithm",
                    "encoding",
                    "digest"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "scope",
                "chain",
                "eventType",
                "subject"
              ],
              "additionalProperties": false
            },
            "sequence": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "previous": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "version",
            "id",
            "issuer",
            "keyId",
            "issuedAt",
            "request",
            "sequence",
            "previous"
          ],
          "additionalProperties": false
        },
        "algorithm": {
          "type": "string",
          "const": "Ed25519"
        },
        "signature": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{86}$"
        }
      },
      "required": [
        "body",
        "algorithm",
        "signature"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "event",
    "receipt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "valid": {
      "type": "boolean",
      "const": true
    },
    "receiptId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "scope": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "apiId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "exchangeId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "attestation": {
      "type": "string",
      "const": "client_declared"
    }
  },
  "required": [
    "valid",
    "receiptId",
    "scope",
    "apiId",
    "exchangeId",
    "attestation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_api_public_keys

Return issuer public keys. Establish issuer trust independently before offline verification.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "issuer": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "keys": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "keyId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
          },
          "jwk": {
            "type": "object",
            "properties": {
              "kty": {
                "type": "string",
                "const": "OKP"
              },
              "crv": {
                "type": "string",
                "const": "Ed25519"
              },
              "x": {
                "type": "string"
              },
              "key_ops": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "ext": {
                "type": "boolean"
              }
            },
            "required": [
              "kty",
              "crv",
              "x"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "keyId",
          "jwk"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "issuer",
    "keys"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本4 個工具