openapi: 3.2.0 info: description: Fortanix Confidential Computing Manager Backend. These are APIs using which the frontend and other clients (compute node agents) interact with Fortanix Confidential Computing Manager functionalities, which include compute node and app enrollment, attestation and signing, and Certificate Authority. version: 2.0.0 title: Confidential Computing Manager Approval Requests API termsOfService: https://www.fortanix.com/legal/terms/ contact: name: Fortanix Support url: https://support.fortanix.com/hc/en-us/categories/360003107511-Confidential-Computing-Manager email: support@fortanix.com license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://ccm.fortanix.com tags: - name: ApprovalRequests paths: /v1/approval_requests: get: tags: - ApprovalRequests summary: Get all approval requests description: Get detailed information of all approval requests that the current user has access to. operationId: getAllApprovalRequests x-auth-resource: Reader,Writer,Manager parameters: - name: requester in: query description: Only retrieve approval requests with the specified requester ID required: false schema: type: string format: uuid - name: reviewer in: query description: Only retrieve approval requests with the specified reviewer ID required: false schema: type: string format: uuid - name: subject in: query description: Only retrieve approval requests with the specified subject ID required: false schema: type: string format: uuid - name: status in: query description: Only retrieve approval requests with the specified approval status required: false schema: type: string enum: - PENDING - APPROVED - DENIED - FAILED - name: all_search in: query description: Search on name or description. required: false schema: type: string - name: sort_by in: query description: Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC required: false schema: type: string - name: limit in: query description: Maximum numbers of app configs to return. required: false schema: type: integer - name: offset in: query description: Number of app configs to skip from start. required: false schema: type: integer - name: filter in: query description: Filter items based on groups or labels. required: false schema: type: string responses: '200': description: Search result for approval request objects. content: application/json: schema: $ref: '#/components/schemas/GetAllApprovalRequests' security: - bearerToken: [] post: tags: - ApprovalRequests summary: Create approval request. description: Create approval request operationId: createApprovalRequest x-auth-resource: Reader,Writer,Manager parameters: - $ref: '#/components/parameters/ApprovalRequestRequest' responses: '201': description: A newly created approval request. content: application/json: schema: $ref: '#/components/schemas/ApprovalRequest' security: - bearerToken: [] /v1/approval_requests/{request-id}: get: tags: - ApprovalRequests summary: Get an approval request. description: Get the details and status of a particular approval request. operationId: getApprovalRequest x-auth-resource: Reader,Writer,Manager parameters: - $ref: '#/components/parameters/RequestId' responses: '200': description: Details about the specified approval request. content: application/json: schema: $ref: '#/components/schemas/ApprovalRequest' security: - bearerToken: [] delete: tags: - ApprovalRequests summary: Delete an approval request. parameters: - $ref: '#/components/parameters/RequestId' operationId: deleteApprovalRequest x-auth-resource: Reader,Writer,Manager responses: '204': description: Nothing is returned on success. security: - bearerToken: [] /v1/approval_requests/{request-id}/approve: post: tags: - ApprovalRequests summary: Approve a request. parameters: - $ref: '#/components/parameters/RequestId' - $ref: '#/components/parameters/ApproveRequest' operationId: approveApprovalRequest x-auth-resource: Reader,Writer,Manager responses: '200': description: Details about the specified approval request. content: application/json: schema: $ref: '#/components/schemas/ApprovalRequest' security: - bearerToken: [] /v1/approval_requests/{request-id}/deny: post: tags: - ApprovalRequests summary: Deny a request. parameters: - $ref: '#/components/parameters/RequestId' - $ref: '#/components/parameters/DenyRequest' operationId: denyApprovalRequest x-auth-resource: Reader,Writer,Manager responses: '200': description: Details about the specified approval request. content: application/json: schema: $ref: '#/components/schemas/ApprovalRequest' security: - bearerToken: [] /v1/approval_requests/{request-id}/result: post: tags: - ApprovalRequests summary: Get the result for an approved or failed request. parameters: - $ref: '#/components/parameters/RequestId' operationId: getApprovalRequestResult x-auth-resource: Reader,Writer,Manager responses: '200': description: Details about the specified approval request result. content: application/json: schema: $ref: '#/components/schemas/ApprovableResult' security: - bearerToken: [] components: schemas: ApprovalRequestRequest: type: object description: Request to create an approval request. required: - operation properties: operation: type: string description: Operation URL path, e.g. `/crypto/v1/keys`, `/crypto/v1/groups/`. method: type: string description: 'Method for the operation: POST, PATCH, PUT, DELETE, or GET. Default is POST.' body: type: object description: type: string description: Optional comment about the approval request for the reviewer. ApprovalRequestStatus: type: string description: Approval request status. enum: - PENDING - APPROVED - DENIED - FAILED - DENIED_OTHER - PENDING_CHILD - PENDING_OTHER ApproveRequest: type: object description: Optional parameters for approve request properties: password: type: string description: Password is required if the approval policy requires password authentication. u2f: type: string description: U2F is required if the approval policy requires two factor authentication. body: type: object description: Data associated with the approval SearchMetadata: type: object required: - total_count - filtered_count - page - pages - limit properties: page: type: integer description: Current page number pages: type: integer description: Total pages as per the item counts and page limit. limit: type: integer description: Number of items to limit in a page. total_count: type: integer description: Total number of unfiltered items. filtered_count: type: integer description: Total number of items as per the current filter. ApprovableResult: type: object description: Result of an approval request required: - status - body properties: status: type: integer description: The HTTP status code for this partial request. body: type: object DenyRequest: type: object description: Optional parameters for deny request properties: reason: type: string description: Reason associated with the denial GetAllApprovalRequests: type: object required: - items properties: metadata: $ref: '#/components/schemas/SearchMetadata' items: type: array items: $ref: '#/components/schemas/ApprovalRequest' ApprovalSubject: type: object description: Identifies an object acted upon by an approval request. properties: workflow: type: string format: uuid description: The ID of the workflow being acted upon. Entity: type: object description: An app, user, or plugin ID. properties: user: type: string format: uuid description: The user ID of the user who created this entity, if this entity was created by a user. ApprovalRequest: type: object required: - request_id - requester - created_at - acct_id - group_id - operation - method - approvers - status - expiry properties: request_id: type: string format: uuid description: UUID uniquely identifying this approval request. requester: $ref: '#/components/schemas/Entity' created_at: type: integer format: int64 description: When this approval request was created. acct_id: type: string format: uuid description: The account ID of the account that this approval request belongs to. group_id: type: string format: uuid description: The group ID where this approval request belongs to. operation: type: string description: Operation URL path, e.g. `/crypto/v1/keys`, `/crypto/v1/groups/`. method: type: string description: 'Method for the operation: POST, PATCH, PUT, DELETE, or GET. Default is POST.' body: type: object approvers: type: array items: $ref: '#/components/schemas/Entity' denier: $ref: '#/components/schemas/Entity' denial_reason: type: string description: Reason given by denier. reviewers: type: array items: $ref: '#/components/schemas/Entity' status: $ref: '#/components/schemas/ApprovalRequestStatus' subjects: type: array items: $ref: '#/components/schemas/ApprovalSubject' description: type: string description: Optional comment about the approval request for the reviewer. expiry: type: integer format: int64 description: When this approval request expires. parameters: DenyRequest: name: body in: body required: false description: Optional parameters for deny request schema: $ref: '#/components/schemas/DenyRequest' ApproveRequest: name: body in: body required: false description: Optional parameters for approval request schema: $ref: '#/components/schemas/ApproveRequest' ApprovalRequestRequest: name: body in: body required: true description: Request to create an approval request. schema: $ref: '#/components/schemas/ApprovalRequestRequest' RequestId: name: request-id in: path required: true description: Approval Request Identifier schema: type: string format: uuid securitySchemes: bearerToken: type: apiKey in: header name: Authentication description: A JWT bearer token to be passed once authenticated.