Перейти к содержимому
EGN Cloud

Справочник API

Сформировано из спецификаций OpenAPI в репозитории платформы при сборке сайта. Все пути начинаются с /api/v1. Общие правила — в разделе «Работа с API».

EGN Cloud Billing API

1.0.0 · billing.v1.yaml · 46 операций

catalog

GET/api/v1/billing/catalogCurrent published price list
ПараметрГдеТипОписание
planquerystring
Ответы:
200CatalogOK
POST/api/v1/billing/estimatePrice a prospective configuration (hourly/daily/monthly, one-time)
Тело запроса: { plan, items }
Ответы:
200EstimateOK

account

GET/api/v1/orgs/{org}/billing/overviewBalance, credit, holds, month-to-date spend, run-rate and forecast

Requires `billing.accounts.read`.

ПараметрГдеТипОписание
org*pathstring
Ответы:
200OverviewOK
401Problem
403Problem
GET/api/v1/orgs/{org}/billing/account
ПараметрГдеТипОписание
org*pathstring
Ответы:
200BillingAccountOK
PUT/api/v1/orgs/{org}/billing/account/legalUpdate organization legal requisites (INN checksum validated)

Requires `billing.settings.update`.

ПараметрГдеТипОписание
org*pathstring
Тело запроса: LegalDetails
Ответы:
200BillingAccountOK
400Problem
GET/api/v1/orgs/{org}/billing/holdsAdmission holds (funds reserved while resources are being provisioned)
ПараметрГдеТипОписание
org*pathstring
Ответы:
200OK

usage

GET/api/v1/orgs/{org}/billing/costsSpend for a business month grouped by service|project|resource|component
ПараметрГдеТипОписание
org*pathstring
periodquerystring
group_byquerystring
project_idquerystring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/billing/costs/dailyHistorical (actual) spend per business day — not a forecast
ПараметрГдеТипОписание
org*pathstring
periodquerystring
project_idquerystring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/billing/chargesRated charges (exact amounts) — explains how each charge was calculated
ПараметрГдеТипОписание
org*pathstring
periodquerystring
project_idquerystring
resource_idquerystring
limitqueryinteger
Ответы:
200{ items }OK

ledger

GET/api/v1/orgs/{org}/billing/transactionsLedger movements of the organization's account (newest first, cursor pagination)
ПараметрГдеТипОписание
org*pathstring
limitqueryinteger
cursorquerystring
Ответы:
200{ items, next_cursor }OK
GET/api/v1/orgs/{org}/billing/transactions/{id}One movement; usage settlements include the settled charges and rounding rule
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200TransactionOK
404Problem

payments

GET/api/v1/orgs/{org}/billing/payments
ПараметрГдеТипОписание
org*pathstring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/billing/payments/{id}
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200PaymentOK
POST/api/v1/orgs/{org}/billing/payments/cardTop up by card (T-Kassa). Returns payment_url to redirect the user.

Requires `billing.payments.create`. Funds are credited only after a verified CONFIRMED status.

ПараметрГдеТипОписание
org*pathstring
Idempotency-Key*headerstring
Тело запроса: { amount, customer_email }
Ответы:
201PaymentCreated
409Problem
503Problem
POST/api/v1/orgs/{org}/billing/payments/bank-invoiceIssue a счёт на оплату for a bank transfer (requires organization INN)
ПараметрГдеТипОписание
org*pathstring
Idempotency-Key*headerstring
Тело запроса: { amount }
Ответы:
201PaymentCreated
412Problem
POST/api/v1/orgs/{org}/billing/payments/{id}/simulateDEVELOPMENT ONLY — drive the T-Kassa simulator (404 when disabled)
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Тело запроса: { status }
Ответы:
200OK

documents

GET/api/v1/orgs/{org}/billing/documentsIssued documents (invoices, acts, usage details, reconciliation statements)

Requires `billing.invoices.read`. `status=draft_unresolved_tax` documents carry an ОБРАЗЕЦ banner.

ПараметрГдеТипОписание
org*pathstring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/billing/documents/{id}
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200DocumentOK
GET/api/v1/orgs/{org}/billing/documents/{id}/pdf
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200stringPDF
POST/api/v1/orgs/{org}/billing/documents/reconciliationGenerate an акт сверки for a date range (inclusive, business timezone)
ПараметрГдеТипОписание
org*pathstring
Тело запроса: { from, to }
Ответы:
201DocumentCreated

budgets

GET/api/v1/orgs/{org}/billing/budgets
ПараметрГдеТипОписание
org*pathstring
Ответы:
200{ items }OK
POST/api/v1/orgs/{org}/billing/budgets

Requires `billing.budgets.update`. `hard_limit` blocks admission of new chargeable resources at 100% actual spend.

ПараметрГдеТипОписание
org*pathstring
Тело запроса: Budget
Ответы:
201Created
DELETE/api/v1/orgs/{org}/billing/budgets/{id}
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
204Deleted
GET/api/v1/orgs/{org}/billing/alertsBudget alerts (each threshold fires once per period; kinds actual|forecast)
ПараметрГдеТипОписание
org*pathstring
Ответы:
200OK

webhooks

POST/api/v1/billing/webhooks/tkassaT-Kassa notification endpoint

Token verified (SHA-256, constant time), TerminalKey and amount checked, status re-confirmed with GetState (configurable), then applied idempotently. Answers `OK` (200) when processed or for unknown orders, `403` for invalid signatures, `503` for transient failures (provider retries).

Тело запроса: object
Ответы:
200stringOK
403Invalid signature
503Retry later

internal

POST/internal/v1/billing/admissionFunds admission (implements contracts.BillingAdmission over HTTP)

Service principals only. Atomically checks balance + credit − holds and places a hold.

Тело запроса: AdmissionRequest
Ответы:
200{ decision, estimate }OK
POST/internal/v1/billing/admission/{hold}/commit
ПараметрГдеТипОписание
hold*pathstring
Тело запроса: { resource_id }
Ответы:
200OK
409Problem
POST/internal/v1/billing/admission/{hold}/release
ПараметрГдеТипОписание
hold*pathstring
Тело запроса: { reason }
Ответы:
200OK
POST/internal/v1/billing/inventory-eventsIngest resource inventory facts (idempotent on event_id; ≤500 per batch)
Тело запроса: { events }
Ответы:
200Per-event result applied|duplicate|rejected
POST/internal/v1/billing/usage-recordsIngest metered consumption records (idempotent on record_id)
Ответы:
200OK
GET/internal/v1/billing/pricescontracts.PriceBook wire format — rate_micro is millionths of a RUB; rate_micro_kopeck is billing's native precision
ПараметрГдеТипОписание
codesquerystring
Ответы:
200OK

operator

