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