{"security":[{"ApiKeyAuth":[]},{"SessionCookieAuth":[]}],"paths":{"/api/openapi.json":{"get":{"security":[],"summary":"Get an OpenAPI document that describes the Arpio API in JSON format","responses":{"200":{"description":"An OpenAPI document","content":{"application/vnd.oai.openapi+json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/openapi.yml":{"get":{"security":[],"summary":"Get an OpenAPI document that describes the Arpio API in YAML format","responses":{"200":{"description":"An OpenAPI document","content":{"application/vnd.oai.openapi":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts":{"get":{"summary":"List accounts the authenticated subject can access","responses":{"200":{"description":"An array of account representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}":{"get":{"summary":"Get an account","responses":{"200":{"description":"An account representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account","requestBody":{"description":"An account representation","content":{"application/json":{}}},"responses":{"200":{"description":"An account representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an account","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/entitler":{"get":{"summary":"Get an account's entitler","description":"An entitler is an external service, platform, or entity that provides entitlements to an Arpio account.  An example of an entitler is the AWS Marketplace, through which you can purchase a license to use Arpio for a period of time, which grants your Arpio account an entitlement to use the licensed edition of the service.\nThe types of entitlements your account can have are specific to the entitler.\n","responses":{"200":{"description":"An entitler representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account's entitler","description":"Update your account's entitler to the one that issued the provided token.\n","requestBody":{"description":"An object containing `entitlementToken`","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/entitlement":{"get":{"summary":"Get an account's entitlement","description":"An entitlement is a service usage right granted to your account by your account's entitler.  An example of an entitlement is the Arpio Standard entitlement, which can be granted by the AWS Marketplace entitler.\nYour Arpio account's entitlements control which Arpio service features your account can access.\n","responses":{"200":{"description":"An entitlement representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account's entitlement","description":"For use only by Arpio\n","requestBody":{"description":"For use only by Arpio","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/entitlement/extraCapabilities":{"put":{"summary":"Update an account's entitlement's extra capabilities","description":"Only Arpio administrators may update an account's entitlement's capabilities.\nContact Arpio support for information about changing your account's entitled capabilities.\n","requestBody":{"description":"An array of capability values","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/entitlement/disabledCapabilities":{"put":{"summary":"Update an account's entitlement's disabled capabilities","description":"Only Arpio administrators may update an account's entitlement's capabilities.\nContact Arpio support for information about changing your account's entitled capabilities.\n","requestBody":{"description":"An array of capability values","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/retention":{"get":{"summary":"Get an account's recovery point retention settings","responses":{"200":{"description":"The recovery point retention settings representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account's recovery point retention settings","requestBody":{"description":"The recovery point retention settings representation","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/resourceAttributes":{"get":{"summary":"Get the attributes Arpio will apply to non-replicated resources that it creates","responses":{"200":{"description":"The attributes Arpio will apply to non-replicated resources that it creates","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update the attributes Arpio will apply to non-replicated resources that it creates","requestBody":{"description":"The attributes Arpio will apply to non-replicated resources that it creates","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/resourceTypeConfigs":{"get":{"summary":"Get the resource type configurations for an account","responses":{"200":{"description":"The resource type configurations for an account","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account's resource type configurations","requestBody":{"description":"The resource type configurations","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/uiState":{"get":{"summary":"Get the account ui state saved for an account","responses":{"200":{"description":"The ui state for an account","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update the account's UI state saved for the application","requestBody":{"description":"The UI state for an application","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/auditEvents":{"get":{"parameters":[{"name":"timestampStart","in":"query","description":"The earliest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-24T12:21:16.123Z"},{"name":"timestampEnd","in":"query","description":"The latest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-25T12:21:16.123Z"},{"name":"pageSize","in":"query","description":"The maximum number of events to get in a single response.  If more are available, the response contains a nextToken that can be presented to retrieve additional pages of results.\n","required":false,"schema":{"type":"integer"}},{"name":"nextToken","in":"query","description":"A token returned from this endpoint, which identifies an offset that more events can be fetched from.\n","required":false,"schema":{"type":"string"}}],"summary":"List audit events for an account","responses":{"200":{"description":"An array of audit event representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjectGroups":{"get":{"summary":"List account subject groups for an account","responses":{"200":{"description":"An array of account subject group representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create a new account subject group","requestBody":{"description":"An account subject group representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSubjectGroupDto"}}}},"responses":{"201":{"description":"An account subject group representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjectGroups/{account_subject_group_id}":{"get":{"summary":"Get an account subject group","responses":{"200":{"description":"An account subject group representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an account subject group","requestBody":{"description":"An account subject group representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSubjectGroupDto"}}}},"responses":{"200":{"description":"An account subject group representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an account subject group","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_group_id","in":"path","description":"An account subject group ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/identityProviders":{"get":{"summary":"List identity providers","tags":["Identity Providers"],"responses":{"200":{"description":"An array of identity provider representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an identity provider","tags":["Identity Providers"],"requestBody":{"description":"An identity provider representation","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/identityProviders/{identity_provider_id}":{"get":{"summary":"Get an identity provider","tags":["Identity Providers"],"responses":{"200":{"description":"An identity provider representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an identity provider","tags":["Identity Providers"],"requestBody":{"description":"An identity provider representation","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"An identity provider representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an identity provider","tags":["Identity Providers"],"parameters":[{"name":"force","in":"query","description":"If `true`, forces deletion of this identity provider even if there are account subjects associated with it; if `false`, prevents deleting an identity provider if there are account subjects associated with it (default is `false`)\n","required":false,"schema":{"type":"boolean"}}],"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"identity_provider_id","in":"path","description":"An identity provider ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects":{"get":{"summary":"List account subjects","responses":{"200":{"description":"An array of account subject representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an account subject","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"An account subject representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSubjectCreateDto"}}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects/bulk":{"post":{"summary":"Bulk create account subjects","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"An array of account subject representations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkAccountSubjectDto"}}}}},"responses":{"200":{"description":"An array of account subject representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}/subjects/{account_subject_id}":{"put":{"summary":"Update an account subject","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"An account subject representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSubjectUpdateDto"}}}},"responses":{"200":{"description":"An account subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"get":{"summary":"Get an account subject","responses":{"200":{"description":"An account subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an account subject","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_id","in":"path","description":"An account subject ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects/{account_subject_id}/inviteUrl":{"get":{"summary":"Get a URL that invites a subject to start working with an account (superusers only)","responses":{"200":{"description":"The invite URL as a JSON string","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_id","in":"path","description":"The ID of the account subject to get the invite URL for","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects/{account_subject_id}/invite":{"post":{"summary":"Invite a subject to start working with an account","responses":{"200":{"description":"An account subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_id","in":"path","description":"The ID of the account subject to invite","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects/{account_subject_id}/verifyUrl":{"get":{"summary":"Get a URL that can be used to verify a subject (superusers only)","responses":{"200":{"description":"The verify URL as a JSON string","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_id","in":"path","description":"The ID of the account subject to get the verify URL for","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/subjects/{account_subject_id}/verify":{"post":{"summary":"Verify an account subject","requestBody":{"description":"An empty object","content":{"application/json":{}}},"responses":{"200":{"description":"An account subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"account_subject_id","in":"path","description":"The ID of the account subject to verify","required":true,"schema":{"type":"string"}}]},"/api/auth/authenticate":{"get":{"security":[],"summary":"Start the authentication process for a subject","description":"The response contains a URL the user agent should navigate to complete authentication, with an auth token encoded as a query arg.  If a specific identity provider ID was specified in a query arg, that provider's URL is returned, otherwise the \"native\" IdP's URL is returned.\nThe flow should return to one of the `finish*` endpoints.\n","parameters":[{"name":"identityProviderId","in":"query","description":"The IdP to start the authentication flow for.  If not specified, the \"native\" IdP's authentication flow is started.\n","required":false,"schema":{"type":"string"}},{"name":"redirectUrl","in":"query","description":"A URL to redirect the user agent to after authentication succeeds. If not specified, the user agent is redirected to a default location in the Arpio console application.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing the `loginUrl` that starts the authentication process","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/samlAcs":{"post":{"security":[],"summary":"SAML 2.0 assertion consumer service endpoint","description":"This endpoint consumes signed assertions from an identity provider to finish a SAML 2.0 authentication flow.\n","requestBody":{"description":"SAML 2.0 IdP POST Binding response data","content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"SAMLResponse":{"type":"string"},"RelayState":{"type":"string"}}}}}},"responses":{"303":{"description":"Returned when the SAML assertions are valid, an authenticated session has been established, and the `Location` header specifies the `redirectUrl` that was configured when authentication was started\n"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/saml":{"get":{"security":[],"summary":"SAML 2.0 service provider metadata endpoint","description":"Gets SAML 2.0 service provider metadata for all accounts.\n","responses":{"200":{"description":"A SAML 2.0 metadata document containing service provider metadata","content":{"application/samlmetadata+xml":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/saml/{account_id}":{"get":{"summary":"SAML 2.0 service provider metadata endpoint","description":"Gets SAML 2.0 service provider metadata for the account.\n","responses":{"200":{"description":"A SAML 2.0 metadata document containing service provider metadata","content":{"application/samlmetadata+xml":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/auth/nativeAcs":{"post":{"security":[],"summary":"Finish a native authentication flow","description":"This endpoint consumes assertions from the native IdP.","requestBody":{"description":"Native IdP authentication assertions","content":{"application/json":{}}},"responses":{"200":{"description":"Returned when the native assertions are valid, an authenticated session has been established, and the response contains an object containing the optional `redirectUrl` that was configured when authentication was started\n","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/logout":{"post":{"security":[],"summary":"Invalidate the current authenticated subject's session","requestBody":{"description":"An empty object","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/createAccount":{"post":{"security":[],"summary":"Create a new Arpio account","description":"The account will initially have one account subject for the subject whose native IdP assertions are sent in the request body.\n","requestBody":{"description":"An object containing `nativeAuthToken` and an account representation in `account`","content":{"application/json":{}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/previewInvite":{"get":{"security":[],"summary":"Verify and decode the token in an invitation link that was sent in an email","description":"The response contains information that helps the user decide whether to trust and accept the invitation.\n","parameters":[{"name":"inviteToken","in":"query","description":"The invitation token that was sent in an email when the user was invited","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing `inviterEmail`","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/acceptInvite":{"post":{"security":[],"summary":"Process the acceptance of an invitation link that was sent in an email","requestBody":{"description":"An object containing `inviteToken` and an optional `redirectUrl` to encode inside the returned `loginUrl`\n","content":{"application/json":{}}},"responses":{"200":{"description":"An object containing `loginUrl` which the user can use to authenticate","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/verifyEmail":{"post":{"security":[],"summary":"Process the acceptance of an email verification link that was sent in an email","requestBody":{"description":"An object containing `verifyToken`","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/authenticatedSubject":{"get":{"summary":"Get information about the currently authenticated subject (deprecated)","description":"This endpoint may be removed in the future.  Use /auth/authenticatedPrincipal instead.\n","responses":{"200":{"description":"An authenticated subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/authenticatedPrincipal":{"get":{"summary":"Get information about the currently authenticated principal","responses":{"200":{"description":"An authenticated subject representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/msEntra/appConsent":{"get":{"summary":"Returns a URL to start the MS Entra app consent flow","description":"The response contains a URL the user agent should navigate to in order to start the app consent flow.\n","parameters":[{"name":"identityProviderId","in":"query","description":"The IdP to start the authentication flow for.  Must be a Microsoft Entra identity provider.\n","required":true,"schema":{"type":"string"}},{"name":"redirectUrl","in":"query","description":"A URL to redirect the user agent to after app consent succeeds. If not specified, the user agent is redirected to a default location in the Arpio console application.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing the `loginUrl` that starts the consent process","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/auth/msEntra/appConsentCallback":{"get":{"security":[],"summary":"MS Entra app consent callback endpoint","description":"The endpoint that MS Entra redirects to after the user has granted app consent. It is expected that the `code` and `state` query parameters are present in the request. https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow#successful-response\n","parameters":[{"name":"code","in":"query","description":"The authorization code returned by MS Entra after app consent","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","description":"The state that was passed in the initial request to start the app consent flow","required":false,"schema":{"type":"string"}}],"responses":{"303":{"description":"Returned when the consent was successful and the code and state are valid\n"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}/apiKeys":{"get":{"summary":"List API keys","responses":{"200":{"description":"An array of API key representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an API key","requestBody":{"description":"An API key representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyDto"}}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header, and the API key representation containing the secret value (which is only available one time) is in the response body\n"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/apiKeys/{api_key_id}":{"get":{"summary":"Get an API key","responses":{"200":{"description":"An API key representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an API key","requestBody":{"description":"An API key representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyDto"}}}},"responses":{"200":{"description":"An API key representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an API key","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"api_key_id","in":"path","description":"An API key ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/awsAccounts":{"get":{"summary":"List AWS accounts","responses":{"200":{"description":"An array of AWS account representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an AWS account","requestBody":{"description":"An AWS account representation","content":{"application/json":{}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/awsAccounts/{aws_account_id}":{"get":{"summary":"Get an AWS account","responses":{"200":{"description":"An AWS account representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an AWS account","requestBody":{"description":"An AWS account representation","content":{"application/json":{}}},"responses":{"200":{"description":"An AWS account representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an AWS account","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"An AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"}]},"/api/accounts/{account_id}/applications":{"get":{"summary":"List applications","responses":{"200":{"description":"An array of application representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an application","requestBody":{"description":"An application representation","content":{"application/json":{}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}":{"get":{"summary":"Get an application","responses":{"200":{"description":"An application representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an application","responses":{"200":{"description":"An application representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an application","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/resources":{"get":{"summary":"List an applications resources and their status","description":"The response includes status information for each resource.\n","responses":{"200":{"description":"An array of application resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"The application ID to return resources for","required":true,"schema":{"type":"string"}},{"name":"includeTargetResources","in":"query","description":"If `true`, includes target resources in the response; if `false`, target resources are omitted (default is `true`)\n","required":false,"schema":{"type":"boolean"}}]},"/api/accounts/{account_id}/applications/{app_id}/resources/backup":{"get":{"summary":"List an application's resources with their backup status","description":"Returns the currently matched application resources with their backup status.\n","responses":{"200":{"description":"An array of backup resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"The application ID to return backup resources for","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/resources/restore":{"get":{"summary":"List an application's resources with their restore status","description":"Returns resources from the currently applied recovery point merged with target resources, along with their restore status. When no recovery point is applied, only target resources are returned.\n","responses":{"200":{"description":"An array of restore resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"The application ID to return restore resources for","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/resources/failback":{"get":{"summary":"List an application's resources with their failback status","description":"Returns resources from the currently applied recovery point merged with target resources, along with their failback status. When no recovery point is applied, only target resources are returned.\n","responses":{"200":{"description":"An array of failback resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"The application ID to return failback resources for","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/resourceStatusChanges/{scope}":{"get":{"summary":"List recent resource status changes for an application","description":"The response includes information about resources that was gathered during the last refresh operation.\n","responses":{"200":{"description":"An object containing an array of change events along with a nextToken that can be included as a query parameter on subsequent requests to fetch more changes.\n","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"The application ID to return resources for","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"The scope for the changes to return","required":true,"schema":{"type":"string","enum":["backup","restore","failback"]}},{"name":"nextToken","in":"query","description":"A token returned from either '/accounts/<account_id>/applications/<app_id>/resources' or this endpoint, which identifies an offset that more events can be fetched from.\n","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/integrations":{"get":{"summary":"List integrations","responses":{"200":{"description":"An array of integration representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create an integration","requestBody":{"description":"An integration representation","content":{"application/json":{}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/integrations/{integration_id}":{"get":{"summary":"Get an integration","responses":{"200":{"description":"An integration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an integration","responses":{"200":{"description":"An integration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an integration","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"integration_id","in":"path","description":"An integration ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/integrations":{"get":{"summary":"List integrations enabled for this application","responses":{"200":{"description":"An array of application integration representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/integrations/{integration_id}":{"get":{"summary":"Get an integration enabled for this application","responses":{"200":{"description":"An application integration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Enable an integration for this application","requestBody":{"description":"An empty object","content":{"application/json":{}}},"responses":{"204":{"description":"An application integration representation"},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Disable an integration for this application","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"integration_id","in":"path","description":"The unique identifier of the integration to delete","required":true,"schema":{"type":"string"},"example":"abc123def456ghi789"}]},"/api/accounts/{account_id}/applications/{app_id}/issues":{"get":{"summary":"Get issues encountered while protecting or recovering resources in this application","responses":{"200":{"description":"An array of application issue representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/issues/{scope}/{issue_id}":{"delete":{"summary":"Delete a specific issue encountered while protecting or recovering resources in this application","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"The scope of the issue","required":true,"schema":{"type":"string","enum":["staging","sync"]},"example":"staging"},{"name":"issue_id","in":"path","description":"The unique identifier of the issue to delete","required":true,"schema":{"type":"string"},"example":"abc123def456ghi789"}]},"/api/accounts/{account_id}/applications/{app_id}/networkSandbox/blockedDomains":{"get":{"summary":"Get list of server domains that have been recently blocked by the network firewall.","responses":{"200":{"description":"An array of blocked IPs.","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"The maximum number of blocked domains to return. Defaults to 100.","required":false,"schema":{"type":"integer"}},{"name":"startTime","in":"query","description":"Minimum timestamp of events to consider. Specified in epoch seconds.  Defaults to now - 4 hours.","required":false,"schema":{"type":"integer"}},{"name":"endTime","in":"query","description":"Maximum timestamp of events to consider.  Specified in epoch seconds.  Defaults to now.","required":false,"schema":{"type":"integer"}}]},"/api/accounts/{account_id}/applications/{app_id}/networkSandbox/blockedIps":{"get":{"summary":"Get list of server IPs that have been recently blocked by the network firewall.","responses":{"200":{"description":"An array of blocked IPs.","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"The maximum number of blocked IPs to return. Defaults to 100.","required":false,"schema":{"type":"integer"}},{"name":"startTime","in":"query","description":"Minimum timestamp of events to consider. Specified in epoch seconds.  Defaults to now - 4 hours.","required":false,"schema":{"type":"integer"}},{"name":"endTime","in":"query","description":"Maximum timestamp of events to consider.  Specified in epoch seconds.  Defaults to now.","required":false,"schema":{"type":"integer"}}]},"/api/accounts/{account_id}/applications/{app_id}/networkSandbox/logs":{"get":{"summary":"List an application's logs","responses":{"200":{"description":"An array of log entries","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"filterPattern","in":"query","description":"An optional filter pattern to apply to events.  If set, only events matching the given pattern are returned.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"The maximum number of events to return.","required":false,"schema":{"type":"integer"}},{"name":"startTime","in":"query","description":"Minimum timestamp for returned events, specified in epoch milliseconds.","required":false,"schema":{"type":"integer"}},{"name":"endTime","in":"query","description":"Maximum timestamp for returned events, specified in epoch milliseconds.","required":false,"schema":{"type":"integer"}},{"name":"nexToken","in":"query","description":"If included, fetches the next page of results for the given query params.","required":false,"schema":{"type":"string"}}]},"/api/info/resourceTypes.json":{"get":{"security":[],"summary":"Get a JSON description of supported resource types","responses":{"200":{"description":"A JSON document containing supported resource types","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/resourceTypes.csv":{"get":{"security":[],"summary":"Get a CSV description of supported resource types","responses":{"200":{"description":"A CSV document listing supported resource types","content":{"text/csv":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/releaseDetails":{"get":{"security":[],"summary":"Get a list of release details","responses":{"200":{"description":"A JSON array of release detail entries","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/capabilities":{"get":{"security":[],"summary":"List capabilities that can be enabled/disabled for accounts by Arpio support.","responses":{"200":{"description":"List of capability names","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/eks/baseTranslationConfig.json":{"get":{"security":[],"summary":"Get a JSON description of Arpio default translation configuration","responses":{"200":{"description":"A JSON document containing Arpio default translation configurations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/eks/baseTranslationConfig.yaml":{"get":{"security":[],"summary":"Get a YAML description of Arpio default translation configuration","responses":{"200":{"description":"A YAML document containing Arpio default translation configurations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}/applications/{app_id}/recoveryPointAttempts":{"get":{"summary":"List an application's recovery point attempts","parameters":[{"name":"timestampStart","in":"query","description":"The earliest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-24T12:21:16.123Z"},{"name":"timestampEnd","in":"query","description":"The latest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-25T12:21:16.123Z"}],"responses":{"200":{"description":"An array of recovery point attempt representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/billable_resources.csv":{"get":{"summary":"Get a CSV-formatted report which contains the count of billable resources, grouped by resource type","description":"Arpio charges for an upper limit of billable resources. Some resources a billed as one unit, while other resources are billed as a partial unit. This report can help explain how Arpio is counting specific resources for billing purposes.\n","responses":{"200":{"description":"A CSV file containing the count of billable resources grouped by resource type","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/billable_resources.json":{"get":{"summary":"Get a JSON report which contains the count of billable resources, grouped by resource type","description":"Arpio charges for an upper limit of billable resources. Some resources a billed as one unit, while other resources, like Lambda Functions are billed as a partial unit. This report can help explain how Arpio is counting specific resources for billing purposes.\n","responses":{"200":{"description":"A JSON document containing a list of billing records, where each record indicates: 1. The source AWS account the resource is in. 1. The app name that contains the resource 2. The type of resource 3. The total count of resources managed by Arpio 4. The billable count of resources\n","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/recoveryPoints":{"get":{"summary":"List an application's recovery points","responses":{"200":{"description":"An array of recovery point representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applications/{app_id}/recoveryPoints/{rp_id}":{"put":{"summary":"Update a Recovery Point","responses":{"200":{"description":"The updated recovery point representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_id","in":"path","description":"An application ID","required":true,"schema":{"type":"string"}},{"name":"rp_id","in":"path","description":"A Recovery Point ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applicationSets":{"get":{"summary":"List application sets for an account","responses":{"200":{"description":"An array of application set representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create a new application set","requestBody":{"description":"An application set representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSetDto"}}}},"responses":{"201":{"description":"An application set representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/applicationSets/{app_set_id}":{"get":{"summary":"Get an application set","responses":{"200":{"description":"An application set representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update an application set","requestBody":{"description":"An application set representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSetDto"}}}},"responses":{"200":{"description":"An application set representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete an application set","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"app_set_id","in":"path","description":"An application set ID","required":true,"schema":{"type":"string"}}]},"/api/awsMarketplace/createAwsSubscription":{"post":{"security":[],"summary":"Handle an AWS Marketplace subscription POST","requestBody":{"description":"AWS Marketplace form data","content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"x-amzn-marketplace-token":{"type":"string"}}}}}},"responses":{"302":{"description":"A redirect to a client-side URL that indicates success or failure"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azureMarketplace/landing":{"get":{"security":[],"summary":"Azure Marketplace landing page endpoint","description":"The first step for handling an Azure Marketplace subscription purchase. This endpoint receives the purchase token from Azure Marketplace and redirects the user to MS Entra for authentication to verify they are the purchaser.\n","parameters":[{"name":"token","in":"query","description":"The URL-encoded purchase token from Azure Marketplace (valid for 24 hours)","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirects to MS Entra for user authentication"},"422":{"description":"The token parameter is missing or empty"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azureMarketplace/authCallback":{"get":{"security":[],"summary":"Azure Marketplace MS Entra authentication callback","description":"Callback endpoint that MS Entra redirects to after the user authenticates. This endpoint exchanges the authorization code for tokens, resolves the marketplace purchase token, validates the user belongs to the purchasing tenant, and redirects to the subscription confirmation page.\n","parameters":[{"name":"code","in":"query","description":"The authorization code returned by MS Entra after authentication","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","description":"The marketplace purchase token that was passed as state to MS Entra","required":true,"schema":{"type":"string"}},{"name":"error","in":"query","description":"Error code if MS Entra authentication failed","required":false,"schema":{"type":"string"}},{"name":"error_description","in":"query","description":"Description of the authentication error","required":false,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirects to the subscription confirmation page on success, or to the error page if authentication or validation failed\n"},"422":{"description":"Required parameters are missing or empty"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azureMarketplace/subscription":{"get":{"security":[],"summary":"Get Azure Marketplace subscription details","description":"Retrieves details about the Azure Marketplace subscription for display on the subscription confirmation page. The token contains signed subscription settings from the authentication callback.\n","parameters":[{"name":"token","in":"query","description":"The signed Arpio token containing subscription settings","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The subscription details"},"422":{"description":"The token parameter is missing or empty"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azureMarketplace/activate":{"post":{"security":[],"summary":"Activate Azure Marketplace subscription and create account","description":"Activates the Azure Marketplace subscription and creates a new Arpio account for the purchaser.\n","parameters":[{"name":"token","in":"query","description":"The signed Arpio token containing subscription settings","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The account was created and subscription activated successfully","headers":{"Location":{"description":"URL of the newly created account","schema":{"type":"string"}}}},"409":{"description":"An account already exists for the subscription"},"422":{"description":"The token parameter is missing or empty"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azureMarketplace/webhook":{"post":{"security":[],"summary":"Handle Azure Marketplace webhook events","description":"Handles webhook notifications from Azure Marketplace for subscription lifecycle events. Events include: ChangePlan, ChangeQuantity, Renew, Suspend, Unsubscribe, Reinstate. Must return HTTP 200 within 10 seconds to acknowledge receipt.\n","responses":{"200":{"description":"Webhook acknowledged successfully"},"401":{"description":"Invalid or missing Authorization header"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}/backup":{"post":{"summary":"Start backing up one or more applications","description":"Arpio backs up (creates recovery points for) applications automatically based on their configured recovery point objectives (RPOs).  A backup is also started automatically whenever an application's settings are changed (for example, when resource selection rules are modified).  This API endpoint may be used to start backing up the specified applications at any time.\nBackup is an asynchronous process.  This endpoint returns before the backup process starts, and the response representation may not indicate that the process has started yet.  Poll application status to monitor backup progress.  If a backup is currently in progress for a specified application, the running backup process is not interrupted or canceled. Instead, the manual request to perform a backup is ignored for those applications.\n","requestBody":{"description":"A backup request representation that contains an 'appIds' list","content":{"application/json":{}}},"responses":{"200":{"description":"A backup response representation that contains an application representation for each specified application\n"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/failback":{"post":{"summary":"Fail back recovery environment data for or more applications to the original primary environment resources","description":"This endpoint starts the asynchronous process of copying the most recent data from the specified applications' recovery (target) endpoints into their original primary (source) endpoints.\nThe request object must contain an `apps` object whose keys are the application IDs to fail back, and whose values are application failback request objects.  Those request objects do not require any properties (specify an empty object).\n","requestBody":{"description":"A failback request representation that contains an 'appIds' list","content":{"application/json":{}}},"responses":{"200":{"description":"A failback response representation that contains an application representation for each specified application\n"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/syncPairs":{"get":{"summary":"List sync pairs","description":"A sync pair is a pair of endpoints, each endpoint being identified by an AWS account ID and region, between which resources are being synchronized for disaster recovery.  A sync pair has a primary (or source) endpoint and a recovery (or target) endpoint.  Sync pairs are not explicitly created.  Instead, Arpio creates one for each distinct pair of endpoints found in all applications in an Arpio account.\n","responses":{"200":{"description":"An array of sync pair representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}":{"get":{"summary":"Get a sync pair","responses":{"200":{"description":"A sync pair representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}":{"get":{"summary":"Get a sync pair","responses":{"200":{"description":"A sync pair representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/accessTemplates":{"get":{"summary":"Get a sync pair's AWS CloudFormation access templates","parameters":[{"name":"identityProviderId","in":"query","description":"The ID of the identity provider to use for Azure access.  If not specified, the first MS Entra IdP for the account will be used.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing template text and S3 URLs for access templates","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/accessTemplates":{"get":{"summary":"Get a sync pair's AWS CloudFormation access templates","parameters":[{"name":"identityProviderId","in":"query","description":"The ID of the identity provider to use for Azure access.  If not specified, the first MS Entra IdP for the account will be used.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing template text and S3 URLs for access templates","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/access":{"get":{"summary":"Check if Arpio can connect to the sync pair's endpoints","parameters":[{"name":"scope","in":"query","description":"The scope of the access check (may be specified multiple times); default is `source` and `target`","required":true,"schema":{"type":"string"},"examples":{"source":{"value":"source"},"target":{"value":"target"},"failback":{"value":"failback"}}},{"name":"identityProviderId","in":"query","description":"The ID of the identity provider to use for Azure access checks.  If not specified, the first MS Entra IdP for the account will be used.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing boolean values that indicate connection success or failure","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/access":{"get":{"summary":"Check if Arpio can connect to the sync pair's endpoints","parameters":[{"name":"scope","in":"query","description":"The scope of the access check (may be specified multiple times); default is `source` and `target`","required":true,"schema":{"type":"string"},"examples":{"source":{"value":"source"},"target":{"value":"target"},"failback":{"value":"failback"}}},{"name":"identityProviderId","in":"query","description":"The ID of the identity provider to use for Azure access checks.  If not specified, the first MS Entra IdP for the account will be used.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"An object containing boolean values that indicate connection success or failure","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/resources":{"get":{"summary":"List a sync pair's recovery (target) endpoint resources","description":"The response includes only resources created by and managed by Arpio.\n","responses":{"200":{"description":"An array of recovery (target) resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/resources":{"get":{"summary":"List a sync pair's recovery (target) endpoint resources","description":"The response includes only resources created by and managed by Arpio.\n","responses":{"200":{"description":"An array of recovery (target) resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/failoverTestResults":{"get":{"summary":"List failover test results","parameters":[{"name":"timestampStart","in":"query","description":"The earliest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-24T12:21:16.123Z"},{"name":"timestampEnd","in":"query","description":"The latest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-25T12:21:16.123Z"},{"name":"reverse","in":"query","description":"If `true`, returns results starting with the newest timestamp first; if `false`, returns results starting with the oldest timestamp first (default is `false`)\n","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","description":"Return no more than this many results","required":false,"schema":{"type":"integer"}},{"name":"appId","in":"query","description":"List failover test results for only this application ID","required":false,"schema":{"type":"string"}},{"name":"success","in":"query","description":"If `true`, only successful failover test results are returned; if `false`, only unsuccessful failover test results are returned; if not specified, all failover test results are returned\n","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"An array of failover test result representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create a failover test result","requestBody":{"description":"A failover test result representation","content":{"application/json":{}}},"responses":{"201":{"description":"The resource was created; its URI is in the Location header"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/failoverTestResults/{timestamp}":{"get":{"summary":"Get a failover test result","responses":{"200":{"description":"A failover test result representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a failover test result","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"timestamp","in":"path","description":"The unique timestamp of a failover test result","required":true,"schema":{"type":"string"}}]},"/api/health":{"get":{"security":[],"summary":"Get information about the health of the Arpio API","parameters":[{"name":"database","in":"query","description":"If `true`, checks the health of the database subsystem (default is `true`)\n","required":false,"schema":{"type":"boolean"}},{"name":"saml","in":"query","description":"If `true`, checks the health of the SAML subsystem (default is `true`)\n","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"An object describing the health checks performed when all values are `true`","content":{"application/json":{}}},"503":{"description":"An object describing the health checks performed when any value is `false`","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/alerts":{"get":{"summary":"Get the list of alerts about system-wide functionality","responses":{"200":{"description":"A JSON array of all alerts","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Set the list of alerts about system-wide functionality","requestBody":{"description":"An array of alerts","content":{"application/json":{}}},"responses":{"200":{"description":"A JSON array of all alerts"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/auditEventTypes.json":{"get":{"security":[],"summary":"Get a JSON description of supported audit event types","responses":{"200":{"description":"A JSON document containing supported audit event types and their associated access level","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/info/regions.json":{"get":{"security":[],"summary":"Get a JSON description of region names supported by this Arpio environment","responses":{"200":{"description":"A JSON document containing region names","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/accounts/{account_id}/recoveryPoints":{"get":{"summary":"List recovery points for all applications in the account","responses":{"200":{"description":"An map of application IDs to array of recovery point representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"protected","in":"query","description":"Return only recovery points with the specified protected flag.\n","required":false,"schema":{"type":"boolean"}}]},"/api/accounts/{account_id}/jobs":{"get":{"summary":"List jobs","parameters":[{"name":"oldestFirst","in":"query","description":"Flag indicating whether to return results sorted by oldest first or not.","schema":{"type":"boolean"}},{"name":"appId","in":"query","description":"The ID of the application to return jobs for.","schema":{"type":"string"},"required":false},{"name":"jobType","in":"query","description":"The type of jobs to return","schema":{"type":"string"},"required":false},{"name":"limit","in":"query","description":"The maximimum amount of results to return.  Defaults to 1000. If limit is greater than 1000, only 1000 results will be returned.\n","required":false,"schema":{"type":"integer"},"example":123},{"name":"status","in":"query","description":"If included, only jobs with the given status will be returned.","schema":{"type":"string"},"required":false},{"name":"minStartTime","in":"query","description":"The earliest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-24T12:21:16.123Z"},{"name":"maxStartTime","in":"query","description":"The latest timestamp to constrain results by, in ISO 8601 format. This timestamp is inclusive.\n","required":false,"schema":{"type":"string"},"example":"2021-11-25T12:21:16.123Z"}],"responses":{"200":{"description":"An array of jobs","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/jobs/{job_id}":{"get":{"summary":"Get a job","responses":{"200":{"description":"An job representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","description":"A job ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/restore":{"post":{"summary":"Restore one or more applications to the specified recovery points or retry a previously executed job\n","description":"This endpoint starts the asynchronous process of restoring resources into the specified applications' recovery (target) endpoints from recovery point information created by previous backup processes. It can be called with an `apps` object for new restore executions or with `retryJobId` for re-executing a previous restore job.\nFor new restore executions, the request object must contain an `apps` object whose keys are the application IDs to restore, and whose values are application restore request objects, each containing some of the following properties:\n\n    recoveryPointId\n    syncPhase\n    enableRealTimeSync\n    enableNetworkSandbox\n    networkSandboxWhitelist\n\nSpecify `recoveryPointId` to restore resources from a specific recovery point.  If not specified, the application is restored at the recovery point it was most recently restored to.\nSpecify `syncPhase` to control which phase the application is restored to.  Valid values are: `standby`, `failover`, `failoverTest`.\nWhen `syncPhase` is `failoverTest`, `enableNetworkSandbox` controls whether network sandboxing is enabled (flag is `true`) or disabled (flag is `false`) for the application.  For other `syncPhase` values, the flag is ignored.\nWhen `syncPhase is `failoverTest`, and `enableNetworkSandbox` is `true`, the `networkSandboxWhitelist` flag can be used to excempt some IP CIDR ranges from the sandbox.\nIf `recoveryPointId` is provided, the request may also include a boolean `enableRealTimeSync` flag, indicating whether real-time replicated resources should be restored with their latest data (flag is `true), or instead to a snapshot captured when the specified recovery point was created (flag is `false`).  If `recoveryPointId` is specified, but this field is omitted, it defaults to `false`. If neither field is specified, the value from the prior restore request is used.\nIf `protect_recovery_point` is set to True, the recovery point used in this restore will be set to `protected` and will not be eligible for clean up.\nFor retrying a previously executed job, the `retryJobId` must be set to the ID of a completed restoreApp job. The restoration of the resources that failed to in this job will be retried.\n","requestBody":{"description":"A restore request representation that contains an 'apps' object or a 'retryJobId'.","content":{"application/json":{}}},"responses":{"200":{"description":"A restore response representation that contains an application representation for each specified application, and a list of jobs used to process the response\n"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/roles":{"get":{"summary":"List roles for an account","responses":{"200":{"description":"An array of role representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"post":{"summary":"Create a new role","requestBody":{"description":"A role representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleDto"}}}},"responses":{"201":{"description":"A role representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/roles/{role_id}":{"get":{"summary":"Get a role","responses":{"200":{"description":"A role representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a role","requestBody":{"description":"A role representation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleDto"}}}},"responses":{"200":{"description":"A role representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a role","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"role_id","in":"path","description":"A role ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/resourceConfig":{"get":{"summary":"Get a resource's sync pair configuration information","responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/resourceConfig":{"get":{"summary":"Get a resource's sync pair configuration information","responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/resourceConfig/{arn}":{"get":{"summary":"Retrieve a resource's sync pair configuration information","responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a resource's sync pair configuration information","requestBody":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a resource's sync pair configuration information","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}],"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/resourceConfig/{arn}":{"get":{"summary":"Retrieve a resource's sync pair configuration information","responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a resource's sync pair configuration information","requestBody":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"responses":{"200":{"description":"A sync pair resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a resource's sync pair configuration information","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}],"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}]},"/api/accounts/{account_id}/syncPairs/{src_aws_account_id}/{src_region}/{tgt_aws_account_id}/{tgt_region}/resourceConfigs":{"put":{"summary":"Update multiple resources sync pair configuration information.","description":"This API takes, and returns a SyncPairResourceConfigsDto, which has one field, configs.\n  configs: A set of (Arn, SyncPairResourceConfigDto) tuples.\nIf any of the configs could not get applied properly, then the old (unchanged) config will be returned. It's up to the caller to look at the returned configs to see if they were all updated properly.\n","requestBody":{"description":"A collection of resource configurations to update.","content":{"application/json":{}}},"responses":{"200":{"description":"A collection of updated resource configurations.","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"src_region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"tgt_aws_account_id","in":"path","description":"The recovery (target) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":"012345678901"},{"name":"tgt_region","in":"path","description":"The recovery (target) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-west-2"}]},"/api/accounts/{account_id}/syncPairs/{src_endpoint_uri}/{tgt_endpoint_uri}/resourceConfigs":{"put":{"summary":"Update multiple resources sync pair configuration information.","description":"This API takes, and returns a SyncPairResourceConfigsDto, which has one field, configs.\n  configs: A set of (Arn, SyncPairResourceConfigDto) tuples.\nIf any of the configs could not get applied properly, then the old (unchanged) config will be returned. It's up to the caller to look at the returned configs to see if they were all updated properly.\n","requestBody":{"description":"A collection of resource configurations to update.","content":{"application/json":{}}},"responses":{"200":{"description":"A collection of updated resource configurations.","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"src_endpoint_uri","in":"path","description":"The endpoint URI of the primary (source) environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"tgt_endpoint_uri","in":"path","description":"The endpoint URI of the recovery (target) environment","required":true,"schema":{"type":"string"},"example":"aws:012345678901:us-west-2"}]},"/api/accounts/{account_id}/syncSources":{"get":{"summary":"List sync sources","description":"A sync source is an endpoint, identified by an AWS account ID and region, that is the primary (source) side of a sync pair.\nSync sources are not explicitly created.  Instead, Arpio creates them automatically when sync pairs are created, based on the configured applications in an Arpio account.\n","responses":{"200":{"description":"An array of sync source representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}}]},"/api/accounts/{account_id}/syncSources/{aws_account_id}/{region}":{"get":{"summary":"Get a sync source","responses":{"200":{"description":"A sync source representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"}]},"/api/accounts/{account_id}/syncSources/{endpoint_uri}":{"get":{"summary":"Get a sync source","responses":{"200":{"description":"A sync source representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"}]},"/api/accounts/{account_id}/syncSources/{aws_account_id}/{region}/issues":{"get":{"summary":"Get issues encountered while protecting resources in this sync source","responses":{"200":{"description":"An array of sync source issue representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"}]},"/api/accounts/{account_id}/syncSources/{endpoint_uri}/issues":{"get":{"summary":"Get issues encountered while protecting resources in this sync source","responses":{"200":{"description":"An array of sync source issue representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"}]},"/api/accounts/{account_id}/syncSources/{aws_account_id}/{region}/scan":{"post":{"summary":"Scan the sync source for resources Arpio can protect","description":"Arpio scans sync sources automatically based on the recovery point objective (RPO) configured in applications that share a sync source.  This API endpoint starts the scan process if it is not already running.\nResource scanning is an asynchronous process.  This endpoint returns before the process starts.  The response contains the server's timestamp, which can be checked against the values in the sync source representation to determine whether the scanning process has finished.\n","requestBody":{"description":"A scan request representation","content":{"application/json":{}}},"responses":{"200":{"description":"An object containing the timestamp that the scan process started","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"}]},"/api/accounts/{account_id}/syncSources/{endpoint_uri}/scan":{"post":{"summary":"Scan the sync source for resources Arpio can protect","description":"Arpio scans sync sources automatically based on the recovery point objective (RPO) configured in applications that share a sync source.  This API endpoint starts the scan process if it is not already running.\nResource scanning is an asynchronous process.  This endpoint returns before the process starts.  The response contains the server's timestamp, which can be checked against the values in the sync source representation to determine whether the scanning process has finished.\n","requestBody":{"description":"A scan request representation","content":{"application/json":{}}},"responses":{"200":{"description":"An object containing the timestamp that the scan process started","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"}]},"/api/accounts/{account_id}/syncSources/{aws_account_id}/{region}/resources":{"get":{"summary":"List a sync source's primary (source) endpoint resources","description":"The response includes information about resources that was gathered during the last refresh operation.\n","responses":{"200":{"description":"An array of primary (source) resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"The primary (source) endpoint's AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) endpoint's AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"}]},"/api/accounts/{account_id}/syncSources/{endpoint_uri}/resources":{"get":{"summary":"List a sync source's primary (source) endpoint resources","description":"The response includes information about resources that was gathered during the last refresh operation.\n","responses":{"200":{"description":"An array of primary (source) resource representations","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"}]},"/api/accounts/{account_id}/syncSources/{aws_account_id}/{region}/resourceConfig/{arn}":{"get":{"summary":"Retrieve a resource's sync source configuration information","responses":{"200":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a resource's sync source configuration information","requestBody":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"responses":{"200":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a resource's sync source configuration information","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"aws_account_id","in":"path","description":"The primary (source) AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be deleted","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}],"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"aws_account_id","in":"path","description":"The primary (source) AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}]},"/api/accounts/{account_id}/syncSources/{endpoint_uri}/resourceConfig/{arn}":{"get":{"summary":"Retrieve a resource's sync source configuration information","responses":{"200":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a resource's sync source configuration information","requestBody":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"responses":{"200":{"description":"A sync source resource configuration representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a resource's sync source configuration information","parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"aws_account_id","in":"path","description":"The primary (source) AWS account ID","required":true,"schema":{"type":"string"},"example":123456789012},{"name":"region","in":"path","description":"The primary (source) AWS region","required":true,"schema":{"type":"string"},"example":"us-east-1"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be deleted","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}],"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"account_id","in":"path","description":"An Arpio account ID","required":true,"schema":{"type":"string"}},{"name":"endpoint_uri","in":"path","description":"The endpoint URI of the primary environment","required":true,"schema":{"type":"string"},"example":"aws:123456789012:us-east-1"},{"name":"arn","in":"path","description":"The ARN of the resource whose configuration is to be updated","required":true,"schema":{"type":"string"},"example":"arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"}]},"/api/users/{user_id}":{"get":{"summary":"Get a native IdP user","responses":{"200":{"description":"A user representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"put":{"summary":"Update a native IdP user","requestBody":{"description":"A user representation","content":{"application/json":{}}},"responses":{"200":{"description":"A user representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}},"delete":{"summary":"Delete a native IdP user","responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}},"parameters":[{"name":"user_id","in":"path","description":"A user ID","required":true,"schema":{"type":"string"}}]},"/api/users/login":{"post":{"security":[],"summary":"Authenticate to the native IdP","description":"This endpoint accepts email and password credentials and returns an result containing an authentication token that must be presented to `/auth/nativeAcs` to create an authenticated session.\n","requestBody":{"description":"An object containing `email` and `password`","content":{"application/json":{}}},"responses":{"200":{"description":"An object containing `nativeAuthToken` that can be presented to `/auth/nativeAcs`\n","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/users/register":{"post":{"security":[],"summary":"Register a user in the native IdP","requestBody":{"description":"A user representation","content":{"application/json":{}}},"responses":{"200":{"description":"An object containing `nativeAuthToken` that can be presented to `/auth/nativeAcs`\n","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/users/resetPassword":{"post":{"security":[],"summary":"Start the password reset process for a native IdP user","description":"Sends an email to the user with the specified email to begin the password reset process.\n","requestBody":{"description":"An object containing `email`","content":{"application/json":{}}},"responses":{"204":{"description":"An empty response indicating success"},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/users/previewResetPassword":{"get":{"security":[],"summary":"Gets information about a password reset process that is in progress","description":"The response contains information the user can use to verify that the password reset email they received is authentic (that is, it was sent by Arpio and is for the correct native IdP user).\n","parameters":[{"name":"passwordResetToken","in":"query","description":"The token that was included in the URL in the password reset email","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A user representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/users/finishResetPassword":{"post":{"security":[],"summary":"Finish the password reset process for a native IdP user","requestBody":{"description":"An object containing `passwordResetToken` and `newPassword`","content":{"application/json":{}}},"responses":{"200":{"description":"A user representation","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azure/templates/arpioPrimaryAccess.json":{"get":{"security":[],"summary":"Get the Azure Resource Manager (ARM) template for primary access","responses":{"200":{"description":"A JSON-formatted ARM template","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azure/templates/arpioRecoveryAccess.json":{"get":{"security":[],"summary":"Get the Azure Resource Manager (ARM) template for recovery access","responses":{"200":{"description":"A JSON-formatted ARM template","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}},"/api/azure/templates/arpioFailbackAccess.json":{"get":{"security":[],"summary":"Get the Azure Resource Manager (ARM) template for failback access","responses":{"200":{"description":"A JSON-formatted ARM template","content":{"application/json":{}}},"default":{"$ref":"#/components/responses/error-response"}}}}},"info":{"title":"Arpio API","version":"2026-04-13-16-02-ed050938bfa86a18a2e7f4c16ac066854b9704b6"},"openapi":"3.0.3","components":{"schemas":{"AccountSubjectGroupDto":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"externalId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{0,64}$"},"accountSubjects":{"type":"array","items":{"type":"string"}},"roles":{"type":"array","items":{"type":"string"}}}},"AccountSubjectCreateDto":{"type":"object","required":["identityProviderId","email"],"properties":{"identityProviderId":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}}},"AccountSubjectDto":{"type":"object","properties":{"identityProviderId":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}}},"AccountSubjectUpdateDto":{"type":"object","properties":{"identityProviderId":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}}},"BulkAccountSubjectDto":{"type":"object","required":["identityProviderId","email"],"properties":{"identityProviderId":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"groups":{"type":"array","items":{"type":"string"}}}},"ApiKeyDto":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}}}},"ApplicationSetDto":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"apps":{"type":"array","items":{"type":"string"}}}},"RoleDto":{"type":"object","required":["name","policies"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"externalId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{0,64}$"},"policies":{"type":"array","items":{"$ref":"#/components/schemas/RolePolicyDto"}}}},"RolePolicyDto":{"type":"object","required":["accessLevel"],"properties":{"accessLevel":{"type":"string"},"appIds":{"type":"array","items":{"type":"string"}},"appSetIds":{"type":"array","items":{"type":"string"}},"allApps":{"type":"boolean"}}}},"responses":{"cors-response":{"description":"CORS response","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}},"head-response":{"description":"HEAD response"},"error-response":{"description":"Error response","content":{"application/json":{}}}},"securitySchemes":{"SessionCookieAuth":{"type":"apiKey","in":"cookie","name":"ArpioSession","description":"Cookie-based session authentication"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"API key authentication"}}},"servers":[{"url":"https://api.arpio.io/"}]}