> This page is for API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.eon.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.eon.io/_mcp/server.

# Submit My Action Request

POST https://%7Baccount-domain%7D.console.eon.io/api/v1/projects/{projectId}/action-approvals/my-requests/{requestId}/submit
Content-Type: application/json

Submit or discard an action request that's in its initial `CREATED` status.

When submitting, the action request status changes to pending approval.
The approval window begins, and reviewers must approve before the window ends.

When discarding, the action request is abandoned, and no further action can be taken.


Reference: https://docs.eon.io/api/api-reference/access-management/action-approvals/my-action-requests/create-action-approval-request

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `projectId` (string, required) — ID of the project.
- `requestId` (string, required) — ID of the action request.

### Body (application/json)

This endpoint expects a SubmitMyMPARequestRequest.

- `action` (enum, required) — Action to take on the initial request. The requester can submit (confirm) or discard the request.
  - Allowed values: `MPA_SUBMIT_ACTION_UNSPECIFIED`, `CONFIRM`, `DISCARD`
- `comment` (string, optional) — Comment from the requester explaining why they want to perform the action.

## Response

### 200

Action request submitted or discarded.

- `actionApprovalRequest` (MPARequest, optional) — Action request details.

## Errors

### 403 Forbidden Error

Unauthorized because the action request was created by another caller.

- `error` (string, optional)

### 404 Not Found Error

Action request wasn't found.

- `error` (string, optional)

### 409 Conflict Error

Action request can't be submitted or discarded in its current status.

- `error` (string, optional)

## Types

### MPARequest

Action request details.

- `id` (string, required) — ID of the action request.
- `operation` (enum, required) — Operation that requires action approval before it can be completed.
  - Allowed values: `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_CREATE_BACKUP_POLICY`
- `requesterEmail` (string, required) — Email address of the requester.
- `status` (enum, required) — Action request status. For an explanation of statuses, see [Action Request Statuses](/data-protection/account-administration/access-management/action-approvals/action-request-statuses).
  - Allowed values: `MPA_REQUEST_STATUS_UNSPECIFIED`, `CREATED`, `PENDING_APPROVAL`, `APPROVED`, `DENIED`, `EXPIRED_PENDING_APPROVAL`, `EXPIRED_APPROVED`, `EXECUTED`, `CANCELED_PENDING_APPROVAL`, `CANCELED_APPROVED`, `DISCARDED`
- `policyDetails` (list of MPARequestPolicyDetail, required) — List of the action request's approval rules. Each item contains the rule's configuration and approval progress.
- `createdTime` (datetime, required) — Time when the approval request was created.
- `requesterName` (string, optional) — Display name of the requester at the time the request was created.
- `comment` (string, optional) — Comment from the requester explaining why they want to perform the action.
- `approvalExpirationTime` (datetime, optional, nullable) — Deadline for gathering approvals. Omitted before the request is submitted or after it's discarded.
- `executionExpirationTime` (datetime, optional, nullable) — Deadline for completing the approved action. Set when the request is approved.
- `resolvedTime` (datetime, optional, nullable) — Time when the request reached a terminal state, such as executed, expired, canceled, denied, or discarded. Omitted while the request is still active.

### MPARequestPolicyDetail

- `requiredApprovals` (integer, required) — Count of approvals the rule requires.
- `currentApprovals` (integer, required) — Count of qualifying approvals received.
- `executionWindowHours` (integer, required) — After all required approvals are received, number of hours the requester has to complete the action.
- `approvalWindowHours` (integer, required) — After submitting the action request, number of hours allowed for gathering all required approvals.
- `description` (string, optional) — Rule description.
- `approverIdpId` (string, optional, nullable) — Eon-assigned ID of the SAML identity provider the approver group belongs to. Used in combination with `approverProviderGroupId`.
- `approverProviderGroupId` (string, optional, nullable) — Identity-provider-assigned ID of the group. Used in combination with `approverIdpId`.

## Examples

**Request**

```json
{
  "action": "CONFIRM"
}
```

**Response**

```json
{
  "actionApprovalRequest": {
    "id": "018f3b3f-4818-7c31-a0d7-2e02f2f83a10",
    "operation": "MPA_OPERATION_DELETE_BACKUP_POLICY",
    "requesterEmail": "requester@example.com",
    "status": "PENDING_APPROVAL",
    "policyDetails": [
      {
        "requiredApprovals": 2,
        "currentApprovals": 1,
        "executionWindowHours": 4,
        "approvalWindowHours": 24,
        "description": "Require approval before deleting backup policies.",
        "approverIdpId": "018f3b3f-4818-7c31-a0d7-2e02f2f83a31",
        "approverProviderGroupId": "platform-admins"
      }
    ],
    "createdTime": "2026-05-04T23:00:05Z",
    "requesterName": "Riley Chen",
    "comment": "Removing a backup policy that has been replaced.",
    "approvalExpirationTime": "2026-05-05T03:00:05Z",
    "executionExpirationTime": "2026-05-05T07:00:05Z",
    "resolvedTime": "2026-05-05T02:10:12Z"
  }
}
```

**SDK Code**

```python
import requests

url = "https://{account-domain}.console.eon.io/api/v1/projects/8ea94e63-894f-5779-aa8f-06ad93121abb/action-approvals/my-requests/0fc514a3-61fe-5d39-a079-9d0df1820956/submit"

payload = { "action": "CONFIRM" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{account-domain}.console.eon.io/api/v1/projects/8ea94e63-894f-5779-aa8f-06ad93121abb/action-approvals/my-requests/0fc514a3-61fe-5d39-a079-9d0df1820956/submit';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"action":"CONFIRM"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://{account-domain}.console.eon.io/api/v1/projects/8ea94e63-894f-5779-aa8f-06ad93121abb/action-approvals/my-requests/0fc514a3-61fe-5d39-a079-9d0df1820956/submit")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"CONFIRM\"\n}")
  .asString();
```