Eon

Eon actionApprovals API

The actionApprovals API from Eon — 3 operation(s) for actionapprovals.

OpenAPI Specification

eon-actionapprovals-api-openapi.yml Raw ↑
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