openapi: 3.0.0 info: version: 1.0-rev0 title: Veeam Backup for AWS public API 1.0 Agents Users API description: The Agents section defines paths and operations for managing recovery tokens used for bare metal recovery. security: - Bearer: [] tags: - name: Users paths: /api/v1/users: get: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: UsersGetAll parameters: - name: SearchPattern in: query required: false x-veeam-spec: $ref: '#/components/schemas/UsersFilters' schema: type: string - name: Sort in: query required: false x-veeam-spec: $ref: '#/components/schemas/UsersFilters' explode: true schema: type: array items: type: string enum: - nameAsc - nameDesc - descriptionAsc - descriptionDesc - isDefaultAsc - isDefaultDesc - mfaEnabledAsc - mfaEnabledDesc uniqueItems: false - name: Offset in: query required: false x-veeam-spec: $ref: '#/components/schemas/UsersFilters' schema: type: integer format: int32 minimum: 0 - name: Limit in: query required: false x-veeam-spec: $ref: '#/components/schemas/UsersFilters' schema: type: integer format: int32 minimum: -1 - $ref: '#/components/parameters/apiVersionParam' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UsersPage' application/problem+json: schema: $ref: '#/components/schemas/UsersPage' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: CreateUser parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserCreateSpec' application/json: schema: $ref: '#/components/schemas/UserCreateSpec' text/json: schema: $ref: '#/components/schemas/UserCreateSpec' application/*+json: schema: $ref: '#/components/schemas/UserCreateSpec' application/csp-report: schema: $ref: '#/components/schemas/UserCreateSpec' responses: '201': description: Success content: application/json: schema: $ref: '#/components/schemas/User' application/problem+json: schema: $ref: '#/components/schemas/User' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/{userId}: get: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: UsersGetByName parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' application/problem+json: schema: $ref: '#/components/schemas/User' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' put: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: UpdateUser parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserUpdateSpec' application/json: schema: $ref: '#/components/schemas/UserUpdateSpec' text/json: schema: $ref: '#/components/schemas/UserUpdateSpec' application/*+json: schema: $ref: '#/components/schemas/UserUpdateSpec' application/csp-report: schema: $ref: '#/components/schemas/UserUpdateSpec' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' application/problem+json: schema: $ref: '#/components/schemas/User' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' delete: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: DeleteUser parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' responses: '204': description: Success '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/validateName: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: ValidateName parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserNameValidationSpec' application/json: schema: $ref: '#/components/schemas/UserNameValidationSpec' text/json: schema: $ref: '#/components/schemas/UserNameValidationSpec' application/*+json: schema: $ref: '#/components/schemas/UserNameValidationSpec' application/csp-report: schema: $ref: '#/components/schemas/UserNameValidationSpec' responses: '200': description: Success content: application/json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' application/problem+json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/validateDescription: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: ValidateDescription parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserDescriptionValidationSpec' application/json: schema: $ref: '#/components/schemas/UserDescriptionValidationSpec' text/json: schema: $ref: '#/components/schemas/UserDescriptionValidationSpec' application/*+json: schema: $ref: '#/components/schemas/UserDescriptionValidationSpec' application/csp-report: schema: $ref: '#/components/schemas/UserDescriptionValidationSpec' responses: '200': description: Success content: application/json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' application/problem+json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/validatePassword: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: ValidatePassword parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserPasswordValidationSpec' application/json: schema: $ref: '#/components/schemas/UserPasswordValidationSpec' text/json: schema: $ref: '#/components/schemas/UserPasswordValidationSpec' application/*+json: schema: $ref: '#/components/schemas/UserPasswordValidationSpec' application/csp-report: schema: $ref: '#/components/schemas/UserPasswordValidationSpec' responses: '200': description: Success content: application/json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' application/problem+json: schema: uniqueItems: false type: array items: $ref: '#/components/schemas/ValidationMessage' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/{userId}/enableMfa: post: tags: - Users operationId: EnableMfa parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserMfaSetup' application/json: schema: $ref: '#/components/schemas/UserMfaSetup' text/json: schema: $ref: '#/components/schemas/UserMfaSetup' application/*+json: schema: $ref: '#/components/schemas/UserMfaSetup' application/csp-report: schema: $ref: '#/components/schemas/UserMfaSetup' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UserMfaData' application/problem+json: schema: $ref: '#/components/schemas/UserMfaData' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/{userId}/disableMfa: post: tags: - Users operationId: DisableMfa parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' responses: '200': description: Success '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/{userId}/acceptMfa: post: tags: - Users operationId: AcceptMfa parameters: - name: userId in: path required: true schema: type: string - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UserMfaAccept' application/json: schema: $ref: '#/components/schemas/UserMfaAccept' text/json: schema: $ref: '#/components/schemas/UserMfaAccept' application/*+json: schema: $ref: '#/components/schemas/UserMfaAccept' application/csp-report: schema: $ref: '#/components/schemas/UserMfaAccept' responses: '201': description: Success '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. One or more resources specified in the request could not be found in the specified resource collection. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' /api/v1/users/isFirstLogin: get: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: IsFirstLogin parameters: - $ref: '#/components/parameters/apiVersionParam' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/IsFirstLoginResult' application/problem+json: schema: $ref: '#/components/schemas/IsFirstLoginResult' '400': description: Bad Request. The request body is malformed, incomplete or otherwise invalid. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' security: [] /api/v1/users/checkInstanceId: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: CheckInstance parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json: schema: $ref: '#/components/schemas/CheckInstanceIdSpec' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CheckInstanceIdResult' application/problem+json: schema: $ref: '#/components/schemas/CheckInstanceIdResult' '400': description: Bad Request. The request body is malformed, incomplete or otherwise invalid. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' security: [] /api/v1/users/createDefaultUser: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: CreateDefaultUser parameters: - $ref: '#/components/parameters/apiVersionParam' requestBody: content: application/json: schema: $ref: '#/components/schemas/DefaultUserSpec' required: true responses: '201': description: Success content: application/json: schema: $ref: '#/components/schemas/User' application/problem+json: schema: $ref: '#/components/schemas/User' '400': description: Bad Request. The request body is malformed, incomplete or otherwise invalid. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden. The user sending a request does not have adequate privileges to access one or more objects specified in the request. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '409': description: The license agreement has not been accepted. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: application/json: schema: $ref: '#/components/schemas/Error' application/problem+json: schema: $ref: '#/components/schemas/Error' security: [] /api/v1/users/export: post: x-veeam-authorize: roles: - Portal Administrator tags: - Users operationId: ExportUsers parameters: - $ref: '#/components/parameters/apiVersionParam' responses: '200': description: Success content: text/csv: schema: type: string format: binary application/xml: schema: type: string format: binary '401': description: Unauthorized. The authorization header has been expected but not found (or found but is expired). content: text/csv: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error. The request has been received but could not be completed because of an internal error at the server side. content: text/csv: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/Error' components: schemas: Link: required: - rel - href - method type: object properties: rel: type: string href: type: string method: type: string enum: - GET - POST - PUT - DELETE ValidationMessage: type: object properties: severity: enum: - Warning - Error type: string message: type: string contextId: type: string format: uuid UserMfaData: type: object properties: userName: type: string qrString: type: string secretKey: type: string scratchCodes: uniqueItems: false type: array items: type: string token: type: string IsFirstLoginResult: type: object required: - isFirstLogin properties: isFirstLogin: type: boolean UserMfaAccept: required: - code - token type: object properties: code: minLength: 1 type: string token: minLength: 1 type: string UserDescriptionValidationSpec: required: - description type: object properties: description: type: string Error: description: '' required: - type - title - status - errorCode type: object properties: type: type: string format: uri description: An URI reference that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type (e.g. using HTML). title: type: string description: A short, summary of the problem type. Written in English and readable for engineers (usually not suited for non technical stakeholders and not localized) status: type: integer format: int32 description: The HTTP status code generated by the origin server for this occurrence of the problem. minimum: 400 maximum: 600 exclusiveMaximum: true errorCode: description: The error code is a string that uniquely identifies an error condition and should be understood by programs that detect and handle errors by type enum: - AccessDenied - ExpiredToken - InvalidToken - InvalidURI - MethodNotAllowed - NotFound - NotImplemented - ServiceUnavailable - UnexpectedContent - UnknownError type: string details: description: The error message contains a generic description of the error condition in English. It is intended for a human audience type: string instance: description: ID of the object that is involved in the error (or empty) type: string format: uri data: type: object description: Error payload additionalProperties: type: object UserCreateSpec: required: - name - description - password type: object properties: name: minLength: 1 type: string description: type: string password: minLength: 1 type: string CheckInstanceIdResult: type: object required: - isValid properties: isValid: type: boolean UserUpdateSpec: type: object properties: description: type: string password: type: string oldPassword: type: string UserMfaSetup: type: object properties: recreate: type: boolean DefaultUserSpec: type: object required: - instance - userSpec properties: instance: $ref: '#/components/schemas/CheckInstanceIdSpec' userSpec: $ref: '#/components/schemas/UserCreateSpec' UsersFilters: type: object properties: searchPattern: type: string offset: type: integer format: int32 minimum: 0 limit: type: integer format: int32 minimum: -1 sort: type: array items: $ref: '#/components/schemas/UsersSortColumns' uniqueItems: false CheckInstanceIdSpec: type: object required: - instanceId properties: instanceId: type: string User: required: - name - description - mfaEnabled - isDefault type: object properties: name: type: string description: type: string mfaEnabled: type: boolean isDefault: type: boolean _links: type: array uniqueItems: false items: $ref: '#/components/schemas/Link' UserNameValidationSpec: required: - name type: object properties: name: minLength: 1 type: string UserPasswordValidationSpec: required: - password type: object properties: password: minLength: 1 type: string UsersSortColumns: type: string enum: - nameAsc - nameDesc - descriptionAsc - descriptionDesc - isDefaultAsc - isDefaultDesc - mfaEnabledAsc - mfaEnabledDesc UsersPage: required: - totalCount - results type: object properties: totalCount: format: int32 type: integer results: uniqueItems: false type: array items: $ref: '#/components/schemas/User' _links: type: array uniqueItems: false items: $ref: '#/components/schemas/Link' parameters: apiVersionParam: name: x-api-version in: header required: true schema: type: string default: 1.0-rev0 securitySchemes: Bearer: name: Authorization in: header type: apiKey description: Bearer \