Tradeverifyd Transparency Log API

Auxillary resources for securing and analyzing supply chain artifacts

OpenAPI Specification

tradeverifyd-transparency-log-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Tradeverifyd Documents Transparency Log API
  description: '

    The Tradeverifyd API offers advanced capabilities for analyzing supply chain entities and their intricate relationships, enabling users to gain deep insights into the complex dynamics of global trade networks.


    For more information visit [tradeverifyd.com](https://tradeverifyd.com).


    If you have questions regarding specific use cases or how to accomplish them, please reach out to [support@tradeverifyd.com](mailto:support@tradeverifyd.com?subject=Tradeverifyd%20use%20cases) for guidance.


    When making requests that require a Tradeverifyd API Key make sure the correct HTTP Header is included.


    For example:


    ```bash

    curl --silent --location -G ''https://.../v1/search/entities'' \

    --data-urlencode ''name=Contoso Corporation'' \

    --data-urlencode ''jurisdiction=US'' \

    --header "ocp-apim-subscription-key: $TRADEVERIFYD_API_KEY"

    ```

    '
  termsOfService: https://tradeverifyd.com/terms-of-service
  contact:
    name: tradeverifyd.com
    url: https://tradeverifyd.com/
    email: support@tradeverifyd.com
  license:
    name: Proprietary License
    url: https://tradeverifyd.com/terms-of-service
  version: 0.2.0
servers:
- url: https://api.tradeverifyd.com
  description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Transparency Log
  description: Auxillary resources for securing and analyzing supply chain artifacts
paths:
  /checkpoint:
    get:
      summary: Get Checkpoint Receipt
      description: 'Get a scitt receipt for the last entry in the transparency log.

        '
      tags:
      - Transparency Log
      responses:
        '200':
          description: Checkpoint receipt retrieved successfully
          headers:
            Cache-Control:
              schema:
                type: string
                example: public, max-age=60
          content:
            application/scitt-receipt+cose:
              schema:
                type: string
                format: binary
                description: CBOR-encoded COSE Sign1 receipt for the last entry
        '500':
          description: Failed to get checkpoint (log may be empty)
          content:
            text/plain:
              schema:
                type: string
  /tile/{level}/{index}:
    get:
      summary: Get Merkle Tree Tile
      description: 'Get a Merkle tree tile from the transparency log.

        Supports C2SP tlog-tiles format with nested indices.

        '
      tags:
      - Transparency Log
      parameters:
      - name: level
        in: path
        required: true
        description: Merkle tree level (0-63)
        schema:
          type: integer
          minimum: 0
          maximum: 63
      - name: index
        in: path
        required: true
        description: Tile index (nested format like x001/x234/067)
        schema:
          type: string
      responses:
        '200':
          description: Tile retrieved successfully
          headers:
            Cache-Control:
              schema:
                type: string
                example: public, max-age=31536000, immutable
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: Raw tile data (256 hashes × 32 bytes for full tiles)
        '404':
          description: Tile not found
          content:
            text/plain:
              schema:
                type: string
  /tile/entries/{index}:
    get:
      summary: Get Entry Tile
      description: 'Get an entry tile (bundle) from the transparency log.

        Contains raw entry hashes for the specified tile index.

        '
      tags:
      - Transparency Log
      parameters:
      - name: index
        in: path
        required: true
        description: Entry tile index (nested format like x001/x234/067)
        schema:
          type: string
      responses:
        '200':
          description: Entry tile retrieved successfully
          headers:
            Cache-Control:
              schema:
                type: string
                example: public, max-age=31536000, immutable
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: Raw entry tile data (up to 256 hashes × 32 bytes)
        '404':
          description: Entry tile not found
          content:
            text/plain:
              schema:
                type: string
  /statements:
    get:
      summary: Query Statements
      description: 'Query statement metadata with optional filters.

        Returns JSON array of statement metadata.

        '
      tags:
      - Transparency Log
      parameters:
      - name: iss
        in: query
        description: Filter by issuer URL
        schema:
          type: string
          example: https://issuer.example.com
      - name: sub
        in: query
        description: Filter by subject
        schema:
          type: string
      - name: cty
        in: query
        description: Filter by content type
        schema:
          type: string
          example: application/json
      - name: typ
        in: query
        description: Filter by type
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of results (default 100, max 1000)
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
      - name: offset
        in: query
        description: Pagination offset
        schema:
          type: integer
          minimum: 0
          default: 0
      responses:
        '200':
          description: Statements retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  statements:
                    type: array
                    items:
                      $ref: '#/components/schemas/StatementMetadata'
                  limit:
                    type: integer
                    example: 100
                  offset:
                    type: integer
                    example: 0
                  total:
                    type: integer
                    example: 42
              example:
                statements:
                - entry_id: 86
                  leaf_hash: 49bc8c5a970039e2ff0a015d8ed3a6a7db802352826d39c777d6dbe387b1a3df
                  iss: urn:supply-chain:quantum-chip-design
                  sub: urn:supply-chain:quantum-chip-design
                  cty: application/json
                  payload_hash_alg: -16
                  payload_hash: 6824c806d0ed25c150522992e0e5e982ed91e977e027c4c2c8078035d333e835
                  payload_location: https://quantum-chip-design.example/documents/memory-008.json
                  registered_at: '2025-10-19T15:34:56Z'
                - entry_id: 85
                  leaf_hash: 775e591b66740ed8fbf69952cee0b3334f7acfd7d4e9ebf4e5c86c97bd4e516a
                  iss: urn:supply-chain:quantum-chip-design
                  sub: urn:supply-chain:quantum-chip-design
                  cty: application/json
                  payload_hash_alg: -16
                  payload_hash: 2109d7c92c98ab3a73cfcff16b28477736e753883233bc5970657b28e438da3e
                  payload_location: https://quantum-chip-design.example/documents/memory-007.json
                  registered_at: '2025-10-19T15:34:56Z'
                limit: 100
                offset: 0
                total: 86
        '500':
          description: Failed to query statements
          content:
            text/plain:
              schema:
                type: string
    post:
      summary: Register Statement (Alternative)
      description: 'Register a new COSE Sign1 statement in the transparency log.

        Alternative endpoint to POST /entries with the same behavior.


        Supports both application/cose and application/scitt-statement+cose content types.

        '
      tags:
      - Transparency Log
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/cose:
            schema:
              type: string
              format: binary
              description: CBOR-encoded COSE Sign1 structure
          application/scitt-statement+cose:
            schema:
              type: string
              format: binary
              description: CBOR-encoded COSE Sign1 SCITT statement
      responses:
        '201':
          description: Statement registered successfully - returns COSE Sign1 receipt
          content:
            application/scitt-receipt+cose:
              schema:
                type: string
                format: binary
                description: CBOR-encoded COSE Sign1 receipt with Merkle inclusion proof
        '400':
          description: Invalid request (malformed COSE Sign1 or validation failure)
          content:
            text/plain:
              schema:
                type: string
        '401':
          description: Unauthorized (missing or invalid API key)
          content:
            text/plain:
              schema:
                type: string
        '415':
          description: Unsupported Media Type
          content:
            text/plain:
              schema:
                type: string
  /statements/{entry_id}/receipt:
    get:
      summary: Get Receipt (Alternative)
      description: 'Retrieve a transparency receipt for a registered statement.

        Alternative endpoint to GET /entries/{entry_id} with the same behavior.

        '
      tags:
      - Transparency Log
      parameters:
      - name: entry_id
        in: path
        required: true
        description: Entry ID of the registered statement
        schema:
          type: integer
          format: int64
          example: 42
      responses:
        '200':
          description: Receipt retrieved successfully
          content:
            application/scitt-receipt+cose:
              schema:
                type: string
                format: binary
                description: CBOR-encoded COSE Sign1 receipt with Merkle inclusion proof
        '404':
          description: Statement not found
          content:
            text/plain:
              schema:
                type: string
        '400':
          description: Invalid entry ID format
          content:
            text/plain:
              schema:
                type: string
components:
  schemas:
    StatementMetadata:
      type: object
      properties:
        entry_id:
          type: integer
          format: int64
          description: Unique entry ID in the log
          example: 42
        leaf_hash:
          type: string
          description: Hex-encoded leaf hash stored in the tile
          example: a1b2c3d4...
        iss:
          type: string
          description: Issuer URL
          example: https://issuer.example.com
        sub:
          type: string
          description: Subject (optional)
          example: artifact-123
        cty:
          type: string
          description: Content type (optional)
          example: application/json
        typ:
          type: string
          description: Type (optional)
          example: application/example
        payload_hash_alg:
          type: integer
          description: Hash algorithm identifier
          example: -16
        payload_hash:
          type: string
          description: Hex-encoded payload hash
          example: 9f8e7d6c...
        payload_location:
          type: string
          description: Payload location (optional)
          example: https://example.com/payload
        registered_at:
          type: string
          format: date-time
          description: Registration timestamp (ISO 8601)
          example: '2023-10-18T12:00:00Z'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: ocp-apim-subscription-key