Sigstore entries API

The entries API from Sigstore — 3 operation(s) for entries.

OpenAPI Specification

sigstore-entries-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: Fulcio CA entries API
  version: 2.0.0
  contact:
    name: sigstore Fulcio project
    url: https://github.com/sigstore/fulcio
    email: sigstore-dev@googlegroups.com
  license:
    name: Apache License 2.0
    url: https://github.com/sigstore/fulcio/blob/main/LICENSE
host: fulcio.sigstore.dev
schemes:
- http
consumes:
- application/json
produces:
- application/json
tags:
- name: entries
paths:
  /api/v1/log/entries:
    post:
      summary: Creates an entry in the transparency log
      description: 'Creates an entry in the transparency log for a detached signature, public key, and content.

        '
      operationId: createLogEntry
      tags:
      - entries
      parameters:
      - in: body
        name: proposedEntry
        schema:
          $ref: '#/definitions/ProposedEntry'
        required: true
      responses:
        201:
          description: Returns the entry created in the transparency log
          headers:
            ETag:
              type: string
              description: UUID of log entry
            Location:
              type: string
              description: URI location of log entry
              format: uri
          schema:
            $ref: '#/definitions/LogEntry'
        400:
          $ref: '#/responses/BadContent'
        409:
          $ref: '#/responses/Conflict'
        default:
          $ref: '#/responses/InternalServerError'
    get:
      summary: Retrieves an entry and inclusion proof from the transparency log (if it exists) by index
      operationId: getLogEntryByIndex
      tags:
      - entries
      parameters:
      - in: query
        name: logIndex
        type: integer
        required: true
        minimum: 0
        description: specifies the index of the entry in the transparency log to be retrieved
      responses:
        200:
          description: the entry in the transparency log requested along with an inclusion proof
          schema:
            $ref: '#/definitions/LogEntry'
        404:
          $ref: '#/responses/NotFound'
        default:
          $ref: '#/responses/InternalServerError'
  /api/v1/log/entries/{entryUUID}:
    get:
      summary: Get log entry and information required to generate an inclusion proof for the entry in the transparency log
      description: Returns the entry, root hash, tree size, and a list of hashes that can be used to calculate proof of an entry being included in the transparency log
      operationId: getLogEntryByUUID
      tags:
      - entries
      parameters:
      - in: path
        name: entryUUID
        type: string
        required: true
        pattern: ^([0-9a-fA-F]{64}|[0-9a-fA-F]{80})$
        description: the UUID of the entry for which the inclusion proof information should be returned
      responses:
        200:
          description: Information needed for a client to compute the inclusion proof
          schema:
            $ref: '#/definitions/LogEntry'
        404:
          $ref: '#/responses/NotFound'
        default:
          $ref: '#/responses/InternalServerError'
  /api/v1/log/entries/retrieve:
    post:
      summary: Searches transparency log for one or more log entries
      operationId: searchLogQuery
      tags:
      - entries
      parameters:
      - in: body
        name: entry
        required: true
        schema:
          $ref: '#/definitions/SearchLogQuery'
      responses:
        200:
          description: Returns zero or more entries from the transparency log, according to how many were included in request query
          schema:
            type: array
            items:
              $ref: '#/definitions/LogEntry'
        400:
          $ref: '#/responses/BadContent'
        422:
          $ref: '#/responses/UnprocessableEntity'
        default:
          $ref: '#/responses/InternalServerError'
definitions:
  Error:
    type: object
    properties:
      code:
        type: integer
      message:
        type: string
  LogEntry:
    type: object
    additionalProperties:
      type: object
      properties:
        logID:
          type: string
          pattern: ^[0-9a-fA-F]{64}$
          description: This is the SHA256 hash of the DER-encoded public key for the log at the time the entry was included in the log
        logIndex:
          type: integer
          minimum: 0
        body:
          type: object
          additionalProperties: true
        integratedTime:
          type: integer
          description: The time the entry was added to the log as a Unix timestamp in seconds
        attestation:
          type: object
          properties:
            data:
              format: byte
          format: byte
        verification:
          type: object
          properties:
            inclusionProof:
              $ref: '#/definitions/InclusionProof'
            signedEntryTimestamp:
              type: string
              format: byte
              description: Signature over the logID, logIndex, body and integratedTime.
      required:
      - logID
      - logIndex
      - body
      - integratedTime
  InclusionProof:
    type: object
    properties:
      logIndex:
        type: integer
        description: The index of the entry in the transparency log
        minimum: 0
      rootHash:
        description: The hash value stored at the root of the merkle tree at the time the proof was generated
        type: string
        pattern: ^[0-9a-fA-F]{64}$
      treeSize:
        type: integer
        description: The size of the merkle tree at the time the inclusion proof was generated
        minimum: 1
      hashes:
        description: A list of hashes required to compute the inclusion proof, sorted in order from leaf to root
        type: array
        items:
          type: string
          description: SHA256 hash value expressed in hexadecimal format
          pattern: ^[0-9a-fA-F]{64}$
      checkpoint:
        type: string
        format: signedCheckpoint
        description: The checkpoint (signed tree head) that the inclusion proof is based on
    required:
    - logIndex
    - rootHash
    - treeSize
    - hashes
    - checkpoint
  ProposedEntry:
    type: object
    discriminator: kind
    properties:
      kind:
        type: string
    required:
    - kind
  SearchLogQuery:
    type: object
    properties:
      entryUUIDs:
        type: array
        minItems: 1
        maxItems: 10
        items:
          type: string
          pattern: ^([0-9a-fA-F]{64}|[0-9a-fA-F]{80})$
      logIndexes:
        type: array
        minItems: 1
        maxItems: 10
        items:
          type: integer
          minimum: 0
      entries:
        type: array
        minItems: 1
        maxItems: 10
        items:
          $ref: '#/definitions/ProposedEntry'
responses:
  InternalServerError:
    description: There was an internal error in the server while processing the request
    schema:
      $ref: '#/definitions/Error'
  BadContent:
    description: The content supplied to the server was invalid
    schema:
      $ref: '#/definitions/Error'
  UnprocessableEntity:
    description: The server understood the request but is unable to process the contained instructions
    schema:
      $ref: '#/definitions/Error'
  NotFound:
    description: The content requested could not be found
  Conflict:
    description: The request conflicts with the current state of the transparency log
    schema:
      $ref: '#/definitions/Error'
    headers:
      Location:
        type: string
        format: uri
externalDocs:
  description: More about Fulcio
  url: https://github.com/sigstore/fulcio