openapi: 3.0.1 info: description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.' title: Integration API - Consumer to Extole Audiences Users API version: '1.0' servers: - description: Production url: https://{brand}.extole.io variables: brand: default: yourcompany description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io) security: - HEADER: [] - QUERY: [] - COOKIE: [] tags: - name: Users paths: /v2/users: get: description: Returns all staff user accounts with access to the Extole console. Use the `scope` query parameter to restrict results to the current account or retrieve all accessible users. operationId: listUsers parameters: - description: 'accepts values: ''account''|''all''' in: query name: scope schema: default: account nullable: true type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/UserResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List users tags: - Users x-extole-bundle: management x-extole-visibility: visible post: description: Creates a new staff user account with access to the Extole console. Returns the created user with its server-assigned id. An invitation email is sent to the new user. operationId: createUser requestBody: content: application/json: example: email: email first_name: first_name last_name: last_name password: password scopes: - CLIENT_ADMIN schema: $ref: '#/components/schemas/UserCreationRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' common_password: $ref: '#/components/examples/common_password' duplicate_user: $ref: '#/components/examples/duplicate_user' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_password_change_limit: $ref: '#/components/examples/invalid_password_change_limit' invalid_password_length: $ref: '#/components/examples/invalid_password_length' invalid_password_strength_letters_digits: $ref: '#/components/examples/invalid_password_strength_letters_digits' invalid_password_strength_letters_digits_punctuation: $ref: '#/components/examples/invalid_password_strength_letters_digits_punctuation' invalid_user_email: $ref: '#/components/examples/invalid_user_email' invalid_user_first_name: $ref: '#/components/examples/invalid_user_first_name' invalid_user_last_name: $ref: '#/components/examples/invalid_user_last_name' missing_request_body: $ref: '#/components/examples/missing_request_body' password_already_used: $ref: '#/components/examples/password_already_used' unauthorized_scope: $ref: '#/components/examples/unauthorized_scope' user_scopes_missing: $ref: '#/components/examples/user_scopes_missing' user_self_scopes_update: $ref: '#/components/examples/user_self_scopes_update' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' account_disabled: $ref: '#/components/examples/account_disabled' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Create a user tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/{userId}: get: description: Returns the staff user account for the specified id. operationId: getUser parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a user tags: - Users x-extole-bundle: management x-extole-visibility: visible put: description: Updates the staff user account. Only fields present in the request body are changed. Returns the updated user. operationId: updateUser parameters: - in: path name: userId required: true schema: type: string requestBody: content: application/json: example: email: email first_name: first_name last_name: last_name password: password scopes: - CLIENT_ADMIN schema: $ref: '#/components/schemas/UserUpdateRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' common_password: $ref: '#/components/examples/common_password' duplicate_user: $ref: '#/components/examples/duplicate_user' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_password_change_limit: $ref: '#/components/examples/invalid_password_change_limit' invalid_password_length: $ref: '#/components/examples/invalid_password_length' invalid_password_strength_letters_digits: $ref: '#/components/examples/invalid_password_strength_letters_digits' invalid_password_strength_letters_digits_punctuation: $ref: '#/components/examples/invalid_password_strength_letters_digits_punctuation' invalid_user_email: $ref: '#/components/examples/invalid_user_email' invalid_user_first_name: $ref: '#/components/examples/invalid_user_first_name' invalid_user_id: $ref: '#/components/examples/invalid_user_id' invalid_user_last_name: $ref: '#/components/examples/invalid_user_last_name' missing_request_body: $ref: '#/components/examples/missing_request_body' password_already_used: $ref: '#/components/examples/password_already_used' unauthorized_scope: $ref: '#/components/examples/unauthorized_scope' user_scopes_missing: $ref: '#/components/examples/user_scopes_missing' user_self_scopes_update: $ref: '#/components/examples/user_self_scopes_update' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' account_disabled: $ref: '#/components/examples/account_disabled' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update a user tags: - Users x-extole-bundle: management x-extole-visibility: visible delete: description: Deactivates and removes the staff user account, revoking all console access. operationId: deleteUser parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a user tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/{user_id}/properties: get: description: Returns all per-user property overrides for the specified staff user. operationId: listUserProperties parameters: - in: path name: user_id required: true schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/PropertyResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List user properties tags: - Users x-extole-bundle: management x-extole-visibility: visible post: description: Creates a new per-user property override for the specified staff user. Returns the created property. operationId: createUserProperty parameters: - in: path name: user_id required: true schema: type: string requestBody: content: application/json: example: name: name value: value schema: $ref: '#/components/schemas/PropertyCreationRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3: $ref: '#/components/examples/use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' duplicate_property: $ref: '#/components/examples/duplicate_property' invalid_length_name: $ref: '#/components/examples/invalid_length_name' invalid_length_value: $ref: '#/components/examples/invalid_length_value' invalid_name: $ref: '#/components/examples/invalid_name' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' null_value: $ref: '#/components/examples/null_value' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Create a user property tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/{user_id}/properties/{name}: get: description: Returns the per-user property override for the specified user and property name. operationId: getUserProperty parameters: - in: path name: user_id required: true schema: type: string - in: path name: name required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_name: $ref: '#/components/examples/invalid_name' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a user property tags: - Users x-extole-bundle: management x-extole-visibility: visible put: description: Updates the per-user property override for the specified staff user and property name. Returns the updated property. operationId: updateUserProperty parameters: - in: path name: user_id required: true schema: type: string - in: path name: name required: true schema: type: string requestBody: content: application/json: example: value: value schema: $ref: '#/components/schemas/PropertyUpdateRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3: $ref: '#/components/examples/use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_length_name: $ref: '#/components/examples/invalid_length_name' invalid_length_value: $ref: '#/components/examples/invalid_length_value' invalid_name: $ref: '#/components/examples/invalid_name' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' null_value: $ref: '#/components/examples/null_value' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update a user property tags: - Users x-extole-bundle: management x-extole-visibility: visible delete: description: Removes the per-user property override for the specified staff user and property name. operationId: deleteUserProperty parameters: - in: path name: user_id required: true schema: type: string - in: path name: name required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_name: $ref: '#/components/examples/invalid_name' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a user property tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/password-reset: post: description: Initiates a password reset flow for the staff user identified by the request. A password-reset email is sent to the user's registered address. operationId: resetUserPassword requestBody: content: application/json: example: email: email schema: $ref: '#/components/schemas/PasswordResetRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' email_invalid: $ref: '#/components/examples/email_invalid' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '403': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Reset user password tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/resend-invite-email: post: description: Resends the invitation email to a staff user who has not yet accepted their invitation. operationId: resendUserInviteEmail requestBody: content: application/json: example: access_token: access_token schema: $ref: '#/components/schemas/ResendInviteEmailRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Resend user invite email tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/{userId}/unlock: post: description: Unlocks a staff user account that has been locked due to failed login attempts, restoring console access. operationId: unlockUser parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Unlock a user tags: - Users x-extole-bundle: management x-extole-visibility: visible /v2/users/update-password: put: description: Updates the password for the authenticated staff user account. operationId: updateUserPassword requestBody: content: application/json: example: password: password schema: $ref: '#/components/schemas/UserPasswordUpdateRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' common_password: $ref: '#/components/examples/common_password' duplicate_user: $ref: '#/components/examples/duplicate_user' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_password_change_limit: $ref: '#/components/examples/invalid_password_change_limit' invalid_password_length: $ref: '#/components/examples/invalid_password_length' invalid_password_strength_letters_digits: $ref: '#/components/examples/invalid_password_strength_letters_digits' invalid_password_strength_letters_digits_punctuation: $ref: '#/components/examples/invalid_password_strength_letters_digits_punctuation' invalid_user_email: $ref: '#/components/examples/invalid_user_email' invalid_user_first_name: $ref: '#/components/examples/invalid_user_first_name' invalid_user_id: $ref: '#/components/examples/invalid_user_id' invalid_user_last_name: $ref: '#/components/examples/invalid_user_last_name' missing_request_body: $ref: '#/components/examples/missing_request_body' password_already_used: $ref: '#/components/examples/password_already_used' unauthorized_scope: $ref: '#/components/examples/unauthorized_scope' user_scopes_missing: $ref: '#/components/examples/user_scopes_missing' user_self_scopes_update: $ref: '#/components/examples/user_self_scopes_update' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' account_disabled: $ref: '#/components/examples/account_disabled' invalid_scope: $ref: '#/components/examples/invalid_scope' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update user password tags: - Users x-extole-bundle: management x-extole-visibility: visible components: examples: invalid_json: summary: invalid_json value: code: invalid_json http_status_code: 400 message: JSON is invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_length_name: summary: invalid_length_name value: code: invalid_length_name http_status_code: 403 message: Name must be between 2 and 255 characters parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_scope: summary: invalid_scope value: code: invalid_scope http_status_code: 403 message: Invalid scope parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 user_scopes_missing: summary: user_scopes_missing value: code: user_scopes_missing http_status_code: 400 message: User must have at least one scope parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_password_strength_letters_digits: summary: invalid_password_strength_letters_digits value: code: invalid_password_strength_letters_digits http_status_code: 400 message: Password is too weak, it must contain at least one digit, one lowercase, and one uppercase letter parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_access_token: summary: missing_access_token value: code: missing_access_token http_status_code: 403 message: No access_token was provided with this request. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 payment_required: summary: payment_required value: code: payment_required http_status_code: 402 message: The access_token provided is associated with an unpaid account. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 unauthorized_scope: summary: unauthorized_scope value: code: unauthorized_scope http_status_code: 400 message: User is not authorized to have the specified role parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_length_value: summary: invalid_length_value value: code: invalid_length_value http_status_code: 403 message: Value must be under 255 characters parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 null_value: summary: null_value value: code: null_value http_status_code: 403 message: Value cannot be null parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 duplicate_property: summary: duplicate_property value: code: duplicate_property http_status_code: 403 message: Property already exists parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 unsupported_media_type: summary: unsupported_media_type value: code: unsupported_media_type http_status_code: 415 message: Request had an unsupported or no media type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 method_unauthorized: summary: method_unauthorized value: code: method_unauthorized http_status_code: 401 message: Unauthorized access to this endpoint parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 common_password: summary: common_password value: code: common_password http_status_code: 400 message: Password is too weak parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 account_disabled: summary: account_disabled value: code: account_disabled http_status_code: 403 message: The credentials provided with this request are invalid. Account has been disabled. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_password_length: summary: invalid_password_length value: code: invalid_password_length http_status_code: 400 message: Password is too short parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_request_body: summary: missing_request_body value: code: missing_request_body http_status_code: 400 message: Missing request body parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3: summary: use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3 value: code: use_legacy_label_targeting_client_property_is_only_supported_with_targeting_v3 http_status_code: 400 message: '"use_legacy_label_targeting" client property is only supported by clients using targeting V3' parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_password_strength_letters_digits_punctuation: summary: invalid_password_strength_letters_digits_punctuation value: code: invalid_password_strength_letters_digits_punctuation http_status_code: 400 message: Password is too weak, it must contain at least one digit, one lowercase letter, one uppercase letter, and one punctuation mark parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 binding_error: summary: binding_error value: code: binding_error http_status_code: 400 message: Argument is not of the expected type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 access_denied: summary: access_denied value: code: access_denied http_status_code: 403 message: The access_token provided is not permitted to access the specified resource. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 email_invalid: summary: email_invalid value: code: email_invalid http_status_code: 400 message: The provided email address is invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 too_many_requests: summary: too_many_requests value: code: too_many_requests http_status_code: 429 message: The server is unable to process your request at the moment, please retry later. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_user_email: summary: invalid_user_email value: code: invalid_user_email http_status_code: 400 message: The provided user email was invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_user_first_name: summary: invalid_user_first_name value: code: invalid_user_first_name http_status_code: 400 message: The provided user first name was invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_user_id: summary: invalid_user_id value: code: invalid_user_id http_status_code: 400 message: Invalid user id parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_parameter: summary: invalid_parameter value: code: invalid_parameter http_status_code: 400 message: Parameter is invalid. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_user_last_name: summary: invalid_user_last_name value: code: invalid_user_last_name http_status_code: 400 message: The provided user last name was invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 user_self_scopes_update: summary: user_self_scopes_update value: code: user_self_scopes_update http_status_code: 400 message: User cannot update its own scopes parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_password_change_limit: summary: invalid_password_change_limit value: code: invalid_password_change_limit http_status_code: 400 message: 'Password has been changed too many times. Your account has been disabled. Please contact: support@extole.com' parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 password_already_used: summary: password_already_used value: code: password_already_used http_status_code: 400 message: Password had already been used, choose another one parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_name: summary: invalid_name value: code: invalid_name http_status_code: 400 message: The provided client name was invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 duplicate_user: summary: duplicate_user value: code: duplicate_user http_status_code: 400 message: User already exists parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 schemas: UserResponse: properties: email: type: string first_name: type: string last_logged_in: type: string last_name: type: string locked: type: boolean scopes: items: enum: - CLIENT_ADMIN - CLIENT_SUPERUSER - SELF_SERVICE - USER_SUPPORT type: string type: array uniqueItems: true user_id: type: string required: - email - first_name - last_logged_in - last_name - locked - scopes - user_id type: object PasswordResetRequest: properties: email: type: string required: - email type: object PropertyResponse: properties: name: type: string value: type: string required: - name - value type: object UserPasswordUpdateRequest: description: Body of a `PUT /v2/users/update-password` request. properties: password: type: string required: - password type: object ResendInviteEmailRequest: properties: access_token: type: string required: - access_token type: object UserUpdateRequest: description: Body of a `PUT /v2/users/{userId}` request. properties: email: type: string first_name: nullable: true type: string last_name: nullable: true type: string password: type: string scopes: items: enum: - CLIENT_ADMIN - CLIENT_SUPERUSER - SELF_SERVICE - USER_SUPPORT type: string type: array uniqueItems: true type: object PropertyUpdateRequest: description: Body of a `PUT /v2/users/{user_id}/properties/{name}` request. properties: value: nullable: true type: string required: - value type: object UserCreationRequest: properties: email: type: string first_name: type: string last_name: type: string password: type: string scopes: items: enum: - CLIENT_ADMIN - CLIENT_SUPERUSER - SELF_SERVICE - USER_SUPPORT type: string type: array uniqueItems: true required: - email type: object PropertyCreationRequest: properties: name: type: string value: type: string required: - name - value type: object SuccessResponse: properties: status: type: string required: - status type: object RestExceptionResponse: description: Represents the API error response properties: code: description: Specific error code for this error type, documented per endpoint type: string http_status_code: description: HTTP status code that was returned with this error, useful if client get response code format: int32 type: integer message: description: User readable English description of the error type: string parameters: additionalProperties: description: Attributes related to the error, varies be error code, documented per endpoint type: object description: Attributes related to the error, varies be error code, documented per endpoint type: object unique_id: description: Unique id associated with this error, useful for discussions with Extole type: string required: - code - http_status_code - message - parameters - unique_id type: object securitySchemes: COOKIE: in: cookie name: extole_token type: apiKey HEADER: in: header name: Authorization type: apiKey x-bearer-format: bearer QUERY: in: query name: access_token type: apiKey x-tagGroups: - name: Integration API - Consumer to Extole tags: - Authentication - Content - Email - Events - Persons - Profile Assets - Profiles