{
  "openapi": "3.1.0",
  "info": {
    "title": "Bloch Inc Unified Intelligence — Partner API",
    "version": "1.1.0",
    "description": "Private BI-PoRB, investigations, observation watchlists and Graphus source modules. Real bounded public-chain facts. Red describes sample-relative structural deviation; Blue describes recorded-evidence completeness. Neither is a validated AML/credit assessment. No owner identity is inferred. Invitations and key administration use the browser portal."
  },
  "servers": [
    {
      "url": "/api/porb",
      "description": "Same host as this documentation. Production currently rednblue.space."
    }
  ],
  "tags": [
    {
      "name": "Analysis"
    },
    {
      "name": "Models"
    },
    {
      "name": "Research"
    },
    {
      "name": "Investigations"
    },
    {
      "name": "Watchlists"
    },
    {
      "name": "Graphus"
    }
  ],
  "paths": {
    "/v1/overview": {
      "get": {
        "operationId": "get_v1_overview",
        "tags": [
          "Analysis"
        ],
        "summary": "Connected network observations",
        "description": "",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/science": {
      "get": {
        "operationId": "get_v1_science",
        "tags": [
          "Models"
        ],
        "summary": "Time series and historical model evaluation",
        "description": "",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "network",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "bitcoin",
                "ethereum",
                "bloch"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/model": {
      "get": {
        "operationId": "get_v1_model",
        "tags": [
          "Models"
        ],
        "summary": "Descriptive Red/Blue model card",
        "description": "",
        "x-required-scopes": [
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/analyses": {
      "post": {
        "operationId": "post_v1_analyses",
        "tags": [
          "Analysis"
        ],
        "summary": "Collect real source pages and save a scored analysis",
        "description": "Also indexes references and evaluates existing organization watchlists. 6 collections/minute and 100/day per organization. This POST has no idempotency key: after a timeout inspect recent analyses before submitting again.",
        "x-required-scopes": [
          "data:read",
          "analyses:write",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "asset": {
                    "type": "string",
                    "enum": [
                      "BTC",
                      "ETH",
                      "BLCH",
                      "USDT",
                      "USDC"
                    ]
                  },
                  "pages": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4,
                    "default": 2
                  }
                },
                "required": [
                  "asset"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_v1_analyses",
        "tags": [
          "Analysis"
        ],
        "summary": "List the latest 50 retained analyses",
        "description": "Returns {analyses, retention}. No pagination parameters are accepted on this endpoint.",
        "x-required-scopes": [
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/analyses/{id}": {
      "get": {
        "operationId": "get_v1_analyses__id_",
        "tags": [
          "Analysis"
        ],
        "summary": "Read a saved source graph, scores and provenance",
        "description": "",
        "x-required-scopes": [
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/analyses/{id}/scores": {
      "get": {
        "operationId": "get_v1_analyses__id__scores",
        "tags": [
          "Analysis"
        ],
        "summary": "Read reference scores and model version",
        "description": "",
        "x-required-scopes": [
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/analyses/{id}/export": {
      "get": {
        "operationId": "get_v1_analyses__id__export",
        "tags": [
          "Analysis"
        ],
        "summary": "Download a saved analysis with exact source records",
        "description": "",
        "x-required-scopes": [
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/references": {
      "get": {
        "operationId": "get_v1_references",
        "tags": [
          "Research"
        ],
        "summary": "Find an exact reference across indexed analyses",
        "description": "Returns {items,next_cursor,asset,reference,index:{retained,indexed},coverage}. Ethereum and Bloch references are case-normalized; Bitcoin Base58 is case-sensitive. Read pre-release analyses once to index them. Checks format only, not an address checksum. A missing match does not establish inactivity.",
        "x-required-scopes": [
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 100
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque next_cursor from the preceding page. Keep the same filters."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/cases": {
      "get": {
        "operationId": "get_v1_cases",
        "tags": [
          "Investigations"
        ],
        "summary": "List private investigations",
        "description": "",
        "x-required-scopes": [
          "cases:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque next_cursor from the preceding page. Keep the same filters."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      },
      "post": {
        "operationId": "post_v1_cases",
        "tags": [
          "Investigations"
        ],
        "summary": "Create an investigation",
        "description": "Maximum 100 investigations per organization. Titles are private; do not use them to assert wallet ownership.",
        "x-required-scopes": [
          "cases:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 120
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/cases/{id}": {
      "get": {
        "operationId": "get_v1_cases__id_",
        "tags": [
          "Investigations"
        ],
        "summary": "Read an investigation and retained evidence",
        "description": "",
        "x-required-scopes": [
          "cases:read",
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_cases__id_",
        "tags": [
          "Investigations"
        ],
        "summary": "Delete an investigation and its evidence",
        "description": "Deletes the case and snapshots. This action is audited and permanent.",
        "x-required-scopes": [
          "cases:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/cases/{id}/status": {
      "post": {
        "operationId": "post_v1_cases__id__status",
        "tags": [
          "Investigations"
        ],
        "summary": "Close or reopen an investigation",
        "description": "",
        "x-required-scopes": [
          "cases:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "closed"
                    ]
                  }
                },
                "required": [
                  "status"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/cases/{id}/evidence": {
      "post": {
        "operationId": "post_v1_cases__id__evidence",
        "tags": [
          "Investigations"
        ],
        "summary": "Attach a reference evidence snapshot",
        "description": "Choose node_id from a saved graph or score row. Retains the first 100 incident records in dataset order, endpoint nodes, score/model, anchors and source. records_total, records_returned and truncated disclose bounds. digest is SHA-256 of UTF-8 JSON.stringify(snapshot), in returned property order. Maximum 50 snapshots per case. Repeating case/analysis/node returns the existing snapshot. Evidence survives the 50-analysis retention window.",
        "x-required-scopes": [
          "cases:write",
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Existing identical item returned; duplicate=true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "analysis_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "node_id": {
                    "type": "string",
                    "maxLength": 200
                  }
                },
                "required": [
                  "analysis_id",
                  "node_id"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/cases/{id}/export": {
      "get": {
        "operationId": "get_v1_cases__id__export",
        "tags": [
          "Investigations"
        ],
        "summary": "Export an investigation and evidence digests",
        "description": "",
        "x-required-scopes": [
          "cases:read",
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/watchlists": {
      "get": {
        "operationId": "get_v1_watchlists",
        "tags": [
          "Watchlists"
        ],
        "summary": "List watched public references",
        "description": "",
        "x-required-scopes": [
          "watchlists:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque next_cursor from the preceding page. Keep the same filters."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      },
      "post": {
        "operationId": "post_v1_watchlists",
        "tags": [
          "Watchlists"
        ],
        "summary": "Watch a public reference",
        "description": "Maximum 100 references per organization. Same asset/reference returns the existing entry. No continuous scanning or email notifications.",
        "x-required-scopes": [
          "watchlists:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Existing identical item returned; duplicate=true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "asset": {
                    "type": "string",
                    "enum": [
                      "BTC",
                      "ETH",
                      "BLCH",
                      "USDT",
                      "USDC"
                    ]
                  },
                  "reference": {
                    "type": "string",
                    "maxLength": 100
                  }
                },
                "required": [
                  "asset",
                  "reference"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/watchlists/{id}": {
      "delete": {
        "operationId": "delete_v1_watchlists__id_",
        "tags": [
          "Watchlists"
        ],
        "summary": "Remove a watched reference and its observations",
        "description": "",
        "x-required-scopes": [
          "watchlists:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/watchlists/evaluate": {
      "post": {
        "operationId": "post_v1_watchlists_evaluate",
        "tags": [
          "Watchlists"
        ],
        "summary": "Evaluate watchlists against one retained analysis",
        "description": "Idempotent per watched reference and analysis ID; returns observations_created. Different runs can contain overlapping chain records; observations are not a count of unique transactions.",
        "x-required-scopes": [
          "watchlists:write",
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "analysis_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "analysis_id"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/observations": {
      "get": {
        "operationId": "get_v1_observations",
        "tags": [
          "Watchlists"
        ],
        "summary": "Read the observation inbox",
        "description": "Latest 500 matches per organization, including reviewed matches. Returns {items,next_cursor,retention,coverage}. Snapshot fields survive source-analysis retention; the source graph may no longer be available.",
        "x-required-scopes": [
          "watchlists:read",
          "analyses:read",
          "scores:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque next_cursor from the preceding page. Keep the same filters."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/observations/{id}/review": {
      "post": {
        "operationId": "post_v1_observations__id__review",
        "tags": [
          "Watchlists"
        ],
        "summary": "Mark an observation as reviewed",
        "description": "",
        "x-required-scopes": [
          "watchlists:write"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/graphus/system/map": {
      "get": {
        "operationId": "get_v1_graphus_system_map",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · system/map",
        "description": "Module registry, implementation/access states, workflow and data contracts. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/daas/manifest": {
      "get": {
        "operationId": "get_v1_graphus_daas_manifest",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · daas/manifest",
        "description": "Public Graphus capability manifest. Any prototype/planned status remains unchanged by portal aggregation. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/network": {
      "get": {
        "operationId": "get_v1_graphus_chain_network",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/network",
        "description": "Bounded network page. asset required. Feed next_cursor into cursor for the next page. No score or ownership label. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/wallet": {
      "get": {
        "operationId": "get_v1_graphus_chain_wallet",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/wallet",
        "description": "asset, network and address required. Networks: bitcoin-mainnet, ethereum-mainnet, bloch-mainnet. Bounded source-reported address/script observations. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          },
          {
            "name": "network",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/activity": {
      "get": {
        "operationId": "get_v1_graphus_chain_activity",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/activity",
        "description": "asset and address required. Ethereum USDT/USDC Transfer logs over a bounded finalized block window. Native ETH history requires an index and is unavailable here. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to_block",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expected_hash",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/transaction-receipt": {
      "get": {
        "operationId": "get_v1_graphus_chain_transaction_receipt",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/transaction-receipt",
        "description": "hash, expected_block, expected_hash and expected_index required. Finalized Ethereum receipt checked against the selected log. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "hash",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expected_block",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expected_hash",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expected_index",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/bloch-history": {
      "get": {
        "operationId": "get_v1_graphus_chain_bloch_history",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/bloch-history",
        "description": "address required. Bloch script-hash history; pass the returned source cursor unchanged. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/holders": {
      "get": {
        "operationId": "get_v1_graphus_chain_holders",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/holders",
        "description": "asset=BLCH required. Up to 64 indexed positive script balances, without identities. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    },
    "/v1/graphus/chain/balances": {
      "get": {
        "operationId": "get_v1_graphus_chain_balances",
        "tags": [
          "Graphus"
        ],
        "summary": "Graphus · chain/balances",
        "description": "asset and comma-separated addresses required; 1–16 BTC/ETH/USDT/USDC addresses. Anchoring and source limitations are returned. Fixed source gateway; keys/cookies are never forwarded. Shared 60 upstream reads/minute per organization. Upstream errors remain errors.",
        "x-required-scopes": [
          "data:read"
        ],
        "security": [
          {
            "PartnerKey": []
          }
        ],
        "parameters": [
          {
            "name": "asset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "BTC",
                "ETH",
                "BLCH",
                "USDT",
                "USDC"
              ]
            }
          },
          {
            "name": "addresses",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "description": "Server-generated support correlation ID",
                "schema": {
                  "type": "string"
                }
              },
              "X-Porb-Api-Version": {
                "schema": {
                  "const": "1.1"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "502": {
            "$ref": "#/components/responses/502"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "PartnerKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "porb_<64 hex characters>",
        "description": "Generated by an organization owner/admin in Access & API. All scopes in x-required-scopes are required. Send only through Authorization, never URLs."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "400": {
        "description": "Invalid JSON, reference, parameters or fields",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "401": {
        "description": "Missing/expired/revoked authentication",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "403": {
        "description": "Required scope, role or same-origin action missing",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "404": {
        "description": "Resource unavailable in this organization",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "409": {
        "description": "Capacity, state or conflict",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "413": {
        "description": "Request body exceeds 8 KiB",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "422": {
        "description": "Collection exceeds supported bounds",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "429": {
        "description": "Rate limit; honor Retry-After in seconds",
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "502": {
        "description": "Public source failed or returned inconsistent data",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "503": {
        "description": "Service unavailable",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "x-available-scopes": [
    "data:read",
    "analyses:read",
    "analyses:write",
    "scores:read",
    "cases:read",
    "cases:write",
    "watchlists:read",
    "watchlists:write"
  ]
}
