Blockaid cosigner API

The cosigner API from Blockaid — 6 operation(s) for cosigner.

OpenAPI Specification

blockaid-cosigner-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Blockaid Asset Management cosigner API
  description: Blockaid Risk Score API
  termsOfService: https://www.blockaid.io/legal/terms-of-use
  license:
    name: Proprietary
    url: https://www.blockaid.io/legal
  version: 1.0.0
servers:
- url: https://api.blockaid.io
  description: Production server
- url: https://client.blockaid.io
  description: Clients server
tags:
- name: cosigner
paths:
  /v0/platform/cosigners/{id}/policies/:
    get:
      tags:
      - cosigner
      summary: Get Cosigner Policies Route
      description: Get all policies for a cosigner by ID.
      operationId: get_cosigner_policies_route_external_v0_cosigners__id__policies__get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Cosigner ID
          title: Id
        description: Cosigner ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPoliciesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - cosigner
      summary: Set Cosigner Policies Route
      description: Set policies for a cosigner by ID.
      operationId: set_cosigner_policies_route_external_v0_cosigners__id__policies__post
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Cosigner ID
          title: Id
        description: Cosigner ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetPoliciesRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetPoliciesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v0/platform/cosigners:
    post:
      tags:
      - cosigner
      summary: Create a new Cosigner
      description: Create a cosigner and determine what it does on proposal, approval, and rejection.
      operationId: create_cosigner_external_route_external_v0_cosigners__post
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCosignerExternalRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignerExternalResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
  /v0/platform/cosigners/search:
    post:
      tags:
      - cosigner
      summary: Get Cosigners Paginated Route
      description: Returns a paginated list of Cosigners based on the provided search criteria.
      operationId: get_cosigners_paginated_route_external_v0_cosigners_search_post
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CosignerSearchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignerPage_CosignerExternalResponse_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
  /v0/platform/cosigners/by-name/{name}:
    get:
      tags:
      - cosigner
      summary: Get Cosigner By Name
      description: Fetch a cosigner by name.
      operationId: get_cosigner_by_name_route_external_v0_cosigners_by_name__name__get
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
          title: Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignerExternalResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
  /v0/platform/cosigners/{id}:
    get:
      tags:
      - cosigner
      summary: Get Cosigner External Route
      description: Fetch a cosigner by ID.
      operationId: get_cosigner_external_route_external_v0_cosigners__id__get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignerExternalResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
    delete:
      tags:
      - cosigner
      summary: Delete Cosigner External Route
      description: Remove a cosigner by ID.
      operationId: delete_cosigner_external_route_external_v0_cosigners__id__delete
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          title: Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
    patch:
      tags:
      - cosigner
      summary: Update Cosigner External Route
      description: Update a cosigner by ID; the fields you send replace the existing ones.
      operationId: update_cosigner_external_route_external_v0_cosigners__id__patch
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          title: Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCosignerExternalRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignerExternalResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
  /v0/platform/cosigners/{id}/evm/evaluate:
    post:
      tags:
      - cosigner
      summary: Evaluate EVM Transaction
      description: Run policy evaluation against an EVM transaction for the given cosigner. Returns the policy decision and per-policy trace.
      operationId: evaluate_transaction_route_external_v0_cosigners__id__evm_evaluate_post
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Cosigner ID
          title: Id
        description: Cosigner ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvaluateTransactionRequest'
            example:
              evaluation_type: simulate
              chain: ethereum
              account_address: '0x1234'
              data:
                from: '0x1234'
                to: '0x1E0049783F008A0085193E00003D00cd54003c71'
                value: '0x0'
                data: '0xa22cb465'
              metadata:
                domain: https://app.safe.global
      x-codeSamples:
      - lang: bash
        label: Simulate transaction
        source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n  -H \"X-API-Key: <api_key>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"evaluation_type\": \"simulate\",\n    \"chain\": \"ethereum\",\n    \"account_address\": \"0x1234\",\n    \"data\": {\n      \"from\": \"0x1234\",\n      \"to\": \"0x1E0049783F008A0085193E00003D00cd54003c71\",\n      \"value\": \"0x0\",\n      \"data\": \"0xa22cb465\"\n    },\n    \"metadata\": {\n      \"domain\": \"https://app.safe.global\"\n    }\n  }'"
      - lang: bash
        label: Simulate EIP-712
        source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n  -H \"X-API-Key: <api_key>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"evaluation_type\": \"simulate\",\n    \"chain\": \"ethereum\",\n    \"account_address\": \"0xSigner\",\n    \"data\": {\n      \"type\": \"eip712\",\n      \"typed_data\": \"{\\\"types\\\":{},\\\"primaryType\\\":\\\"Order\\\",\\\"domain\\\":{},\\\"message\\\":{}}\",\n      \"eip712_executor\": \"0xSafeExecutor\"\n    },\n    \"metadata\": {\n      \"domain\": \"https://app.safe.global\"\n    }\n  }'"
      - lang: bash
        label: Evaluate tx hash
        source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n  -H \"X-API-Key: <api_key>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"evaluation_type\": \"tx_hash\",\n    \"tx_hash\": \"0xabc\",\n    \"chain\": \"ethereum\",\n    \"show_transaction_detail_for\": []\n  }'"
      - lang: bash
        label: Evaluate time period
        source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n  -H \"X-API-Key: <api_key>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"evaluation_type\": \"time_period\",\n    \"chain\": \"ethereum\",\n    \"time_period\": {\n      \"from\": \"2026-03-01T12:34:56+00:00\",\n      \"to\": \"2026-03-02T01:02:03+00:00\"\n    },\n    \"show_transaction_detail_for\": []\n  }'"
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/EvaluateTransactionResponse'
                - $ref: '#/components/schemas/EvaluateHistoricalDataResponse'
                title: Response Evaluate Transaction Route External V0 Cosigners  Id  Evm Evaluate Post
        '404':
          description: Cosigner not found
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - APIKey: []
      - ClientID: []
      - JWT: []
