Eon backupPolicies API
Define and manage backup policies and schedules.
Define and manage backup policies and schedules.
openapi: 3.0.0
info:
description: The Eon.io REST API
title: Eon accounts backupPolicies API
version: 1.0.0
servers:
- url: /
security:
- ApiKeyAuth: []
tags:
- description: Define and manage backup policies and schedules.
name: backupPolicies
x-displayName: Backup Policies
paths:
/v1/projects/{projectId}/backup-policies:
post:
description: 'Description: Creates a backup policy.'
operationId: createBackupPolicy
parameters:
- description: 'ID of the project you want to create a backup policy in.
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: 733888d8-2573-5f9a-b81d-21f051d24fda
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBackupPolicyRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBackupPolicyResponse'
description: Backup policy created.
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 Backup Policy
tags:
- backupPolicies
x-mcp: true
x-internal: false
x-data-access:
excluded: true
entityRefs:
- entityType: backup_policy_retention
in: reqBody
key: backupPlan
x-permissions:
- create:policies
x-audit-log:
action: create
entityRefs:
- entityType: backup_policy
in: resBody
key: backupPolicy.id
/v1/projects/{projectId}/backup-policies/list:
post:
description: 'Description: Retrieves a list of backup policies in the specified project.
'
operationId: listBackupPolicies
parameters:
- description: 'ID of the project whose backup policies 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: 6b3ea428-f6a4-5bb5-8fb2-e4d5d2d920ce
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
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListBackupPoliciesResponse'
description: Backup policies 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 Backup Policies
tags:
- backupPolicies
x-mcp: true
x-internal: false
x-data-access:
excluded: true
x-permissions:
- read:policies
x-audit-log:
excluded: true
/v1/projects/{projectId}/backup-policies/{backupPolicyId}:
delete:
description: 'Description: Deletes a backup policy.'
operationId: deleteBackupPolicy
parameters:
- description: 'ID of the project whose backup policy you want to delete.
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: 6b3ea428-f6a4-5bb5-8fb2-e4d5d2d920ce
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: ID of the backup policy to delete.
explode: false
in: path
name: backupPolicyId
required: true
schema:
format: uuid
type: string
style: simple
- description: 'ID of an APPROVED action approval request authorizing this operation. When set, the gateway
validates the request envelope still matches the captured one and atomically
marks it EXECUTED before letting the operation run. Single-use; ignored on routes
that are not action-approval-protected.
'
explode: false
in: header
name: X-Action-Approval-Request-Id
required: false
schema:
format: uuid
type: string
style: simple
responses:
'200':
description: Backup policy deleted.
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MPAInterceptedResponse'
description: 'The operation is MPA-protected. An MPA request was created in CREATED status.
The caller should confirm via the submit endpoint (POST .../submit with action CONFIRM)
or discard (action DISCARD). The operation did not run.
'
'404':
description: Backup policy wasn't found, or the action approval request id in X-Action-Approval-Request-Id was not found.
x-docs-public-description: Backup policy 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 Backup Policy
tags:
- backupPolicies
x-internal: false
x-data-access:
excluded: true
x-permissions:
- delete:policies
x-audit-log:
action: delete
entityRefs:
- entityType: backup_policy
in: path
key: backupPolicyId
x-mpa:
operation: MPA_OPERATION_DELETE_BACKUP_POLICY
target:
entityType: backup_policy
in: path
key: backupPolicyId
get:
description: 'Description: Retrieves a backup policy.'
operationId: getBackupPolicy
parameters:
- description: 'ID of the project whose backup policy 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: 6b3ea428-f6a4-5bb5-8fb2-e4d5d2d920ce
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: ID of the backup policy to retrieve.
explode: false
in: path
name: backupPolicyId
required: true
schema:
format: uuid
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetBackupPolicyResponse'
description: Backup policy retrieved.
'404':
description: Backup policy 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 Backup Policy
tags:
- backupPolicies
x-mcp: true
x-internal: false
x-data-access:
excluded: true
x-permissions:
- read:policies
x-audit-log:
excluded: true
put:
description: 'Description: Updates a backup policy.'
operationId: updateBackupPolicy
parameters:
- description: 'ID of the project whose backup policy you want to update.
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: 6b3ea428-f6a4-5bb5-8fb2-e4d5d2d920ce
explode: false
in: path
name: projectId
required: true
schema:
format: uuid
type: string
style: simple
- description: ID of the backup policy to update.
explode: false
in: path
name: backupPolicyId
required: true
schema:
format: uuid
type: string
style: simple
- description: 'ID of an APPROVED action approval request authorizing this operation. When set, the gateway
validates the request envelope still matches the captured one and atomically
marks it EXECUTED before letting the operation run. Single-use; ignored on routes
that are not action-approval-protected.
'
explode: false
in: header
name: X-Action-Approval-Request-Id
required: false
schema:
format: uuid
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBackupPolicyRequest'
description: The request body for updating a policy
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBackupPolicyResponse'
description: Backup policy updated.
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MPAInterceptedResponse'
description: 'The operation is MPA-protected. An MPA request was created in CREATED status.
The caller should confirm via the submit endpoint (POST .../submit with action CONFIRM)
or discard (action DISCARD). The operation did not run.
'
'404':
description: Backup policy wasn't found, or the action approval request id in X-Action-Approval-Request-Id was not found.
x-docs-public-description: Backup policy 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 Backup Policy
tags:
- backupPolicies
x-internal: false
x-data-access:
excluded: true
entityRefs:
- entityType: backup_policy_retention
in: reqBody
key: backupPlan
x-permissions:
- update:policies
x-audit-log:
action: update
entityRefs:
- entityType: backup_policy
in: path
key: backupPolicyId
x-mpa:
operation: MPA_OPERATION_UPDATE_BACKUP_POLICY
target:
entityType: backup_policy
in: path
key: backupPolicyId
components:
schemas:
AccountIdCondition:
example:
accountIds:
- accountIds
- accountIds
operator: IN
nullable: true
properties:
operator:
$ref: '#/components/schemas/ScalarOperators'
accountIds:
items:
type: string
type: array
required:
- accountIds
- operator
type: object
TagKeyValuesCondition:
example:
tagKeyValues:
- value: value
key: key
- value: value
key: key
operator: CONTAINS_ANY_OF
nullable: true
properties:
operator:
$ref: '#/components/schemas/ListOperators'
tagKeyValues:
items:
$ref: '#/components/schemas/TagKeyValue'
type: array
required:
- operator
- tagKeyValues
type: object
EnvironmentCondition:
example:
environments:
- PROD
- PROD
operator: IN
nullable: true
properties:
operator:
$ref: '#/components/schemas/ScalarOperators'
environments:
items:
$ref: '#/components/schemas/Environment'
type: array
required:
- environments
- operator
type: object
Provider:
description: 'Cloud provider.
`PROVIDER_UNSPECIFIED` is supported only in responses.
'
enum:
- AWS
- AZURE
- GCP
- MONGO_ATLAS
- GOOGLE_WORKSPACE
- MICROSOFT_365
- PROVIDER_UNSPECIFIED
example: AWS
type: string
x-docs-internal-enum:
- GOOGLE_WORKSPACE
- MICROSOFT_365
TimeOfYear:
example:
month: 5
dayOfMonth: 14
properties:
month:
default: 1
example: 5
maximum: 12
minimum: 1
type: integer
dayOfMonth:
default: 1
example: 14
maximum: 31
minimum: 1
type: integer
required:
- dayOfMonth
- month
type: object
StandardBackupPolicyPlan:
example:
backupSchedules:
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalHours: 8
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalHours: 8
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
nullable: true
properties:
backupSchedules:
description: 'List of backup schedules.
Each schedule specifies a backup frequency, retention period, and vault.
'
items:
$ref: '#/components/schemas/StandardBackupSchedules'
type: array
required:
- backupSchedules
type: object
ResourceNameCondition:
example:
resourceNames:
- resourceNames
- resourceNames
operator: IN
nullable: true
properties:
operator:
$ref: '#/components/schemas/ScalarOperators'
resourceNames:
items:
type: string
type: array
required:
- operator
- resourceNames
type: object
UpdateBackupPolicyResponse:
example:
backupPolicy:
name: Production with PII
backupPlan:
backupPolicyType: STANDARD
awsNativePitrPlan:
retentionDays: 7
resourceType:
resourceType: AWS_RDS
highFrequencyPlan:
resourceTypes:
- resourceType: AWS_S3
- resourceType: AWS_S3
backupSchedules:
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalMinutes: 360
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalMinutes: 360
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
standardPlan:
backupSchedules:
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalHours: 8
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
minute: 30
intervalConfig:
intervalHours: 8
weeklyConfig:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
annuallyConfig:
startWindowMinutes: 240
timeOfYear:
month: 5
dayOfMonth: 14
timeOfDay:
hour: 12
minute: 30
dailyConfig:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
frequency: WEEKLY
backupRetentionDays: 30
id: de308488-df3d-5b82-8f37-477ef529f491
resourceSelector:
expression:
resourceId:
operator: IN
resourceIds:
- resourceIds
- resourceIds
resourceGroupName:
resourceGroupNames:
- resourceGroupNames
- resourceGroupNames
operator: IN
tagKeys:
tagKeys:
- tagKeys
- tagKeys
operator: CONTAINS_ANY_OF
vpc:
vpcs:
- vpcs
- vpcs
operator: IN
resourceName:
resourceNames:
- resourceNames
- resourceNames
operator: IN
dataClasses:
dataClasses:
- PII
- PII
operator: CONTAINS_ANY_OF
globalClusterIdentifier:
operator: IN
globalClusterIdentifier:
- globalClusterIdentifier
- globalClusterIdentifier
accountId:
accountIds:
- accountIds
- accountIds
operator: IN
environment:
environments:
- PROD
- PROD
operator: IN
tagKeyValues:
tagKeyValues:
- value: value
key: key
- value: value
key: key
operator: CONTAINS_ANY_OF
cloudProvider:
cloudProviders:
- AWS
- AWS
operator: IN
sourceRegion:
regions:
- regions
- regions
operator: IN
subnets:
subnets:
- subnets
- subnets
operator: CONTAINS_ANY_OF
group:
operands:
- resourceType:
operator: IN
resourceTypes:
- AWS_EC2
- AWS_RDS
- environment:
operator: IN
environments:
- PROD
- PROD_INTERNAL
operator: AND
resourceType:
resourceTypes:
- AWS_EC2
- AWS_EC2
operator: IN
apps:
operator: CONTAINS_ANY_OF
apps:
- apps
- apps
resourceSelectionMode: CONDITIONAL
resourceExclusionOverride:
- i-0b0f5b5ef75b1c009
- 43d9cc0b-b633-5431-93d0-38aa70a13745
resourceInclusionOverride:
- cluster-3RYR75ARQOPQJ6MCRKTQFDR2GE
- db-FE4MOD3UCIYIQKXF3UVTCB55FA
enabled: true
properties:
backupPolicy:
$ref: '#/components/schemas/BackupPolicy'
required:
- backupPolicy
type: object
TagKeysCondition:
example:
tagKeys:
- tagKeys
- tagKeys
operator: CONTAINS_ANY_OF
nullable: true
properties:
operator:
$ref: '#/components/schemas/ListOperators'
tagKeys:
items:
type: string
type: array
required:
- operator
- tagKeys
type: object
ListOperators:
description: 'Evaluates whether the original list constains any, all, or none of the values in this list.
`UNSPECIFIED` is supported only in responses.
'
enum:
- CONTAINS_ANY_OF
- CONTAINS_NONE_OF
- CONTAINS_ALL_OF
- UNSPECIFIED
example: CONTAINS_ANY_OF
type: string
x-enum-varnames:
- CONTAINS_ANY_OF_OPERATOR
- CONTAINS_NONE_OF_OPERATOR
- CONTAINS_ALL_OF_OPERATOR
- LIST_OPERATOR_UNSPECIFIED
HighFrequencyBackupResourceType:
example:
resourceType: AWS_S3
properties:
resourceType:
allOf:
- $ref: '#/components/schemas/ResourceType'
- enum:
- AWS_S3
- AWS_DYNAMO_DB
- GCP_CLOUD_STORAGE_BUCKET
- AWS_EC2
- AWS_RDS
- RESOURCE_TYPE_UNSPECIFIED
type: string
example: AWS_S3
type: object
WeeklyConfig:
example:
startWindowMinutes: 240
daysOfWeek:
- MON
- THU
timeOfDay:
hour: 12
minute: 30
nullable: true
properties:
daysOfWeek:
default:
- SUN
description: 'Days of the week to schedule backups.
'
example:
- MON
- THU
items:
$ref: '#/components/schemas/DayOfWeek'
minItems: 1
type: array
uniqueItems: true
timeOfDay:
$ref: '#/components/schemas/TimeOfDay'
startWindowMinutes:
default: 240
description: 'The window of time after the start time you want the backup to start, in minutes.
Defaults to `240` (4 hours).
'
example: 240
format: long
maximum: 1320
minimum: 240
type: integer
required:
- daysOfWeek
- timeOfDay
type: object
DailyConfig:
example:
startWindowMinutes: 240
timeOfDay:
hour: 12
minute: 30
nullable: true
properties:
timeOfDay:
$ref: '#/components/schemas/TimeOfDay'
startWindowMinutes:
default: 240
description: 'The window of time after the start time you want the backup to start, in minutes.
Defaults to `240` (4 hours).
'
example: 240
format: long
maximum: 1320
minimum: 240
type: integer
type: object
BackupPolicyGroupCondition:
description: 'Group of expressions to evaluate using the logical operator specified in `operator`.
Each item in the `operands` list can be either a single expression or a nested `group` expression.
'
example:
operands:
- resourceType:
operator: IN
resourceTypes:
- AWS_EC2
- AWS_RDS
- environment:
operator: IN
environments:
- PROD
- PROD_INTERNAL
operator: AND
nullable: true
properties:
operator:
$ref: '#/components/schemas/LogicalOperator'
operands:
description: 'List of expressions to evaluate using the logical operator specified in `operator`.
Each item in the list can be either a single expression or a nested `group` expression.
Must contain at least 2 items.
'
example:
- resourceType:
operator: IN
resourceTypes:
- AWS_EC2
- AWS_RDS
- environment:
operator: IN
environments:
- PROD
- PROD_INTERNAL
items:
$ref: '#/components/schemas/BackupPolicyExpression'
minItems: 2
type: array
required:
- operands
- operator
type: object
StandardBackupScheduleFrequency:
description: 'Backup frequency.
`UNSPECIFIED` is supported only in responses.
'
enum:
- INTERVAL
- DAILY
- WEEKLY
- MONTHLY
- ANNUALLY
- UNSPECIFIED
example: WEEKLY
type: string
x-enum-varnames:
- STANDARD_BACKUP_SCHEDULE_INTERVAL
- STANDARD_BACKUP_SCHEDULE_DAILY
- STANDARD_BACKUP_SCHEDULE_WEEKLY
- STANDARD_BACKUP_SCHEDULE_MONTHLY
- STANDARD_BACKUP_SCHEDULE_ANNUALLY
- STANDARD_BACKUP_SCHEDULE_UNSPECIFIED
AwsNativePitrBackupPolicyPlan:
example:
retentionDays: 7
resourceType:
resourceType: AWS_RDS
nullable: true
properties:
retentionDays:
description: 'Number of days to retain continuous backups with AWS Backup.
AWS allows 1 to 35 days for RDS and Aurora continuous backups.
'
example: 7
maximum: 35
minimum: 1
type: integer
resourceType:
$ref: '#/components/schemas/AwsNativePitrBackupResourceType'
required:
- resourceType
- retentionDays
type: object
HighFrequencyBackupPolicyPlan:
example:
resourceTypes:
- resourceType: AWS_S3
- resourceType: AWS_S3
backupSchedules:
- vaultId: 0b8d140a-f4fe-58bf-afd7-a57f073d72c5
scheduleConfig:
monthlyConfig:
startWindowMinutes: 240
daysOfMonth:
- 5
- 10
- 15
timeOfDay:
hour: 12
# --- truncated at 32 KB (132 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eon/refs/heads/main/openapi/eon-backuppolicies-api-openapi.yml