GET/api/v1/operator/billing/accountsAll billing accounts with balances
Ответы:
200OK
PUT/api/v1/operator/billing/accounts/{org}/credit-limitApprove/change a credit limit (audited; approver = caller)
ПараметрГдеТипОписание
org*pathstring
Тело запроса: { limit, reason }
Ответы:
200OK
POST/api/v1/operator/billing/adjustmentsLedger adjustment with four-eyes rule (requested_by ≠ calling operator)
Ответы:
201Created
412Problem
POST/api/v1/operator/billing/entries/{id}/reversePost a reversal (storno) of a ledger entry; one reversal per entry
ПараметрГдеТипОписание
id*pathstring
Тело запроса: { requested_by, reason }
Ответы:
201Created
409Problem
POST/api/v1/operator/billing/payments/{id}/bank-receiptConfirm a bank transfer from a bank statement line (idempotent on statement_ref)
ПараметрГдеТипОписание
id*pathstring
Ответы:
200OK
POST/api/v1/operator/billing/reconcilePoll provider for stuck payments; verify credits; trial balance
Ответы:
200OK
GET/api/v1/operator/billing/trial-balance
Ответы:
200OK
GET/api/v1/operator/billing/tariffsTariff versions of a plan (published + drafts)
Ответы:
200OK
POST/api/v1/operator/billing/tariffsSave a draft tariff version
Ответы:
201Created
POST/api/v1/operator/billing/tariffs/{id}/publishPublish a draft (effective_from must be in the future and after the latest version; published versions are immutable)
ПараметрГдеТипОписание
id*pathstring
Ответы:
200OK
409Problem
412Problem
GET/api/v1/operator/billing/anomaliesUnrated usage (missing prices
Ответы:
200OK
POST/api/v1/operator/billing/jobs/run-cycleRun rating → settlement → policy → budgets now
Ответы:
200OK
POST/api/v1/operator/billing/documents/monthlyIssue act + usage detail for a closed month (refused while unsettled charges exist)
Тело запроса: { org_id, period }
Ответы:
200OK
POST/api/v1/operator/billing/commitmentsAdd a monthly committed service
Ответы:
201Created
GET/api/v1/operator/billing/outboxPending outbox events
Ответы:
200OK

Схемы

Problem
typestring
titlestring
statusinteger
codestring (invalid_argument | unauthenticated | permission_denied | not_found | conflict | failed_precondition | insufficient_funds | integration_unavailable | rate_limited | idempotency_key_reused | internal)
detailstring
request_idstring
Catalog
tariff_version_idstring
planstring
currencystring
effective_fromstring
notestring
components{ code, service, name, unit, model, rate_micro, rate, charge_states, charged_when_stopped }[]
AdmissionItem
component*string
quantity_milli*integermilli-units (2 vCPU = 2000, 1.5 GiB = 1500)
Estimate
hourly_minorinteger
daily_minorinteger
monthly_minorinteger730 hours
one_time_minorinteger
hourly_microinteger
tariff_version_idstring
currencystring
unpricedstring[]
lines{ component, name, unit, model, quantity_milli, rate_micro, hourly_micro, monthly_minor, one_time_minor, recurring, charged_when_stopped }[]
Overview
org_idstring
currencystring
balanceintegerkopecks; negative = debt
credit_limitinteger
heldinteger
availableinteger
standingstring (active | warning | restricted | suspended)
standing_sincestring
periodstring
month_to_dateinteger
run_rate_per_hourinteger
forecast_monthinteger
runway_hoursinteger
rated_untilstring
tax_regimestring
estimated_fieldsstring[]
LegalDetails
legal_name*string
inn*string
kppstring
ogrnstring
addressstring
bank_namestring
bikstring
accountstring
corr_accountstring
emailstring
BillingAccount
org_idstring
currencystring
credit_limitinteger
standingstring
standing_sincestring
legalLegalDetails
CostRow
keystring
labelstring
amountinteger
settledinteger
pendingintegerrated but not yet posted to the ledger
Charge
idstring
project_idstring
resource_idstring
resource_namestring
componentstring
component_namestring
modelstring
tariff_version_idstring
periodstring
startstring
endstring
statestring
quantity_milliinteger
secondsinteger
ratestring
amount_exactstring
settledboolean
Transaction
idstring
seqinteger
kindstring (payment | usage | refund | reversal | adjustment | promo)
descriptionstring
amountintegereffect on the customer balance (+ credit, − debit)
currencystring
created_atstring
effective_atstring
reverses_entry_idstring
metadataobject
chargesobject[]
roundingstring
Payment
idstring
providerstring (tkassa | bank_transfer | simulator)
provider_payment_idstring
amountinteger
refunded_amountinteger
currencystring
statusstring (new | pending | authorized | confirmed | rejected | canceled | refunded | partial_refunded | failed)
payment_urlstring
invoice_document_idstring
credit_entry_idstring
created_atstring
updated_atstring
history{ from, to, source, at, note }[]
Document
idstring
org_idstring
typestring (invoice | act | usage_detail | reconciliation)
numberstring
periodstring
datestring
totalinteger
currencystring
statusstring (issued | draft_unresolved_tax | void)
payment_idstring
created_atstring
Budget
idstring
project_idstring
name*string
amount*integerkopecks per business month
thresholdsinteger[]
hard_limitboolean
AdmissionRequest
org_id*string
project_id*string
idempotency_key*string
referencestring
planstring
items*AdmissionItem[]
Decision
allowedboolean
reasonstring (ok | insufficient_funds | account_restricted | account_suspended | budget_hard_limit | billing_account_missing)
hold_idstring
required_minorinteger
available_minorinteger
balance_minorinteger
credit_limit_minorinteger
held_minorinteger
InventoryEvent
event_id*string
kind*string (created | state_changed | resized | deleted)
org_id*string
project_id*string
resource_id*string
resource_typestring
resource_namestring
regionstring
planstring
statestring (running | stopped | shelved | allocated | reserved | provisioning | error | deleted)
quantitiesobject
occurred_at*string

EGN Cloud Platform API

1.0.0-alpha · egn-cloud.v1.yaml · 94 операций

Session

GET/meCurrent principal and memberships
operationId: getMe
Ответы:
200MeOK
401Error
POST/dev/loginDEV ONLY — issue a development session (disabled unless EGN_DEV_AUTH=true and EGN_ENV!=production)
operationId: devLogin
Тело запроса: { email, name }
Ответы:
200DevSessionSession issued (also set as HttpOnly cookie)
404Error
POST/dev/logout
operationId: devLogout
Ответы:
204Cookie cleared

Organizations

GET/organizationsOrganizations the caller is a member of
operationId: listOrganizations
ПараметрГдеТипОписание
limitqueryinteger
cursorquerystring
Ответы:
200OrganizationPageOK
POST/organizations
operationId: createOrganization
ПараметрГдеТипОписание
Idempotency-Keyheaderstring
Тело запроса: OrganizationCreate
Ответы:
201OrganizationCreated (caller becomes owner; a "default" project is created)
4XXError
GET/organizations/{org_id}
operationId: getOrganization
ПараметрГдеТипОписание
org_id*pathstring
Ответы:
200OrganizationOK
4XXError
PATCH/organizations/{org_id}

Permission: `organizations.settings.update`

operationId: updateOrganization
ПараметрГдеТипОписание
org_id*pathstring
Тело запроса: OrganizationUpdate
Ответы:
200OrganizationOK
4XXError
GET/organizations/{org_id}/members
operationId: listMembers
ПараметрГдеТипОписание
org_id*pathstring
limitqueryinteger
cursorquerystring
Ответы:
200MemberPageOK
4XXError
DELETE/organizations/{org_id}/members/{user_id}

Permission: `organizations.members.delete`. The last owner cannot be removed.

operationId: removeMember
ПараметрГдеТипОписание
org_id*pathstring
user_id*pathstring
Ответы:
204Removed
4XXError
GET/organizations/{org_id}/invitations
operationId: listInvitations
ПараметрГдеТипОписание
org_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/organizations/{org_id}/invitations

Permission: `organizations.members.invite`. Returns the one-time token only in this response (dev: no email is sent).

operationId: createInvitation
ПараметрГдеТипОписание
org_id*pathstring
Idempotency-Keyheaderstring
Тело запроса: InvitationCreate
Ответы:
201InvitationCreatedCreated
4XXError
DELETE/organizations/{org_id}/invitations/{invitation_id}
operationId: revokeInvitation
ПараметрГдеТипОписание
org_id*pathstring
invitation_id*pathstring
Ответы:
204Revoked
4XXError
POST/invitations/accept
operationId: acceptInvitation
Тело запроса: { token }
Ответы:
200MemberJoined
4XXError

Projects

GET/organizations/{org_id}/projectsProjects in the organization visible to the caller
operationId: listProjects
ПараметрГдеТипОписание
org_id*pathstring
limitqueryinteger
cursorquerystring
Ответы:
200ProjectPageOK
4XXError
POST/organizations/{org_id}/projects

Permission: `resourcemanager.projects.create`

operationId: createProject
ПараметрГдеТипОписание
org_id*pathstring
Idempotency-Keyheaderstring
Тело запроса: ProjectCreate
Ответы:
201ProjectCreated
4XXError
GET/projects/{project_id}
operationId: getProject
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200ProjectOK
4XXError
PATCH/projects/{project_id}
operationId: updateProject
ПараметрГдеТипОписание
project_id*pathstring
Тело запроса: ProjectUpdate
Ответы:
200ProjectOK
4XXError
DELETE/projects/{project_id}

Fails with `failed_precondition` while the project still owns resources.

operationId: deleteProject
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
204Deleted
4XXError

IAM

GET/iam/permissionsCatalog of all permission strings
operationId: listPermissions
Ответы:
200{ items }OK
GET/organizations/{org_id}/rolesBuilt-in and custom roles
operationId: listRoles
ПараметрГдеТипОписание
org_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/organizations/{org_id}/roles

Permission: `iam.roles.create`. Cannot grant permissions the caller does not hold.

operationId: createRole
ПараметрГдеТипОписание
org_id*pathstring
Тело запроса: RoleCreate
Ответы:
201RoleCreated
4XXError
PATCH/organizations/{org_id}/roles/{role_id}
operationId: updateRole
ПараметрГдеТипОписание
org_id*pathstring
role_id*pathstring
Тело запроса: RoleUpdate
Ответы:
200RoleOK
4XXError
DELETE/organizations/{org_id}/roles/{role_id}
operationId: deleteRole
ПараметрГдеТипОписание
org_id*pathstring
role_id*pathstring
Ответы:
204Deleted
4XXError
GET/organizations/{org_id}/role-bindings
operationId: listRoleBindings
ПараметрГдеТипОписание
org_id*pathstring
principal_idquerystring
project_idquerystring
Ответы:
200{ items }OK
4XXError
POST/organizations/{org_id}/role-bindings

Permission: `iam.policies.update`

operationId: createRoleBinding
ПараметрГдеТипОписание
org_id*pathstring
Тело запроса: RoleBindingCreate
Ответы:
201RoleBindingCreated
4XXError
DELETE/organizations/{org_id}/role-bindings/{binding_id}

Removing the last owner binding is rejected.

operationId: deleteRoleBinding
ПараметрГдеТипОписание
org_id*pathstring
binding_id*pathstring
Ответы:
204Deleted
4XXError
GET/organizations/{org_id}/policies
operationId: listPolicies
ПараметрГдеТипОписание
org_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/organizations/{org_id}/policies

Custom allow/deny policy attached to principals. Explicit deny always wins.

operationId: createPolicy
ПараметрГдеТипОписание
org_id*pathstring
Тело запроса: PolicyCreate
Ответы:
201PolicyCreated
4XXError
DELETE/organizations/{org_id}/policies/{policy_id}
operationId: deletePolicy
ПараметрГдеТипОписание
org_id*pathstring
policy_id*pathstring
Ответы:
204Deleted
4XXError
POST/organizations/{org_id}/iam/checkEvaluate which of the given permissions the caller holds (used by UI to enable actions — the backend re-checks on every mutation)
operationId: checkPermissions
ПараметрГдеТипОписание
org_id*pathstring
Тело запроса: { project_id, permissions }
Ответы:
200{ results }OK
4XXError

Regions

GET/regions
operationId: listRegions
Ответы:
200{ items }OK
GET/regions/{region_id}
operationId: getRegion
ПараметрГдеТипОписание
region_id*pathstring
Ответы:
200RegionOK
4XXError
GET/regions/{region_id}/flavors
operationId: listFlavors
ПараметрГдеТипОписание
region_id*pathstring
cpu_classqueryCPUClass
Ответы:
200{ items }OK
4XXError
GET/regions/{region_id}/images
operationId: listImages
ПараметрГдеТипОписание
region_id*pathstring
Ответы:
200{ items }OK
4XXError
GET/regions/{region_id}/storage-classes
operationId: listStorageClasses
ПараметрГдеТипОписание
region_id*pathstring
Ответы:
200{ items }OK
4XXError

Compute

GET/projects/{project_id}/instances

Permission: `compute.instances.list`

operationId: listInstances
ПараметрГдеТипОписание
project_id*pathstring
limitqueryinteger
cursorquerystring
regionquerystring
statusqueryInstanceStatus
qquerystringSubstring match on name
sortquerystring
Ответы:
200InstancePageOK
4XXError
POST/projects/{project_id}/instances

Permission: `compute.instances.create` (+ `network.floatingips.create` when `assign_public_ip`). Validates region/zone/flavor/image capabilities, admits quota and billing credit, reserves capacity and enqueues provisioning. Returns 202 with the operation; the instance is in `creating` until the operation succeeds.

operationId: createInstance
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Key*headerstring
Тело запроса: InstanceCreate
Ответы:
202InstanceAcceptedAccepted
4XXError
POST/projects/{project_id}/instances/estimatePrice and quota impact of an instance configuration (no side effects)
operationId: estimateInstance
ПараметрГдеТипОписание
project_id*pathstring
Тело запроса: InstanceCreate
Ответы:
200InstanceEstimateOK
4XXError
GET/projects/{project_id}/instances/{instance_id}
operationId: getInstance
ПараметрГдеТипОписание
project_id*pathstring
instance_id*pathstring
Ответы:
200InstanceOK
4XXError
PATCH/projects/{project_id}/instances/{instance_id}

Metadata only (name, description, tags). Use actions for lifecycle.

operationId: updateInstance
ПараметрГдеТипОписание
project_id*pathstring
instance_id*pathstring
Тело запроса: InstanceUpdate
Ответы:
200InstanceOK
4XXError
DELETE/projects/{project_id}/instances/{instance_id}

Permission: `compute.instances.delete`. Requires `confirm_name` query parameter equal to the instance name.

operationId: deleteInstance
ПараметрГдеТипОписание
project_id*pathstring
instance_id*pathstring
confirm_name*querystring
Idempotency-Keyheaderstring
Ответы:
202OperationAccepted
4XXError
POST/projects/{project_id}/instances/{instance_id}/actions/{action}

Lifecycle action. Permissions: start/stop/reboot/force-reboot → `compute.instances.operate`; resize → `compute.instances.update`; rebuild → `compute.instances.rebuild`; snapshot → `compute.snapshots.create`. Invalid state transitions return `failed_precondition`. Stopped instances keep incurring charges for reserved CPU/RAM, disks and IPs per tariff.

operationId: instanceAction
ПараметрГдеТипОписание
project_id*pathstring
instance_id*pathstring
action*pathInstanceAction
Idempotency-Keyheaderstring
Тело запроса: InstanceActionRequest
Ответы:
202OperationAccepted
4XXError
GET/projects/{project_id}/instances/{instance_id}/metrics
operationId: getInstanceMetrics
ПараметрГдеТипОписание
project_id*pathstring
instance_id*pathstring
metric*querystring
windowquerystring
Ответы:
200MetricSeriesOK
4XXError

Operations

GET/projects/{project_id}/operations
operationId: listOperations
ПараметрГдеТипОписание
project_id*pathstring
limitqueryinteger
cursorquerystring
statusqueryOperationStatus
target_idquerystring
Ответы:
200OperationPageOK
4XXError
GET/operations/{operation_id}
operationId: getOperation
ПараметрГдеТипОписание
operation_id*pathstring
Ответы:
200OperationOK
4XXError

Networking

GET/projects/{project_id}/vpcs
operationId: listVPCs
ПараметрГдеТипОписание
project_id*pathstring
regionquerystring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/vpcs
operationId: createVPC
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Key*headerstring
Тело запроса: VPCCreate
Ответы:
202VPCAcceptedAccepted
4XXError
GET/projects/{project_id}/vpcs/{vpc_id}
operationId: getVPC
ПараметрГдеТипОписание
project_id*pathstring
vpc_id*pathstring
Ответы:
200VPCOK
4XXError
DELETE/projects/{project_id}/vpcs/{vpc_id}

Fails while subnets with attached instances exist.

operationId: deleteVPC
ПараметрГдеТипОписание
project_id*pathstring
vpc_id*pathstring
Ответы:
202OperationAccepted
4XXError
GET/projects/{project_id}/vpcs/{vpc_id}/subnets
operationId: listSubnets
ПараметрГдеТипОписание
project_id*pathstring
vpc_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/vpcs/{vpc_id}/subnets

CIDR must be RFC 1918, /16–/29, inside the VPC CIDR and not overlap other subnets of the VPC.

operationId: createSubnet
ПараметрГдеТипОписание
project_id*pathstring
vpc_id*pathstring
Idempotency-Keyheaderstring
Тело запроса: SubnetCreate
Ответы:
201SubnetCreated
4XXError
DELETE/projects/{project_id}/subnets/{subnet_id}
operationId: deleteSubnet
ПараметрГдеТипОписание
project_id*pathstring
subnet_id*pathstring
Ответы:
204Deleted
4XXError
GET/projects/{project_id}/routers
operationId: listRouters
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200{ items }OK
4XXError
GET/projects/{project_id}/security-groups
operationId: listSecurityGroups
ПараметрГдеТипОписание
project_id*pathstring
regionquerystring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/security-groups
operationId: createSecurityGroup
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Keyheaderstring
Тело запроса: SecurityGroupCreate
Ответы:
201SecurityGroupCreated
4XXError
GET/projects/{project_id}/security-groups/{sg_id}
operationId: getSecurityGroup
ПараметрГдеТипОписание
project_id*pathstring
sg_id*pathstring
Ответы:
200SecurityGroupOK
4XXError
DELETE/projects/{project_id}/security-groups/{sg_id}
operationId: deleteSecurityGroup
ПараметрГдеТипОписание
project_id*pathstring
sg_id*pathstring
Ответы:
204Deleted
4XXError
POST/projects/{project_id}/security-groups/{sg_id}/rules
operationId: addSecurityGroupRule
ПараметрГдеТипОписание
project_id*pathstring
sg_id*pathstring
Тело запроса: SecurityGroupRuleCreate
Ответы:
201SecurityGroupRuleCreated
4XXError
DELETE/projects/{project_id}/security-groups/{sg_id}/rules/{rule_id}
operationId: deleteSecurityGroupRule
ПараметрГдеТипОписание
project_id*pathstring
sg_id*pathstring
rule_id*pathstring
Ответы:
204Deleted
4XXError
GET/projects/{project_id}/floating-ips
operationId: listFloatingIPs
ПараметрГдеТипОписание
project_id*pathstring
regionquerystring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/floating-ips
operationId: allocateFloatingIP
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Key*headerstring
Тело запроса: { region, description }
Ответы:
201FloatingIPAllocated
4XXError
DELETE/projects/{project_id}/floating-ips/{fip_id}
operationId: releaseFloatingIP
ПараметрГдеТипОписание
project_id*pathstring
fip_id*pathstring
Ответы:
204Released
4XXError
POST/projects/{project_id}/floating-ips/{fip_id}/associate
operationId: associateFloatingIP
ПараметрГдеТипОписание
project_id*pathstring
fip_id*pathstring
Тело запроса: { instance_id }
Ответы:
200FloatingIPOK
4XXError
POST/projects/{project_id}/floating-ips/{fip_id}/disassociate
operationId: disassociateFloatingIP
ПараметрГдеТипОписание
project_id*pathstring
fip_id*pathstring
Ответы:
200FloatingIPOK
4XXError
GET/projects/{project_id}/load-balancers

Returns an empty list plus `availability` per region. Creation returns `unsupported_in_region` where Octavia is not deployed.

operationId: listLoadBalancers
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200UnavailableCollectionOK
GET/projects/{project_id}/vpn-connections
operationId: listVPNConnections
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200UnavailableCollectionOK

Block Storage

GET/projects/{project_id}/volumes
operationId: listVolumes
ПараметрГдеТипОписание
project_id*pathstring
regionquerystring
limitqueryinteger
cursorquerystring
Ответы:
200VolumePageOK
4XXError
POST/projects/{project_id}/volumes

Network volumes only (Ceph RBD via Cinder). Local NVMe disks are created with instances and cannot be created standalone.

operationId: createVolume
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Key*headerstring
Тело запроса: VolumeCreate
Ответы:
202VolumeAcceptedAccepted
4XXError
GET/projects/{project_id}/volumes/{volume_id}
operationId: getVolume
ПараметрГдеТипОписание
project_id*pathstring
volume_id*pathstring
Ответы:
200VolumeOK
4XXError
DELETE/projects/{project_id}/volumes/{volume_id}
operationId: deleteVolume
ПараметрГдеТипОписание
project_id*pathstring
volume_id*pathstring
Ответы:
202OperationAccepted
4XXError
POST/projects/{project_id}/volumes/{volume_id}/attach
operationId: attachVolume
ПараметрГдеТипОписание
project_id*pathstring
volume_id*pathstring
Тело запроса: { instance_id }
Ответы:
202OperationAccepted
4XXError
POST/projects/{project_id}/volumes/{volume_id}/detach
operationId: detachVolume
ПараметрГдеТипОписание
project_id*pathstring
volume_id*pathstring
Ответы:
202OperationAccepted
4XXError
GET/projects/{project_id}/snapshots
operationId: listSnapshots
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/snapshots
operationId: createSnapshot
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Key*headerstring
Тело запроса: { volume_id, name }
Ответы:
202OperationAccepted
4XXError
DELETE/projects/{project_id}/snapshots/{snapshot_id}
operationId: deleteSnapshot
ПараметрГдеТипОписание
project_id*pathstring
snapshot_id*pathstring
Ответы:
204Deleted
4XXError

Object Storage

GET/projects/{project_id}/buckets
operationId: listBuckets
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/buckets
operationId: createBucket
ПараметрГдеТипОписание
project_id*pathstring
Idempotency-Keyheaderstring
Тело запроса: BucketCreate
Ответы:
201BucketCreated
4XXError
GET/projects/{project_id}/buckets/{bucket}
operationId: getBucket
ПараметрГдеТипОписание
project_id*pathstring
bucket*pathstring
Ответы:
200BucketOK
4XXError
PATCH/projects/{project_id}/buckets/{bucket}
operationId: updateBucket
ПараметрГдеТипОписание
project_id*pathstring
bucket*pathstring
Тело запроса: { versioning, public_read }
Ответы:
200BucketOK
4XXError
DELETE/projects/{project_id}/buckets/{bucket}

Bucket must be empty.

operationId: deleteBucket
ПараметрГдеТипОписание
project_id*pathstring
bucket*pathstring
Ответы:
204Deleted
4XXError
GET/projects/{project_id}/buckets/{bucket}/objects
operationId: listObjects
ПараметрГдеТипОписание
project_id*pathstring
bucket*pathstring
prefixquerystring
delimiterquerystring
Ответы:
200ObjectListingOK
4XXError
POST/projects/{project_id}/buckets/{bucket}/presignPresigned URL for direct browser upload/download (max 7 days)
operationId: presignObject
ПараметрГдеТипОписание
project_id*pathstring
bucket*pathstring
Тело запроса: { key, method, expires_seconds }
Ответы:
200{ url, expires_at }OK
4XXError
GET/projects/{project_id}/s3-keys
operationId: listS3Keys
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200{ items }OK
4XXError
POST/projects/{project_id}/s3-keys

The secret key is returned once and never stored in plaintext.

operationId: createS3Key
ПараметрГдеТипОписание
project_id*pathstring
Тело запроса: S3KeyCreate
Ответы:
201S3KeyCreatedCreated
4XXError
DELETE/projects/{project_id}/s3-keys/{key_id}
operationId: revokeS3Key
ПараметрГдеТипОписание
project_id*pathstring
key_id*pathstring
Ответы:
204Revoked
4XXError

Quotas

GET/projects/{project_id}/quotas
operationId: getProjectQuotas
ПараметрГдеТипОписание
project_id*pathstring
regionquerystring
Ответы:
200{ items }OK
4XXError

Audit

GET/organizations/{org_id}/audit-events

Permission: `audit.events.read`

operationId: listAuditEvents
ПараметрГдеТипОписание
org_id*pathstring
limitqueryinteger
cursorquerystring
project_idquerystring
actor_idquerystring
actionquerystringPrefix match
resource_idquerystring
Ответы:
200AuditEventPageOK
4XXError

Overview

GET/projects/{project_id}/overview
operationId: getProjectOverview
ПараметрГдеТипОписание
project_id*pathstring
Ответы:
200ProjectOverviewOK
4XXError
GET/searchTenant-scoped search for the command menu (projects, instances, IPs, VPCs, volumes, buckets)
operationId: search
ПараметрГдеТипОписание
q*querystring
org_id*querystring
Ответы:
200{ items }OK
4XXError

Operator

GET/operator/organizations

Requires platform operator role (`operator.organizations.read`). All access is audited.

operationId: operatorListOrganizations
Ответы:
200OrganizationPageOK
4XXError
GET/operator/operations
operationId: operatorListOperations
ПараметрГдеТипОписание
statusqueryOperationStatus
limitqueryinteger
cursorquerystring
Ответы:
200OperationPageOK
4XXError
PUT/operator/quotas/{project_id}

Override a project quota limit. Permission `operator.quotas.update`; requires `reason`; audited.

operationId: operatorSetQuota
ПараметрГдеТипОписание
project_id*pathstring
Тело запроса: { region, resource, limit, reason }
Ответы:
200QuotaUsageOK
4XXError
GET/operator/regionsRegions including disabled ones, with adapter mode and capacity
operationId: operatorListRegions
Ответы:
200{ items }OK
4XXError
GET/operator/audit-events
operationId: operatorListAuditEvents
ПараметрГдеТипОписание
limitqueryinteger
cursorquerystring
org_idquerystring
actionquerystring
Ответы:
200AuditEventPageOK
4XXError

Схемы

Problem
type*string
title*string
status*integer
code*string (invalid_argument | unauthenticated | permission_denied | not_found | conflict | already_exists | failed_precondition | quota_exceeded | insufficient_funds | capacity_exhausted | unsupported_in_region | integration_unavailable | rate_limited | idempotency_key_reused | internal)
detail*string
fields{ field, message }[]
metaobject
request_idstring
Money
amount_minor*integerInteger minor units (kopecks)
currency*string
Me
user*{ id, email, name }
is_operator*boolean
auth_modestring (oidc | dev)
memberships*{ org_id, org_name, roles }[]
DevSession
token*string
expires_at*string
user_id*string
csrf_token*stringAlso set as the non-HttpOnly egn_csrf cookie; send it as X-CSRF-Token on cookie-authenticated mutations
Organization
id*string
name*string
legal_namestring
innstringRussian taxpayer ID (10 digits for legal entities
kppstring
status*string (active | restricted | suspended)
billing_account_idstring
created_at*string
OrganizationCreate
name*string
legal_namestring
innstring
kppstring
OrganizationUpdate
namestring
legal_namestring
innstring
kppstring
OrganizationPage
items*Organization[]
next_cursorstring
totalinteger
Member
user_id*string
email*string
name*string
roles*string[]
joined_at*string
MemberPage
items*Member[]
next_cursorstring
totalinteger
Invitation
id*string
email*string
role_id*string
project_idstring
status*string (pending | accepted | revoked | expired)
expires_at*string
created_at*string
invited_bystring
InvitationCreate
email*string
role_id*string
project_idstring
ttl_hoursinteger
InvitationCreated
Project
id*string
org_id*string
name*string
descriptionstring
status*string (active | deleting)
created_at*string
ProjectCreate
name*string
descriptionstring
ProjectUpdate
namestring
descriptionstring
ProjectPage
items*Project[]
next_cursorstring
totalinteger
PermissionInfo
name*string
service*string
description*string
dangerousboolean
Role
id*stringBuilt-in: roles/owner, roles/admin, roles/billing.admin, roles/developer, roles/viewer; custom: role_…
name*string
descriptionstring
builtin*boolean
permissions*string[]Permission strings; `service.*` wildcards allowed in built-ins
RoleCreate
name*string
descriptionstring
permissions*string[]
RoleUpdate
namestring
descriptionstring
permissionsstring[]
RoleBinding
id*string
principal_id*string
principal_type*string (user | service_account)
role_id*string
scope*{ type, project_id }
created_at*string
RoleBindingCreate
principal_id*string
principal_typestring (user | service_account)
role_id*string
project_idstringOmit for organization-wide binding
PolicyStatement
effect*string (allow | deny)
actions*string[]Permission strings, `*` suffix wildcards allowed (e.g. compute.instances.*)
projectsstring[]Project IDs the statement applies to; empty = all projects of the organization
regionsstring[]Region restriction; empty = all
Policy
id*string
name*string
descriptionstring
principals*string[]
statements*PolicyStatement[]
created_at*string
PolicyCreate
name*string
descriptionstring
principals*string[]
statements*PolicyStatement[]
Region
id*string
display_name*string
location*string
countrystring
status*string (available | limited | maintenance | coming_soon | disabled)
adapter_mode*string (simulator | integration | production)`simulator` means no real infrastructure behind the region (development only)
zones*Zone[]
capabilities*RegionCapabilities
Zone
id*string
display_name*string
status*string (available | limited | sold_out | maintenance)
RegionCapabilities
shared_compute*boolean
guaranteed_compute*booleanTrue only when dedicated-CPU host aggregates with hw:cpu_policy=dedicated exist
local_nvme*boolean
network_block_storage*booleanCinder + Ceph RBD available
floating_ips*boolean
load_balancers*boolean
vpn*boolean
object_storage*boolean
cross_region_reserve*boolean
compute_microversionstring
CPUClassenum: shared | guaranteed
Flavor
id*string
name*string
cpu_class*CPUClass
vcpu*integer
ram_mb*integer
local_disk_gb*integerMax local NVMe boot disk; 0 = network boot disk only
cpu_allocation_rationumberOversubscription ratio for shared class (informational); 1.0 for guaranteed
available*boolean
availability_reasonstring
price_hourly*Money
price_monthly*Money
Image
id*string
name*string
os_family*string (ubuntu | debian | almalinux | rocky | windows | other)
os_version*string
min_disk_gb*integer
source*string (public | custom | marketplace)
license_notestring
StorageClass
id*string
name*string
kind*string (local_nvme | network_rbd)
available*boolean
unavailable_reasonstring
attachable*booleanCan be detached/attached between instances
survives_host_failure*boolean
max_iopsinteger
min_size_gbinteger
max_size_gbinteger
price_gb_month*Money
InstanceStatusenum: creating | active | stopping | stopped | starting | rebooting | resizing | rebuilding | error | deleting | deleted
InstanceActionenum: start | stop | reboot | force-reboot | resize | rebuild | snapshot
Instance
id*string
name*string
descriptionstring
project_id*string
region*string
zone*string
status*InstanceStatus
status_reasonstring
flavor*{ id, name, cpu_class, vcpu, ram_mb }
image*{ id, name }
boot_disk*{ size_gb, storage_class }
volume_idsstring[]
vpc_idstring
subnet_idstring
private_ipstring
public_ipstring
floating_ip_idstring
security_group_ids*string[]
ssh_key_namesstring[]
tags*string[]
backup_policystring (none | daily | weekly)
reserve_eligibleboolean
monthly_estimateMoney
last_operation_idstring
created_at*string
updated_at*string
InstancePage
items*Instance[]
next_cursorstring
totalinteger
InstanceCreate
name*string
descriptionstring
region*string
zone*string
flavor_id*string
image_id*string
boot_disk*{ size_gb, storage_class }
vpc_idstringOmit to use the project default VPC in the region (created if missing)
subnet_idstring
assign_public_ipboolean
security_group_idsstring[]
ssh_public_keysstring[]
user_datastringcloud-init user data (plain text; not logged)
tagsstring[]
backup_policystring (none | daily | weekly)
InstanceAccepted
instance*Instance
operation*Operation
InstanceUpdate
namestring
descriptionstring
tagsstring[]
InstanceActionRequest
flavor_idstringRequired for resize
image_idstringRequired for rebuild
snapshot_namestringRequired for snapshot
PriceLine
component*string (compute | boot_disk | public_ip | backup | reserve | setup)
description*string
skustring
unit*string (hour | day | gb_month | month | one_time)
quantity*integer
recurring*boolean
hourly*Money
monthly*Money
one_timeMoney
InstanceEstimate
lines*PriceLine[]
hourly*Money
daily*Money
monthly*Money730 hours
one_time*Money
pricing_source*stringTariff version used; `dev-static` means development price list, not a published tariff
quota_impact*{ resource, scope, limit, used, requested, after, ok }[]
billing_admission{ allowed, reason }
MetricSeries
metric*string
unit*string
source*string (simulator | telemetry)`simulator` data is synthetic (development only)
points*{ t, v }[]
OperationStatusenum: pending | running | succeeded | failed | cancelled
Operation
id*string
kind*string
status*OperationStatus
project_id*string
org_idstring
target*{ kind, id, name }
progress*integer
steps*{ name, status, started_at, finished_at, detail }[]
error{ code, message }
created_bystring
created_at*string
updated_at*string
finished_atstring
OperationPage
items*Operation[]
next_cursorstring
totalinteger
VPC
id*string
name*string
descriptionstring
project_id*string
region*string
cidr*string
status*string (creating | active | deleting | error)
is_defaultboolean
router_idstring
subnet_count*integer
created_at*string
VPCCreate
name*string
descriptionstring
region*string
cidr*stringRFC 1918 block, /16–/24
VPCAccepted
vpc*VPC
operation*Operation
Subnet
id*string
vpc_id*string
name*string
cidr*string
gateway_ip*string
zone*string
dns_serversstring[]
available_ips*integer
created_at*string
SubnetCreate
name*string
cidr*string
zone*string
dns_serversstring[]
Router
id*string
name*string
region*string
vpc_id*string
external_gateway*boolean
routes{ destination, nexthop }[]
created_at*string
SecurityGroup
id*string
name*string
descriptionstring
project_id*string
region*string
is_defaultboolean
rules*SecurityGroupRule[]
created_at*string
SecurityGroupCreate
name*string
descriptionstring
region*string
SecurityGroupRule
id*string
direction*string (ingress | egress)
protocol*string (tcp | udp | icmp | any)
ethertype*string (IPv4 | IPv6)
port_mininteger
port_maxinteger
remote_cidrstring
remote_group_idstring
descriptionstring
SecurityGroupRuleCreate
direction*string (ingress | egress)
protocol*string (tcp | udp | icmp | any)
ethertypestring (IPv4 | IPv6)
port_mininteger
port_maxinteger
remote_cidrstring
remote_group_idstring
descriptionstring
FloatingIP
id*string
address*string
region*string
status*string (allocated | associated | releasing)
instance_idstring
descriptionstring
monthly_priceMoney
created_at*string
UnavailableCollection
items*object[]
availability*{ region, available, reason }[]
Volume
id*string
name*string
project_id*string
region*string
zone*string
size_gb*integer
storage_class*string
kindstring (local_nvme | network_rbd)
status*string (creating | available | attaching | in_use | detaching | deleting | error)
attached_tostring
is_bootboolean
monthly_estimateMoney
created_at*string
VolumePage
items*Volume[]
next_cursorstring
totalinteger
VolumeCreate
name*string
region*string
zone*string
size_gb*integer
storage_class*string
snapshot_idstring
VolumeAccepted
volume*Volume
operation*Operation
Snapshot
id*string
name*string
volume_id*string
instance_idstring
regionstring
size_gb*integer
status*string (creating | available | deleting | error)
created_at*string
Bucket
name*string
project_id*string
region*string
versioning*boolean
public_read*boolean
size_bytes*integer
object_count*integer
endpointstring
created_at*string
BucketCreate
name*string
region*string
versioningboolean
ObjectListing
prefixes*string[]
objects*{ key, size_bytes, last_modified, etag }[]
S3Key
id*string
access_key_id*string
name*string
scope*{ buckets, read_only }
status*string (active | revoked)
created_at*string
last_used_atstring
S3KeyCreate
name*string
bucketsstring[]Empty = all buckets of the project
read_onlyboolean
S3KeyCreated
QuotaResourceenum: instances | vcpu | ram_mb | volume_gb | volumes | floating_ips | vpcs | security_groups | snapshots | buckets | s3_storage_gb
QuotaUsage
resource*QuotaResource
region*string
limit*integer
used*integer
reserved*integerHeld by in-flight operations
unitstring
AuditEvent
id*string
org_id*string
project_idstring
actor*{ id, type, email }
action*string
resource{ kind, id, name }
outcome*string (success | denied | failure)
request_idstring
source_ipstring
detailsobject
occurred_at*string
AuditEventPage
items*AuditEvent[]
next_cursorstring
totalinteger
ProjectOverview
project_id*string
instances*{ total, active, stopped, error }
vcpu*{ used, limit }
ram_mb*{ used, limit }
storage_gb*{ used, limit }
public_ips*{ used, limit }
vpcs*integer
buckets*integer
monthly_run_rateMoney
recent_operations*Operation[]
integrations*{ name, status, detail }[]Per-integration availability so the UI can show explicit unavailable states
SearchHit
kind*string (project | instance | vpc | volume | bucket | floating_ip | operation)
id*string
title*string
subtitlestring
project_idstring
href*stringConsole-relative path

EGN Cloud Cross-Region Reserve API

1.0.0 · reserve.v1.yaml · 32 операций

Прочее

GET/api/v1/reserve/regionsRegions and whether reserve capacity can currently be committed there
Ответы:
200{ simulated, items }OK
GET/api/v1/orgs/{org}/reserve/overviewRecovery Control Center summary (groups, readiness, protected capacity)
ПараметрГдеТипОписание
org*pathstring
Ответы:
200OK
POST/api/v1/orgs/{org}/reserve/eligibilityCheck a configuration (capacity, sync latency budget, BGP capability) without creating it
ПараметрГдеТипОписание
org*pathstring
Тело запроса: CreateGroup
Ответы:
200{ eligibility, required }OK
GET/api/v1/orgs/{org}/reserve/groups
ПараметрГдеТипОписание
org*pathstring
Ответы:
200{ items }OK
POST/api/v1/orgs/{org}/reserve/groupsCreate a protection group; capacity is reserved atomically in every target (all or nothing)

Requires `reserve.groups.update` on the org and project. Emits billing inventory events (reserve.* components).

ПараметрГдеТипОписание
org*pathstring
Тело запроса: CreateGroup
Ответы:
201Created
412Not eligible (reasons in meta.reasons)
503Capacity exhausted
GET/api/v1/orgs/{org}/reserve/groups/{id}Group with readiness, replicas and recent operations
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200OK
DELETE/api/v1/orgs/{org}/reserve/groups/{id}Stop protection and release reserved capacity (refused while failed over or during an operation)
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
204Deleted
409Conflict
GET/api/v1/orgs/{org}/reserve/groups/{id}/readinessIs recovery safe right now — and if not, why
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200ReadinessOK
GET/api/v1/orgs/{org}/reserve/groups/{id}/replication
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/reserve/groups/{id}/operationsFailover / test / failback history
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200{ items }OK
GET/api/v1/orgs/{org}/reserve/groups/{id}/audit
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
200OK
POST/api/v1/orgs/{org}/reserve/groups/{id}/test-failoverNon-disruptive recovery test (isolated clones; no fencing, no network change). Requires reserve.failover.test
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Тело запроса: { target_region }
Ответы:
202OperationOperation
409Another operation in progress
POST/api/v1/orgs/{org}/reserve/groups/{id}/failoverFail over into a target region. Requires reserve.failover.execute and confirm_name == group name
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Ответы:
202OperationOperation (may stop in awaiting_operator)
POST/api/v1/orgs/{org}/reserve/groups/{id}/failbackPlanned return to the original primary (final sync → zero data loss)
ПараметрГдеТипОписание
org*pathstring
id*pathstring
Тело запроса: { confirm_name }
Ответы:
202Operation
GET/api/v1/orgs/{org}/reserve/operations/{op}
ПараметрГдеТипОписание
org*pathstring
op*pathstring
Ответы:
200OperationOK
POST/api/v1/orgs/{org}/reserve/operations/{op}/abortAbort an operation that has not demoted the primary yet
ПараметрГдеТипОписание
org*pathstring
op*pathstring
Тело запроса: { reason }
Ответы:
200OK
412Irreversible step already done
POST/api/v1/orgs/{org}/reserve/operations/{op}/accept-data-lossContinue an operation blocked by the data-loss policy gate
ПараметрГдеТипОписание
org*pathstring
op*pathstring
Ответы:
200OK
POST/api/v1/operator/reserve/operations/{op}/attestTwo-person attestation that the old primary is stopped (caller = approver, requested_by = second person)
ПараметрГдеТипОписание
op*pathstring
Тело запроса: { requested_by, method }
Ответы:
200OK
412Same person / missing method
PUT/api/v1/operator/reserve/regions/{code}Register/update a region (available|planned|unavailable)
ПараметрГдеТипОписание
code*pathstring
Ответы:
200OK
PUT/api/v1/operator/reserve/linksRecord a measured inter-region RTT
Ответы:
200OK
GET/api/v1/operator/reserve/poolsPools with free capacity and overcommit flag
Ответы:
200OK
PUT/api/v1/operator/reserve/pools/{id}Create/update a pool (cannot shrink below commitments)
ПараметрГдеТипОписание
id*pathstring
Ответы:
200OK
503Below commitments
POST/api/v1/operator/reserve/pools/{id}/degradedRecord lost capacity (failed hosts)
ПараметрГдеТипОписание
id*pathstring
Ответы:
200OK
GET/api/v1/operator/reserve/groupsAll groups
Ответы:
200OK
GET/api/v1/operator/reserve/operationsAll operations
Ответы:
200OK
GET/api/v1/operator/reserve/auditAudit trail (filter org_id
Ответы:
200OK
POST/api/v1/operator/reserve/evaluateRun automatic-failover evaluation now
Ответы:
200OK
POST/api/v1/operator/reserve/simulator/faultsDEVELOPMENT ONLY — inject faults (crash, partition, heal, lag, consistency_fail, promote_fail, network_fail, clear)
Ответы:
200OK
404Simulator disabled
POST/api/v1/operator/reserve/simulator/tickDEVELOPMENT ONLY — advance simulated time (telemetry + auto-failover evaluation per step)
Тело запроса: { seconds, steps }
Ответы:
200OK
GET/api/v1/operator/reserve/simulator/logDEVELOPMENT ONLY — simulated infrastructure log and split-brain violations
Ответы:
200OK
POST/internal/v1/reserve/replicationReplication agent telemetry (stale epochs rejected)
Ответы:
200OK
POST/internal/v1/reserve/observationsIndependent observer health probe
Ответы:
200OK

Схемы

Resources
vcpuinteger
ram_mibinteger
storage_gibinteger
Region
codestring
namestring
countrystring
statusstring (available | planned | unavailable)
supports_syncboolean
bgp_capableboolean
capacity_availableboolean
simulatedboolean
notestring
Policy
modestring (manual | automatic)
max_data_loss_secondsinteger
rto_target_secondsinteger
network_identitystring (bgp | ip_dns)
dns_recordsstring[]
dns_ttl_secondsinteger
detection_window_secondsinteger
CreateGroup
project_id*string
name*string
primary_region*string
targets*{ region, priority, pool_id }[]
members*{ instance_id, name, vcpu, ram_mib, disk_gib, priority }[]
replication_class*string (async | sync)
policyPolicy
Eligibility
eligibleboolean
reasonsstring[]
poolsobject
rpo_zero_possibleboolean
Group
idstring
org_idstring
project_idstring
namestring
primary_regionstring
active_regionstring
targetsobject[]
membersobject[]
replication_classstring
policyPolicy
statestring (provisioning | protected | degraded | failing_over | failed_over | failing_back | suspended)
epochintegerfencing token; increments on every promotion
last_test_atstring
last_test_okboolean
last_test_rto_secondsinteger
Readiness
group_idstring
targetstring
recovery_safeboolean
auto_failover_readyboolean
rpo_zeroboolean
estimated_rpo_secondsinteger
last_recovery_pointstring
rto_target_secondsinteger
last_measured_rto_secondsinteger
rto_basisstring (target only | measured in simulation | measured)
public_connectivitystring
simulatedboolean
checks{ name, ok, blocking, detail }[]
Replica
group_idstring
instance_idstring
regionstring
statestring (initial_sync | in_sync | lagging | broken)
last_recovery_pointstring
lag_secondsinteger
remote_ackboolean
epochinteger
updated_atstring
Operation
idstring
group_idstring
kindstring (failover | test_failover | failback)
triggerstring (manual | automatic)
actorstring
source_regionstring
target_regionstring
statestring (running | awaiting_operator | completed | failed | rolled_back | aborted)
steps{ name, status, started_at, finished_at, detail }[]
epoch_beforeinteger
epoch_afterinteger
recovery_pointstring
data_loss_secondsintegerupper-bound estimate
detected_atstring
started_atstring
completed_atstring
measured_rto_secondsintegeronly set when verification succeeded
errorstring
requires_operatorstring
simulatedboolean