components:
  schemas:
    UnknownTarget:
      properties:
        type:
          type: string
          title: Type
          default: unknown
      additionalProperties: true
      type: object
      title: UnknownTarget
      description: Unknown target type - client should handle gracefully.
    FunctionCallPolicyResponse:
      properties:
        type:
          type: string
          enum:
          - function_call
          const: function_call
          title: Type
        rules:
          $ref: '#/components/schemas/FunctionCallRules-Output'
        target:
          items:
            anyOf:
            - $ref: '#/components/schemas/AssetIDTarget'
            - $ref: '#/components/schemas/MissingAssetIDTarget'
            - $ref: '#/components/schemas/UnknownTarget'
          title: Target
          type: array
      type: object
      required:
      - type
      - target
      - rules
      title: FunctionCallPolicyResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    TokenSpendApprovalAmountRule:
      properties:
        operator:
          anyOf:
          - $ref: '#/components/schemas/LessThanComparisonOperator'
          - $ref: '#/components/schemas/GreaterThanComparisonOperator'
          - $ref: '#/components/schemas/EqualityOperator'
          title: Operator
        value:
          title: Value
          type: string
      required:
      - operator
      - value
      title: TokenSpendApprovalAmountRule
      type: object
    MovedAssetsPolicyResponse:
      properties:
        rules:
          $ref: '#/components/schemas/MovedAssetsRules-Output'
        type:
          const: moved_assets
          enum:
          - moved_assets
          title: Type
          type: string
      required:
      - type
      - rules
      title: MovedAssetsPolicyResponse
      type: object
    RiskExposureRules-Input:
      properties:
        category_thresholds:
          items:
            $ref: '#/components/schemas/CategoryThreshold-Input'
          title: Category Thresholds
          type: array
      required:
      - category_thresholds
      title: RiskExposureRules
      type: object
    IgnoreThresholdRule:
      properties:
        operator:
          $ref: '#/components/schemas/LessThanComparisonOperator'
        value:
          type: integer
          title: Value
      type: object
      required:
      - operator
      - value
      title: IgnoreThresholdRule
    TransactionUSDValueRules-Output:
      properties:
        transaction_usd_value:
          $ref: '#/components/schemas/TransactionUSDValueRule'
      type: object
      required:
      - transaction_usd_value
      title: TransactionUSDValueRules
    TokenSpendApprovalPolicyResponse:
      properties:
        rules:
          $ref: '#/components/schemas/TokenSpendApprovalRules-Output'
        type:
          const: token_spend_approval
          enum:
          - token_spend_approval
          title: Type
          type: string
      required:
      - type
      - rules
      title: TokenSpendApprovalPolicyResponse
      type: object
    EvaluationSummary:
      properties:
        total_transactions:
          type: integer
          title: Total Transactions
          description: Total number of transactions scanned for this evaluation.
        approved:
          type: integer
          title: Approved
          description: Transactions approved by all policies under this mode.
        rejected:
          type: integer
          title: Rejected
          description: Transactions rejected by at least one policy or blocked before policy evaluation (non-benign scans). Per-policy counts only reflect transactions that reached policy evaluation, so the sum of per-policy rejected counts may be less than this value.
        manual_approved:
          type: integer
          title: Manual Approved
          description: Transactions that required manual approval (pending decision).
      additionalProperties: false
      type: object
      required:
      - total_transactions
      - approved
      - rejected
      - manual_approved
      title: EvaluationSummary
      description: 'Aggregated counts across all transactions.


        Note: ``rejected`` includes transactions blocked before policy evaluation

        (non-benign scans). Per-policy counts only reflect transactions that

        reached policy evaluation, so ``sum(p.rejected for p in policies)`` may be

        less than ``summary.rejected``.'
    EventParameter:
      properties:
        operator:
          anyOf:
          - $ref: '#/components/schemas/EqualityOperator'
          - $ref: '#/components/schemas/LessThanComparisonOperator'
          - $ref: '#/components/schemas/GreaterThanComparisonOperator'
          title: Operator
        value:
          type: string
          title: Value
        parameter:
          type: string
          title: Parameter
      type: object
      required:
      - operator
      - value
      - parameter
      title: EventParameter
    EvaluateTransactionRequest:
      discriminator:
        propertyName: evaluation_type
      oneOf:
      - additionalProperties: false
        description: 'Simulate mode: evaluate a hypothetical EVM transaction against cosigner policies.'
        properties:
          account_address:
            description: Address of the account initiating the transaction.
            title: Account Address
            type: string
          chain:
            allOf:
            - enum:
              - arbitrum
              - base
              - bsc
              - gnosis
              - ethereum
              - optimism
              - polygon
              - sepolia
              - monad
              - katana
              title: SupportedEvmChains
              type: string
            description: Chain name, e.g. "ethereum", "polygon".
          data:
            anyOf:
            - additionalProperties: false
              description: Standard EVM transaction payload.
              properties:
                data:
                  description: Calldata as a hex string, for example "0xa22cb465...".
                  title: Data
                  type: string
                from:
                  description: Sender address.
                  title: From
                  type: string
                to:
                  description: Recipient or contract address.
                  title: To
                  type: string
                type:
                  const: transaction
                  default: transaction
                  description: Transaction type discriminator. Defaults to "transaction".
                  enum:
                  - transaction
                  title: Type
                  type: string
                value:
                  description: Wei value as a hex string, for example "0x0".
                  title: Value
                  type: string
              required:
              - from
              - to
              - value
              - data
              title: EvmSendTransaction
              type: object
            - additionalProperties: false
              description: EIP-712 typed-data signing payload.
              properties:
                eip712_executor:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: Executor contract address, for example a Safe executor.
                  title: Eip712 Executor
                type:
                  const: eip712
                  description: Must be "eip712".
                  enum:
                  - eip712
                  title: Type
                  type: string
                typed_data:
                  description: EIP-712 typed-data structure as a JSON string.
                  title: Typed Data
                  type: string
              required:
              - type
              - typed_data
              title: EvmEip712Data
              type: object
            description: EVM transaction payload.
            title: Data
          evaluation_type:
            const: simulate
            description: Evaluation mode. Use "simulate" for dry-run evaluation of calldata.
            enum:
            - simulate
            title: Evaluation Type
            type: string
          inline_policies:
            anyOf:
            - items:
                additionalProperties: true
                description: A single policy definition for inline evaluation, bypassing persisted policy lookup.
                properties:
                  action:
                    description: 'Policy action: "approve", "reject", or "pending".'
                    title: Action
                    type: string
                  name:
                    description: Policy name.
                    title: Name
                    type: string
                  policy:
                    description: Policy definition with policy_type_id, conditions, targets, etc.
                    title: Policy
                    type: object
                required:
                - name
                - action
                - policy
                title: InlinePolicyEntry
                type: object
              type: array
            - type: 'null'
            description: Optional list of inline policy definitions to evaluate against instead of persisted policies. When provided, the cosigner's stored policies are ignored and these are used instead. Priority is derived from list order (index 0 = highest).
            title: Inline Policies
          metadata:
            description: Additional context. Accepts a "domain" key for the dapp origin domain.
            title: Metadata
            type: object
          options:
            description: Evaluation options to apply. Defaults to ["validation"].
            items:
              type: string
            title: Options
            type: array
        required:
        - evaluation_type
        - chain
        - account_address
        - data
        title: EvaluateSimulateRequest
        type: object
      - additionalProperties: false
        properties:
          chain:
            allOf:
            - enum:
              - arbitrum
              - base
              - bsc
              - gnosis
              - ethereum
              - optimism
              - polygon
              - sepolia
              - monad
              - katana
              title: SupportedEvmChains
              type: string
            description: Chain identifier.
          evaluation_type:
            const: tx_hash
            description: Evaluation mode.
            enum:
            - tx_hash
            title: Evaluation Type
            type: string
          inline_policies:
            anyOf:
            - items:
                additionalProperties: true
                description: A single policy definition for inline evaluation, bypassing persisted policy lookup.
                properties:
                  action:
                    description: 'Policy action: "approve", "reject", or "pending".'
                    title: Action
                    type: string
                  name:
                    description: Policy name.
                    title: Name
                    type: string
                  policy:
                    description: Policy definition with policy_type_id, conditions, targets, etc.
                    title: Policy
                    type: object
                required:
                - name
                - action
                - policy
                title: InlinePolicyEntry
                type: object
              type: array
            - type: 'null'
            description: Optional list of inline policy definitions to evaluate against instead of persisted policies. When provided, the cosigner's stored policies are ignored and these are used instead. Priority is derived from list order (index 0 = highest).
            title: Inline Policies
          show_transaction_detail_for:
            anyOf:
            - items:
                enum:
                - approved
                - rejected
                - manual_approved
                type: string
              type: array
            - type: 'null'
            description: Transaction hash lists for asked verdicts.
            title: Show Transaction Detail For
          tx_hash:
            description: Transaction hash to evaluate.
            title: Tx Hash
            type: string
        required:
        - evaluation_type
        - tx_hash
        - chain
        title: EvaluateTxHashRequest
        type: object
      - additionalProperties: false
        properties:
          chain:
            allOf:
            - enum:
              - arbitrum
              - base
              - bsc
              - gnosis
              - ethereum
              - optimism
              - polygon
              - sepolia
              - monad
              - katana
              title: SupportedEvmChains
              type: string
            description: Chain identifier.
          evaluation_type:
            const: time_period
            description: Evaluation mode.
            enum:
            - time_period
            title: Evaluation Type
            type: string
          show_transaction_detail_for:
            anyOf:
            - items:
                enum:
                - approved
                - rejected
                - manual_approved
                type: string
              type: array
            - type: 'null'
            description: Transaction hash lists for asked verdicts.
            title: Show Transaction Detail For
          time_period:
            allOf:
            - additionalProperties: false
              properties:
                from:
                  description: Start of window (inclusive, ISO 8601).
                  format: date-time
                  title: From
                  type: string
                to:
                  description: End of window (inclusive, ISO 8601).
                  format: date-time
                  title: To
                  type: string
              required:
              - from
              - to
              title: TimePeriodInput
              type: object
            description: Time window for query.
        required:
        - evaluation_type
        - time_period
        - chain
        title: EvaluateTimePeriodRequest
        type: object
      title: EvaluateTransactionRequest
      description: Request body for evaluating an EVM transaction against cosigner policies.
    CalledAddressRules-Input:
      properties:
        called_addresses:
          title: Called Addresses
          $ref: '#/components/schemas/CalledAddressesRule'
      type: object
      required:
      - called_addresses
      title: CalledAddressRules
    FireblocksCosignerUpdateExternal:
      properties:
        type:
          type: string
          enum:
          - fireblocks
          const: fireblocks
          title: Type
        vault_ids:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Vault Ids
        chains:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Chains
        involvement_level:
          anyOf:
          - $ref: '#/components/schemas/ApproverSigningMode'
          - type: 'null'
        security_policy:
          anyOf:
          - $ref: '#/components/schemas/ExternalPolicyOption'
          - type: 'null'
        unsupported_chain_behavior:
          anyOf:
          - $ref: '#/components/schemas/DecisionAction'
          - type: 'null'
      type: object
      required:
      - type
      title: FireblocksCosignerUpdateExternal
    TokenSpendApprovalPolicyRequest:
      properties:
        rules:
          $ref: '#/components/schemas/TokenSpendApprovalRules-Input'
        type:
          const: token_spend_approval
          enum:
          - token_spend_approval
          title: Type
          type: string
      required:
      - type
      - rules
      title: TokenSpendApprovalPolicyRequest
      type: object
    FunctionCallRules-Input:
      properties:
        function_name:
          $ref: '#/components/schemas/FunctionName'
        function_parameters:
          anyOf:
          - items:
              $ref: '#/components/schemas/FunctionParameter'
            type: array
          - type: 'null'
          title: Function Parameters
      type: object
      required:
      - function_name
      title: FunctionCallRules
    OtherChainPolicyResponse:
      description: Policy response for other/unsupported chains as returned by the API.
      properties:
        name:
          type: string
          title: Name
        action:
          $ref: '#/components/schemas/Action'
        policy:
          $ref: '#/components/schemas/UnsupportedChainPolicyResponse'
      type: object
      required:
      - name
      - action
      - policy
      title: OtherChainPolicyResponse
    CalledAddressRules-Output:
      properties:
        called_addresses:
          title: Called Addresses
          $ref: '#/components/schemas/CalledAddressesRule'
      type: object
      required:
      - called_addresses
      title: CalledAddressRules
    TelegramExternalAction:
      properties:
        type:
          type: string
          enum:
          - telegram
          const: telegram
          title: Type
        chats:
          items:
            $ref: '#/components/schemas/TelegramExternalChannel'
          type: array
          minItems: 1
          title: Chats
        message_format:
          anyOf:
          - type: string
          - type: 'null'
          title: Message Format
      type: object
      required:
      - type
      - chats
      title: TelegramExternalAction
    GainingAddressesPolicyResponse:
      properties:
        type:
          type: string
          enum:
          - gaining_addresses
          const: gaining_addresses
          title: Type
        rules:
          $ref: '#/components/schemas/GainingAddressesRules-Output'
      type: object
      required:
      - type
      - rules
      title: GainingAddressesPolicyResponse
    RiskExposureRules-Output:
      properties:
        category_thresholds:
          items:
            $ref: '#/components/schemas/CategoryThreshold-Output'
          title: Category Thresholds
          type: array
      required:
      - category_thresholds
      title: RiskExposureRules
      type: object
    MovedAssetsRule:
      properties:
        operator:
          $ref: '#/components/schemas/InclutionOperator'
        value:
          items:
            anyOf:
            - $ref: '#/components/schemas/AssetIDTarget'
            - $ref: '#/components/schemas/AssetTagTarget'
            - $ref: '#/components/schemas/AssetLabelTarget'
            - $ref: '#/components/schemas/UnknownTarget'
          title: Value
          type: array
      required:
      - operator
      - value
      title: MovedAssetsRule
      type: object
    BitcoinCompositePolicyRequest:
      properties:
        type:
          type: string
          enum:
          - composite
          const: composite
          title: Type
          default: composite
        operator:
          type: string
          enum:
          - and
          - or
          title: Operator
        rules:
          items:
            oneOf:
            - $ref: '#/components/schemas/GainingAddressesPolicyRequest'
            - $ref: '#/components/schemas/TransactionUSDValuePolicyRequest'
            - $ref: '#/components/schemas/BitcoinCompositePolicyRequest'
            discriminator:
              propertyName: type
              mapping:
                composite: '#/components/schemas/BitcoinCompositePolicyRequest'
                gaining_addresses: '#/components/schemas/GainingAddressesPolicyRequest'
                transaction_usd_value: '#/components/schemas/TransactionUSDValuePolicyRequest'
          type: array
          title: Rules
      type: object
      required:
      - operator
      - rules
      title: BitcoinCompositePolicyRequest
    CosignerSafeResponseExternal:
      properties:
        chain:
          type: string
          title: Chain
        type:
          type: string
          enum:
          - safe
          const: safe
          title: Type
        override_address:
          anyOf:
          - type: string
          - ty

# --- truncated at 32 KB (119 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blockaid/refs/heads/main/openapi/blockaid-cosigner-api-openapi.yml