openapi: 3.0.0 info: description: The Eon.io REST API title: Eon accounts actionApprovals API version: 1.0.0 servers: - url: / security: - ApiKeyAuth: [] tags: - name: actionApprovals paths: /v1/projects/{projectId}/action-approvals/my-requests/{requestId}: get: description: 'Description: Retrieves details of a specific action approval request submitted by the current user.' operationId: getMyActionApprovalRequest parameters: - description: The project ID explode: false in: path name: projectId required: true schema: format: uuid type: string style: simple - description: The action approval request ID explode: false in: path name: requestId required: true schema: format: uuid type: string style: simple responses: '200': content: application/json: schema: $ref: '#/components/schemas/GetMPARequestResponse' description: Successful operation '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not authorized because the action approval request was created by another user or API caller. '404': description: Action approval request wasn't found. 1XX: description: Informational 3XX: description: Redirect 4XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Client Error 5XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error summary: Get My Action Approval Request tags: - actionApprovals x-internal: false x-permissions: [] x-audit-log: excluded: true x-data-access: excluded: true /v1/projects/{projectId}/action-approvals/my-requests/{requestId}/cancel: post: description: 'Description: Cancel an action approval request created by the current user. Only allowed while the request is in PENDING_APPROVAL or APPROVED status.' operationId: cancelActionApprovalRequest parameters: - description: The project ID explode: false in: path name: projectId required: true schema: format: uuid type: string style: simple - description: Action approval request ID. explode: false in: path name: requestId required: true schema: format: uuid type: string style: simple responses: '200': content: application/json: schema: $ref: '#/components/schemas/CancelMyMPARequestResponse' description: Request canceled. '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not authorized (only the requester can cancel their own request) '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Action approval request wasn't found. '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Request can't be canceled in its current status. 1XX: description: Informational 3XX: description: Redirect 4XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Client Error 5XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error summary: Cancel Action Approval Request tags: - actionApprovals x-internal: false x-permissions: [] x-audit-log: action: update entityRefs: - entityType: mpa_request in: path key: requestId x-data-access: excluded: true /v1/projects/{projectId}/action-approvals/my-requests/{requestId}/submit: post: description: 'Description: Confirm or discard a CREATED action approval request. CONFIRM transitions to PENDING_APPROVAL and starts the approval timer. DISCARD transitions to DISCARDED.' operationId: createActionApprovalRequest parameters: - description: The project ID explode: false in: path name: projectId required: true schema: format: uuid type: string style: simple - description: Action approval request ID. explode: false in: path name: requestId required: true schema: format: uuid type: string style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/SubmitMyMPARequestRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/SubmitMyMPARequestResponse' description: Request submitted successfully '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not authorized (only the requester can submit their own request) '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Action approval request wasn't found. '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Request cannot be submitted in its current status 1XX: description: Informational 3XX: description: Redirect 4XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Client Error 5XX: content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error summary: Create Action Approval Request tags: - actionApprovals x-mcp: true x-internal: false x-permissions: [] x-audit-log: action: create entityRefs: - entityType: mpa_request in: path key: requestId x-data-access: excluded: true components: schemas: GetMPARequestResponse: example: mpaRequestDetail: request: requesterEmail: requester@example.com resolvedTime: 2026-05-05 02:10:12+00:00 requesterName: Riley Chen approvalExpirationTime: 2026-05-05 03:00:05+00:00 executionExpirationTime: 2026-05-05 07:00:05+00:00 createdTime: 2026-05-04 23:00:05+00:00 comment: Removing a backup policy that has been replaced. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 policyDetails: - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 operation: MPA_OPERATION_DELETE_BACKUP_POLICY status: PENDING_APPROVAL reviews: - reviewerName: Pat Lee decision: APPROVED reviewedTime: 2026-05-04 23:30:00+00:00 reviewerEmail: reviewer@example.com comment: Approved after confirming the request with the application owner. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 - reviewerName: Pat Lee decision: APPROVED reviewedTime: 2026-05-04 23:30:00+00:00 reviewerEmail: reviewer@example.com comment: Approved after confirming the request with the application owner. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 properties: mpaRequestDetail: $ref: '#/components/schemas/MPARequestDetail' required: - mpaRequestDetail type: object MPARequestStatus: description: 'Lifecycle state of an action approval request from creation through resolution. DISCARDED means the requester abandoned a draft before it was submitted for approval. ' enum: - MPA_REQUEST_STATUS_UNSPECIFIED - CREATED - PENDING_APPROVAL - APPROVED - DENIED - EXPIRED_PENDING_APPROVAL - EXPIRED_APPROVED - EXECUTED - CANCELED_PENDING_APPROVAL - CANCELED_APPROVED - DISCARDED example: PENDING_APPROVAL type: string x-enum-varnames: - MPA_REQUEST_STATUS_UNSPECIFIED - MPA_REQUEST_STATUS_CREATED - MPA_REQUEST_STATUS_PENDING_APPROVAL - MPA_REQUEST_STATUS_APPROVED - MPA_REQUEST_STATUS_DENIED - MPA_REQUEST_STATUS_EXPIRED_PENDING_APPROVAL - MPA_REQUEST_STATUS_EXPIRED_APPROVED - MPA_REQUEST_STATUS_EXECUTED - MPA_REQUEST_STATUS_CANCELLED_PENDING_APPROVAL - MPA_REQUEST_STATUS_CANCELLED_APPROVED - MPA_REQUEST_STATUS_DISCARDED Error: example: error: error properties: error: type: string type: object SubmitMyMPARequestRequest: example: action: CONFIRM comment: comment properties: action: $ref: '#/components/schemas/MPASubmitAction' comment: description: Optional comment to set on the request alongside the action. type: string required: - action type: object MPARequestDetail: example: request: requesterEmail: requester@example.com resolvedTime: 2026-05-05 02:10:12+00:00 requesterName: Riley Chen approvalExpirationTime: 2026-05-05 03:00:05+00:00 executionExpirationTime: 2026-05-05 07:00:05+00:00 createdTime: 2026-05-04 23:00:05+00:00 comment: Removing a backup policy that has been replaced. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 policyDetails: - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 operation: MPA_OPERATION_DELETE_BACKUP_POLICY status: PENDING_APPROVAL reviews: - reviewerName: Pat Lee decision: APPROVED reviewedTime: 2026-05-04 23:30:00+00:00 reviewerEmail: reviewer@example.com comment: Approved after confirming the request with the application owner. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 - reviewerName: Pat Lee decision: APPROVED reviewedTime: 2026-05-04 23:30:00+00:00 reviewerEmail: reviewer@example.com comment: Approved after confirming the request with the application owner. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 properties: request: $ref: '#/components/schemas/MPARequest' reviews: items: $ref: '#/components/schemas/MPAReview' type: array required: - request - reviews type: object x-nullable: true MPARequest: example: requesterEmail: requester@example.com resolvedTime: 2026-05-05 02:10:12+00:00 requesterName: Riley Chen approvalExpirationTime: 2026-05-05 03:00:05+00:00 executionExpirationTime: 2026-05-05 07:00:05+00:00 createdTime: 2026-05-04 23:00:05+00:00 comment: Removing a backup policy that has been replaced. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 policyDetails: - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 operation: MPA_OPERATION_DELETE_BACKUP_POLICY status: PENDING_APPROVAL properties: id: description: Unique identifier of the action approval request. example: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 format: uuid type: string operation: $ref: '#/components/schemas/MPAOperationType' requesterEmail: description: Email address of the requester who created the approval request. example: requester@example.com type: string requesterName: description: Display name of the requester at the time the request was created. example: Riley Chen type: string comment: description: Optional comment from the requester explaining why this operation is needed. example: Removing a backup policy that has been replaced. type: string status: $ref: '#/components/schemas/MPARequestStatus' policyDetails: description: Per-policy configuration and approval progress. items: $ref: '#/components/schemas/MPARequestPolicyDetail' type: array approvalExpirationTime: description: Deadline for gathering approvals. Set when the request is confirmed (submitted). Null for requests in CREATED or DISCARDED status. example: 2026-05-05 03:00:05+00:00 format: date-time nullable: true type: string executionExpirationTime: description: Deadline for executing the approved action. Set when the request is approved. example: 2026-05-05 07:00:05+00:00 format: date-time nullable: true type: string resolvedTime: description: Time when the request reached a terminal state, such as executed, expired, canceled, denied, or discarded. Null while the request is still active. example: 2026-05-05 02:10:12+00:00 format: date-time nullable: true type: string createdTime: description: Time when the approval request was created. example: 2026-05-04 23:00:05+00:00 format: date-time type: string required: - createdTime - id - operation - policyDetails - requestMethod - requestPath - requesterEmail - requesterId - status type: object x-nullable: true MPARequestPolicyDetail: example: approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 properties: requiredApprovals: description: Number of approvals required by this policy. example: 2 type: integer currentApprovals: description: Number of qualifying approvals received for this policy. example: 1 type: integer executionWindowHours: description: Hours the requester has to execute the approved action after full approval. example: 4 type: integer approvalWindowHours: description: Hours allowed for gathering all required approvals after submission. example: 24 type: integer description: description: Human-readable description of the policy. example: Require approval before deleting backup policies. type: string approverIdpId: description: UUID of the SAML identity provider connection this approver group belongs to. example: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 format: uuid nullable: true type: string approverProviderGroupId: description: Provider group identifier from the IdP. example: platform-admins nullable: true type: string required: - approvalWindowHours - currentApprovals - executionWindowHours - mpaPolicyId - requiredApprovals type: object x-nullable: true MPADecision: description: 'Decision on an MPA review record as returned on read APIs. APPROVED and DENIED come from reviewer actions; CANCELLED is written by the system (for example when the policy is deleted while requests are still pending). ' enum: - APPROVED - DENIED - CANCELLED example: APPROVED type: string x-enum-varnames: - MPA_REVIEW_DECISION_APPROVED - MPA_REVIEW_DECISION_DENIED - MPA_REVIEW_DECISION_CANCELLED CancelMyMPARequestResponse: example: actionApprovalRequest: requesterEmail: requester@example.com resolvedTime: 2026-05-05 02:10:12+00:00 requesterName: Riley Chen approvalExpirationTime: 2026-05-05 03:00:05+00:00 executionExpirationTime: 2026-05-05 07:00:05+00:00 createdTime: 2026-05-04 23:00:05+00:00 comment: Removing a backup policy that has been replaced. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 policyDetails: - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 operation: MPA_OPERATION_DELETE_BACKUP_POLICY status: PENDING_APPROVAL properties: actionApprovalRequest: $ref: '#/components/schemas/MPARequest' required: - actionApprovalRequest type: object MPAReview: example: reviewerName: Pat Lee decision: APPROVED reviewedTime: 2026-05-04 23:30:00+00:00 reviewerEmail: reviewer@example.com comment: Approved after confirming the request with the application owner. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 properties: id: description: Unique identifier of the review. example: 018f3b3f-4818-7c31-a0d7-2e02f2f83a20 format: uuid type: string reviewerEmail: description: Email address of the reviewer who submitted this review. example: reviewer@example.com type: string reviewerName: description: Display name of the reviewer at the time the review was submitted. example: Pat Lee type: string decision: $ref: '#/components/schemas/MPADecision' comment: description: Optional reviewer comment explaining the decision. example: Approved after confirming the request with the application owner. type: string reviewedTime: description: Time when the review was submitted. example: 2026-05-04 23:30:00+00:00 format: date-time type: string required: - decision - id - requestId - reviewedTime - reviewerEmail - reviewerId type: object x-nullable: true MPAOperationType: description: Operation that requires action approval before it can be completed. enum: - MPA_OPERATION_TYPE_UNSPECIFIED - MPA_OPERATION_ADD_RESTORE_ACCOUNT - MPA_OPERATION_RESTORE_RESOURCE - MPA_OPERATION_UPDATE_BACKUP_POLICY - MPA_OPERATION_DELETE_BACKUP_POLICY - MPA_OPERATION_REMOVE_SNAPSHOT_HOLD example: MPA_OPERATION_DELETE_BACKUP_POLICY type: string x-docs-internal-enum: - MPA_OPERATION_REMOVE_SNAPSHOT_HOLD x-enum-varnames: - MPA_OPERATION_TYPE_UNSPECIFIED - MPA_OPERATION_TYPE_MPA_OPERATION_ADD_RESTORE_ACCOUNT - MPA_OPERATION_TYPE_MPA_OPERATION_RESTORE_RESOURCE - MPA_OPERATION_TYPE_MPA_OPERATION_UPDATE_BACKUP_POLICY - MPA_OPERATION_TYPE_MPA_OPERATION_DELETE_BACKUP_POLICY - MPA_OPERATION_TYPE_MPA_OPERATION_REMOVE_SNAPSHOT_HOLD SubmitMyMPARequestResponse: example: actionApprovalRequest: requesterEmail: requester@example.com resolvedTime: 2026-05-05 02:10:12+00:00 requesterName: Riley Chen approvalExpirationTime: 2026-05-05 03:00:05+00:00 executionExpirationTime: 2026-05-05 07:00:05+00:00 createdTime: 2026-05-04 23:00:05+00:00 comment: Removing a backup policy that has been replaced. id: 018f3b3f-4818-7c31-a0d7-2e02f2f83a10 policyDetails: - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 - approverIdpId: 018f3b3f-4818-7c31-a0d7-2e02f2f83a31 requiredApprovals: 2 approverProviderGroupId: platform-admins executionWindowHours: 4 description: Require approval before deleting backup policies. approvalWindowHours: 24 currentApprovals: 1 operation: MPA_OPERATION_DELETE_BACKUP_POLICY status: PENDING_APPROVAL properties: actionApprovalRequest: $ref: '#/components/schemas/MPARequest' type: object MPASubmitAction: description: Action to take on a CREATED MPA request. enum: - MPA_SUBMIT_ACTION_UNSPECIFIED - CONFIRM - DISCARD example: CONFIRM type: string x-enum-varnames: - MPA_SUBMIT_ACTION_UNSPECIFIED - MPA_SUBMIT_ACTION_CONFIRM - MPA_SUBMIT_ACTION_DISCARD securitySchemes: ApiKeyAuth: bearerFormat: JWT scheme: bearer type: http