Eon API
REST API for the Eon cloud backup platform — connect source/restore cloud accounts, manage vaults, backup policies, snapshots and restores, jobs, IAM roles, billing, and multi-party action approvals.
REST API for the Eon cloud backup platform — connect source/restore cloud accounts, manage vaults, backup policies, snapshots and restores, jobs, IAM roles, billing, and multi-party action approvals.
openapi: 3.0.0
info:
description: The Eon.io REST API
title: Eon API
version: 1.0.0
servers:
- url: /
security:
- ApiKeyAuth: []
tags:
- description: The Eon.io REST API.
name: eonApi
- description: Authentication and access token management.
name: auth
x-displayName: Auth
- description: Manage projects that organize backups and resources.
name: projects
x-displayName: Projects
- description: Manage connected cloud accounts onboarded to Eon.
name: accounts
x-displayName: Connected Accounts
- description: Discover and manage protected cloud resources.
name: resources
x-displayName: Resources
- description: Manage backup vaults that store snapshots.
name: vaults
x-displayName: Vaults
- description: Manage resource snapshots and point-in-time recovery points.
name: snapshots
x-displayName: Snapshots
- description: Manage database snapshots and their recovery points.
name: databaseSnapshots
x-displayName: Database Snapshots
- description: Define and manage backup policies and schedules.
name: backupPolicies
x-displayName: Backup Policies
- description: "Track backup, restore, and other asynchronous jobs."
name: jobs
x-displayName: Jobs
- description: Query audit logs of account activity.
name: auditLogs
x-displayName: Audit Logs
- description: Access billing and usage metering information.
name: billing
x-displayName: Billing
paths:
/v1/permissions:
get:
description: "Description: Retrieves a list of user permissions."
operationId: listPermissions
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ListPermissionsResponse'
description: Permissions retrieved.
"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: List Permissions
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions: []
x-audit-log:
excluded: true
/v1/roles:
post:
description: |
Description: Creates a custom role.<br/>
When creating a role, you'll specify a list of permissions and, optionally, data access conditions.
Data access conditions let you restrict the resources a permission is granted for.
For example, for a particular role, you can set data access conditions to allow access only to resources without PII.
operationId: createRole
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoleRequest'
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoleResponse'
description: Role created.
"400":
description: Validation error.
"409":
description: A role with the same name already exists.
"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 Role
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- create:account_roles
x-audit-log:
action: create
entityRefs:
- entityType: role
in: resBody
key: id
/v1/roles/list:
post:
description: "Description: Retrieves a list of user roles."
operationId: listRoles
parameters:
- allowEmptyValue: true
description: |
Cursor that points to the first record of the next page of results.
Get this value from the previous response.
To preserve the results in the same order, use the same sorting and filters in the first request as all subsequent requests.
example: Yjk3ODZjNjktZTIwZC00NjAxLWE1MzktZjg2NGExM2IxYTZlfDE=
explode: true
in: query
name: pageToken
required: false
schema:
format: tobedefined
type: string
style: form
- description: Maximum number of items to return in the response.
example: 10
explode: true
in: query
name: pageSize
required: false
schema:
default: 50
minimum: 1
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ListRolesResponse'
description: Roles retrieved.
"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: List Roles
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions: []
x-audit-log:
excluded: true
/v1/roles/{roleId}:
delete:
description: "Description: Deletes a role."
operationId: deleteRole
parameters:
- description: Role ID.
example: ceaf2281-bf04-542d-a801-a6a4865373ad
explode: false
in: path
name: roleId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"204":
description: Role deleted.
"404":
description: Role not 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: Delete Role
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- delete:account_roles
x-audit-log:
action: delete
entityRefs:
- entityType: role
in: path
key: roleId
get:
description: "Description: Retrieves a role."
operationId: getRole
parameters:
- description: Role ID.
example: daa42222-6ad2-5d37-bb26-4f2a9cba73da
explode: false
in: path
name: roleId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/GetRoleResponse'
description: Role retrieved.
"404":
description: Role 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 Role
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions: []
x-audit-log:
excluded: true
put:
description: "Description: This API operation updates the details of a role\
\ using its unique ID. The request body must contain the updated role details."
operationId: updateRole
parameters:
- description: ID of the role
explode: false
in: path
name: roleId
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRoleRequest'
description: The request body for updating a user
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRoleResponse'
description: Role updated.
"404":
description: Role not 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: Update Role
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- update:account_roles
x-audit-log:
action: update
entityRefs:
- entityType: role
in: path
key: roleId
/v1/idps/list:
post:
description: "Description: Retrieves a list of identity providers for the account."
operationId: listIdps
parameters:
- allowEmptyValue: true
description: |
Cursor that points to the first record of the next page of results.
Get this value from the previous response.
To preserve the results in the same order, use the same sorting and filters in the first request as all subsequent requests.
example: Yjk3ODZjNjktZTIwZC00NjAxLWE1MzktZjg2NGExM2IxYTZlfDE=
explode: true
in: query
name: pageToken
required: false
schema:
format: tobedefined
type: string
style: form
- description: Maximum number of items to return in the response.
example: 10
explode: true
in: query
name: pageSize
required: false
schema:
default: 50
minimum: 1
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ListIdpsResponse'
description: Identity providers retrieved.
"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: List Identity Providers
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- read:idp_configs
x-audit-log:
excluded: true
/v1/idp-groups:
post:
description: |
Description: Maps an identity provider group to one or more Eon roles.<br/>
When users authenticate via SAML and belong to the specified group, they're granted the assigned roles.
operationId: createIdpGroup
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIdpGroupRequest'
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIdpGroupResponse'
description: IdP group role assignment created.
"400":
description: Validation error.
"404":
description: Identity provider not found.
"409":
description: A group with the same provider-assigned group ID already exists
for the specified identity provider.
"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 IdP Group Role Assignment
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- admin:idp_groups
x-audit-log:
action: create
entityRefs:
- entityType: idp_group
in: resBody
key: group.id
/v1/idp-groups/list:
post:
description: "Description: Retrieves a list of IdP group role assignments mapped\
\ in your Eon account."
operationId: listIdpGroups
parameters:
- allowEmptyValue: true
description: |
Cursor that points to the first record of the next page of results.
Get this value from the previous response.
To preserve the results in the same order, use the same sorting and filters in the first request as all subsequent requests.
example: Yjk3ODZjNjktZTIwZC00NjAxLWE1MzktZjg2NGExM2IxYTZlfDE=
explode: true
in: query
name: pageToken
required: false
schema:
format: tobedefined
type: string
style: form
- description: Maximum number of items to return in the response.
example: 10
explode: true
in: query
name: pageSize
required: false
schema:
default: 50
minimum: 1
type: integer
style: form
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ListIdpGroupsResponse'
description: IdP group role assignments retrieved.
"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: List IdP Group Role Assignments
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- admin:idp_groups
x-audit-log:
excluded: true
/v1/idp-groups/{groupId}:
delete:
description: |
Description: Deletes an IdP group role assignment.<br/>
After deletion, users are no longer assigned roles from their membership in the specified group.
operationId: deleteIdpGroup
parameters:
- description: Eon-assigned IdP group role assignment ID.
example: ceaf2281-bf04-542d-a801-a6a4865373ad
explode: false
in: path
name: groupId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"204":
description: IdP group role assignment deleted.
"404":
description: IdP group role assignment 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: Delete IdP Group Role Assignment
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- admin:idp_groups
x-audit-log:
action: delete
entityRefs:
- entityType: idp_group
in: path
key: groupId
get:
description: "Description: Retrieves an IdP group role assignment by ID."
operationId: getIdpGroup
parameters:
- description: Eon-assigned IdP group role assignment ID.
example: daa42222-6ad2-5d37-bb26-4f2a9cba73da
explode: false
in: path
name: groupId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/GetIdpGroupResponse'
description: IdP group role assignment retrieved.
"404":
description: IdP group role assignment 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 IdP Group Role Assignment
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- admin:idp_groups
x-audit-log:
excluded: true
put:
description: |
Description: Updates the roles assigned to an IdP group.<br/>
This operation replaces all existing role assignments with the provided list.
To add a role, include all existing roles plus the new one.
To remove a role, include all roles except the one to remove.
operationId: updateIdpGroup
parameters:
- description: Eon-assigned IdP group role assignment ID.
explode: false
in: path
name: groupId
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateIdpGroupRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateIdpGroupResponse'
description: IdP group role assignment updated.
"404":
description: IdP group role assignment 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: Update IdP Group Role Assignment
tags:
- iam
x-internal: false
x-data-access:
excluded: true
x-permissions:
- admin:idp_groups
x-audit-log:
action: update
entityRefs:
- entityType: idp_group
in: path
key: groupId
/v1/projects/{projectId}/source-accounts:
post:
description: "Description: Connects a source cloud account to the given project."
operationId: connectSourceAccount
parameters:
- description: |
ID of the project you want to connect the source account to.
You can get your project ID from the [API Credentials](https://console.eon.io/global-management/api-credentials) page in your global management console.
example: cc4fe8ee-0c62-56f2-9fda-f27bc7753e55
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectSourceAccountRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectSourceAccountResponse'
description: Source account connected.
"409":
description: Source account already exists in Eon.
"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: Connect Source Account
tags:
- accounts
x-mcp: true
x-internal: false
x-data-access:
excluded: true
x-permissions:
- create:source_accounts
x-audit-log:
action: create
entityRefs:
- entityType: source_cloud_account
in: resBody
key: sourceAccount.id
/v1/projects/{projectId}/source-accounts/list:
post:
description: "Description: Retrieves a list of source accounts for the given\
\ project."
operationId: listSourceAccounts
parameters:
- description: |
ID of the project whose source accounts you want to retrieve.
You can get your project ID from the [API Credentials](https://console.eon.io/global-management/api-credentials) page in your global management console.
example: 043090df-9fe5-4f89-9859-45db589c2936
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- allowEmptyValue: true
description: |
Cursor that points to the first record of the next page of results.
Get this value from the previous response.
To preserve the results in the same order, use the same sorting and filters in the first request as all subsequent requests.
example: Yjk3ODZjNjktZTIwZC00NjAxLWE1MzktZjg2NGExM2IxYTZlfDE=
explode: true
in: query
name: pageToken
required: false
schema:
format: tobedefined
type: string
style: form
- description: Maximum number of items to return in the response.
example: 10
explode: true
in: query
name: pageSize
required: false
schema:
default: 50
minimum: 1
type: integer
style: form
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ListSourceAccountsRequest'
description: |
Filter options.
required: false
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ListSourceAccountsResponse'
description: Source accounts retrieved.
"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: List Source Accounts
tags:
- accounts
x-mcp: true
x-internal: false
x-data-access:
excluded: true
x-permissions: []
x-audit-log:
excluded: true
/v1/projects/{projectId}/source-accounts/{accountId}:
delete:
description: |
Description: Deletes a source account from the project.
This option is available only for source accounts whose status is `DISCONNECTED` or `INSUFFICIENT_PERMISSIONS`.
Source accounts with `CONNECTED` status must be disconnected before they can be deleted.
operationId: deleteSourceAccount
parameters:
- description: |
ID of the project.
You can get your project ID from the [API Credentials](https://console.eon.io/global-management/api-credentials) page in your global management console.
example: cc4fe8ee-0c62-56f2-9fda-f27bc7753e55
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: Eon-assigned ID of the source account to delete.
example: 64a698c5-540d-5d09-80f7-f4c39c7045c1
explode: false
in: path
name: accountId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
description: Source account deleted.
"404":
description: Source account wasn't found.
"409":
description: Source account is connected and can't be deleted.
"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: Delete Source Account
tags:
- accounts
x-internal: false
x-data-access:
excluded: true
x-permissions:
- delete:source_accounts
x-audit-log:
action: delete
entityRefs:
- entityType: source_cloud_account
in: path
key: accountId
get:
description: "Description: Retrieve a source account by ID."
operationId: getSourceAccount
parameters:
- description: ID of the project.
example: 512010dd-8eaa-5b68-ab64-287458195d44
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: Eon-assigned ID of the source account.
example: 0fa724c4-9251-5bcb-94ae-b5dd5bcb7a93
explode: false
in: path
name: accountId
required: true
schema:
format: uuid
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/GetSourceAccountResponse'
description: Source account retrieved.
"404":
description: Source account 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 Source Account
tags:
- accounts
x-internal: false
x-data-access:
excluded: true
x-permissions: []
x-audit-log:
excluded: true
patch:
description: |
Description: Updates source account properties.
operationId: updateSourceAccount
parameters:
- description: ID of the project.
example: 8b4655a7-5669-51d2-83b3-038e9bf6f12f
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: Eon-assigned ID of the source account to update.
example: fc495499-9796-5fc9-ade7-1ba924cbcc42
explode: false
in: path
name: accountId
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSourceAccountRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSourceAccountResponse'
description: Source account updated.
"400":
description: |
Invalid request.
Typically this indicates invalid JSON, invalid or changed source account ID, or the cloud provider did not accept verification of the updated role or service account.
"404":
description: Source account 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: Update Source Account
tags:
- accounts
x-internal: false
x-data-access:
excluded: true
x-permissions:
- update:source_accounts
x-audit-log:
action: update
entityRefs:
- entityType: source_cloud_account
in: path
key: accountId
/v1/projects/{projectId}/source-accounts/{accountId}/disconnect:
post:
description: |
Description: Disconnects a source account from the given project.
After disconnecting, resources in the source account are no longer backed up.
Resources with snapshots continue to be displayed in the inventory, and you can still explore, query, and restore them.
Resources with no remaining snapshots are removed from the inventory.
operationId: DisconnectSourceAccount
parameters:
- description: |
ID of the project.
You can get your project ID from the [API Credentials](https://console.eon.io/global-management/api-credentials) page in your global management console.
example: cc4fe8ee-0c62-56f2-9fda-f27bc7753e55
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: Eon-assigned ID of the source account to disconnect.
example: 72d29280-a0be-59df-b33c-59f9015606c3
explode: false
in: path
name: accountId
required: true
schema:
format: tobedefined
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DisconnectSourceAccountResponse'
description: Source account disconnected.
"1XX":
description: Informational
"3XX":
description: Redirect
"4XX":
conten
# --- truncated at 32 KB (749 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eon/refs/heads/main/openapi/eon-openapi-original.yml