openapi: 3.1.1 info: title: Profile Management description: 'APIs for managing user profiles. Operations related to profile management: Create, Get, Update, Delete, List profiles. Each profile supports at most 500 assigned users. See the Users API for assignment limits; profile updates are blocked when more than 500 users are assigned. ' version: 0.0.1 contact: name: Avaya API Team url: https://developers.avayacloud.com/avaya-infinity/ license: name: Avaya Software Development Kit (SDK) Software License Terms url: https://support.avaya.com/css/P8/documents/101038288 servers: - url: https://core.{customerId}.ec.avayacloud.com/api/config/v1 description: Production variables: customerId: description: Your organization identifier default: your-org-id security: - BearerAuth: [] tags: - name: Profile Management description: 'Operations related to profile management: Create, Get, Update, Delete, List profiles. ' paths: /profiles: post: tags: - Profile Management summary: Create Profile description: '**This API requires Account Administrator role.** Creates a new profile with license-type-specific default configurations. The system automatically applies appropriate defaults for permissions, attributes, spaces, and queues based on the specified license type: **License Types and Their Defaults:** - `nonAgent`: Limited permissions, minimal spaces (1 task, 1 email, 1 messaging) - `voiceOnlyAgent`: Voice-focused permissions, phone space (2 task, 1 phone) - `digitalOnlyAgent`: Digital channels, no phone (3 task, 2 email, 2 messaging) - `omniChannelAgent`: All channels except video (3 task, 2 email, 1 phone, 2 messaging) - `omniChannelAgentEnhanced`: All channels with enhanced features and session statistics - `hybridVoiceAgent`: Balanced voice and digital capabilities **Default Values Applied (if not provided):** - `appTheme`: ''light'' - `consoleTheme`: ''light'' - `timeZone`: the account''s configured default timezone - `interactionViewsType`: ''all'' - `modifyInteractionViews`: true - `allowInternalCalls`: false - License-specific permissions, attributes, spaces, and queue configurations Other optional fields (e.g. `deferEnabled`, `previewOutbound`, `predictiveOutbound`, `persistentMedia`, `rejectInteractions`, `ucPhoneSpaces`) are left unset unless provided; see each field''s description for its specific fallback behavior. **Validation Rules:** - Profile name must be unique within the account - License type must be valid for the account - Profile folder must exist (if folder ID is provided) - Location must exist (if location ID is provided) - location IDs are system-generated ' operationId: createProfile requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateProfileRequest' examples: nonAgentProfile: summary: Non-Agent Profile description: Create a profile for non-agent users with minimal permissions value: name: Observer Profile description: Profile for users who need read-only access licType: nonAgent voiceOnlyProfile: summary: Voice-Only Agent Profile description: Create a profile for voice-only agents value: name: Voice Support Profile description: Profile for phone-based support agents licType: voiceOnlyAgent profileFolderId: 073d010813b941cf7da111d147 omniChannelEnhancedProfile: summary: Omni-Channel Enhanced Profile description: Create a profile with enhanced features and session statistics value: name: Senior Agent Profile description: Profile for experienced agents with all features licType: omniChannelAgentEnhanced locationId: 022d01091776cc88fe6866b7ce appTheme: dark timeZone: America/Los_Angeles commTypeChangeDefaultValue: callback responses: '201': description: Profile created successfully content: application/json: schema: $ref: '#/components/schemas/Profile' examples: hybridVoiceAgentProfile: summary: Hybrid Voice Agent Profile Created description: Response showing a complete profile with license-specific defaults applied value: id: 16a7490f-86a6-4a14-8ce2-11682230adb6 accountId: 001d01022054849399088a81ad name: Senior Agent Profile description: Profile for experienced agents with all features licType: omniChannelAgentEnhanced locationId: 022d01091776cc88fe6866b7ce permissions: app: agent: read: true portal: app-web: true homeList: read: true queueList: read: true console: cx: read: false ml: read: false portal: console-web: false queues: read: false account: read: false numbers: read: false integrations: read: false queues: access: [] performance: [] autoLogin: [] proficiency: [] logins: [] defaultOutboundQueue: null outboundQueueId: null spaces: task: [] email: [] phone: [] video: [] messaging: [] tags: [] attributes: time: tz: America/Los_Angeles queue: multiAID: false autoPauseCount: 0 commTypeChange: false multiAIDMethod: '' outboundPermissions: task: false email: false phone: true video: false messaging: false commTypeChangeTimeout: 0 defaultLeaveEventToStatus: inbound: action: '' status: '' callback: action: '' status: '' outbound: action: '' status: '' commTypeChangeDefaultValue: '' taskSpaces: 0 emailSpaces: 0 phoneSpaces: 1 videoSpaces: 0 messagingSpaces: 0 sessionStats: enabled: true frequencyScalar: 5 frequencyUnit: minutes stats: cpuFree: true cpuUsage: true cpuCount: true cpuLoadOneMinute: true cpuLoadFiveMinutes: true cpuLoadFifteenMinutes: true memoryInfo: true freeMemoryPercentage: true pingGateway: true networkInterfaces: true pingHosts: - ping.avayacloud.com groups: - 007d01090301ad8db0f0d4c370 defaultOutboundCallerId: null appTheme: dark consoleTheme: light timeZone: America/Los_Angeles interactionViewsType: all definedInteractionViews: {} modifyInteractionViews: true commTypeChangeDefaultValue: callback createdAt: '2025-09-17T10:04:24.181Z' createdBy: 002d010826307dd6630992437b '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '409': $ref: '#/components/responses/ProfileNameExists' '422': $ref: '#/components/responses/ConstraintViolation' '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' get: tags: - Profile Management summary: List Profiles description: '**This API requires Account Administrator role.** Retrieves a paginated list of profiles with optional filtering and sorting capabilities. **Query Parameters:** - `pageNumber`: Page number (default: 1) - `pageSize`: Number of profiles per page (5-100, default: 10) - `orderBy`: Sort field and direction (e.g., "name", "updatedAt desc") - `filter`: Filter profiles by field (e.g., "name:Support*", "licType=agent", "description:customer") - `folderId`: Filter by folder ID (omit for all folders, empty string for root folder, 26-char ID for specific folder) - `includeSubfolders`: Include profiles from subfolders recursively (default: false, only effective with specific folder ID) - `updatedSince`: Filter by profiles updated since this UTC date/time (ISO 8601 format) - `updatedUntil`: Filter by profiles updated until this UTC date/time (ISO 8601 format) **Folder Filtering Behavior:** - **No `folderId` parameter**: Returns profiles from ALL folders in the account - **`folderId=""` (empty string)**: Returns only root folder profiles (profiles not in any folder) - **`folderId="073d01090149abae69f6305afe"`**: Returns profiles in that specific folder only - **`folderId="073d01090149abae69f6305afe"` + `includeSubfolders=true`**: Returns profiles from that folder AND all its subfolders recursively **Common Use Cases:** 1. **Get all profiles**: `/profiles` (no folder parameters) 2. **Get root folder profiles**: `/profiles?folderId=` 3. **Get specific folder profiles**: `/profiles?folderId=073d01090149abae69f6305afe` 4. **Get folder + all subfolders**: `/profiles?folderId=073d01090149abae69f6305afe&includeSubfolders=true` **Supported Order Fields:** name, description, licType, syncStatus, numUsers, createdBy, updatedBy, createdAt, updatedAt **Supported Filter Fields:** name, description, licType, syncStatus, createdBy, updatedBy, createdAt, updatedAt **Filter Formats:** - `field=value` - Exact match - `field:value*` - Prefix match (starts with) - `field:*value` - Suffix match (ends with) - `field:value` - Word match (contains) ' operationId: listProfiles parameters: - $ref: '#/components/parameters/pageNumber' - name: pageSize in: query description: Number of profiles per page required: false schema: type: integer format: int32 default: 10 minimum: 5 maximum: 100 - name: orderBy in: query description: Field to sort by with optional desc suffix required: false schema: type: string pattern: ^(name|description|licType|syncStatus|numUsers|createdBy|updatedBy|createdAt|updatedAt)( desc)?$ default: updatedAt desc examples: default: value: updatedAt desc summary: Most recently updated first nameAsc: value: name summary: Alphabetical by name descriptionAsc: value: description summary: Alphabetical by description licTypeAsc: value: licType summary: Sort by license type syncStatusAsc: value: syncStatus summary: Sort by job sync status numUsersDesc: value: numUsers desc summary: Most users first createdByDesc: value: createdBy desc summary: Sort by creator (descending) createdDesc: value: createdAt desc summary: Most recently created first - name: filter in: query required: false description: "Specifies details of a row filter on one profile field.\n\nThe possible fields that can be filtered\ \ on are:\n* name\n* description\n* licType\n* syncStatus\n* createdBy\n* updatedBy\n* createdAt\n* updatedAt\n\n\ The allowed format:\n- Begin with the column name to be filtered, followed by a `=` operator (used to match an exact\ \ string).\n- Or, begin with the column name to be filtered, followed by a colon, then:\n - Either an exact string\ \ to match, or\n - A string expression including the `*` wildcard character\n - `:{PREFIX}*` will be used\ \ to find values that start with the prefix.\n - `:*{POSTFIX}` will be used to find values that end with the\ \ postfix.\n - `:{WORD}` will be used to find values that contain the word.\n\nField names are case-sensitive.\n" schema: type: string maxLength: 255 examples: exactLicType: value: licType=hybridVoiceAgent summary: Exact license type match nameExact: value: name=Support Agent summary: Exact match on name namePrefix: value: name:Support* summary: Names starting with 'Support' namePostfix: value: name:*Agent summary: Names ending with 'Agent' nameContains: value: name:Customer summary: Names containing 'Customer' descriptionContains: value: description:customer summary: Description containing 'customer' createdByFilter: value: createdBy=002d010826307dd6630992437b summary: Filter by who created the profile - name: folderId in: query description: 'Filter profiles by folder location. This parameter controls which folder''s profiles are returned: - **If not provided (omitted)**: Returns profiles from ALL folders across the entire account (no folder filtering applied) - **Empty string ("")**: Returns profiles in the root folder only (profiles not assigned to any folder) - **26-character folder ID**: Returns profiles in the specified folder only (by default, does NOT include subfolders) **Subfolder Behavior:** - By default, subfolders are NOT searched - only profiles directly in the specified folder are returned - To include subfolders recursively, use the `includeSubfolders=true` parameter - When `includeSubfolders=true`, all profiles in the specified folder AND all its descendant folders are returned **Important Notes:** - Root folder profiles omit the `profileFolderId` property from the response - To search multiple specific folders (non-recursively), make separate API calls ' required: false schema: oneOf: - $ref: '#/components/schemas/FolderId' - type: string enum: - '' description: Empty string for root folder examples: allFolders: summary: All profiles from all folders (default behavior) description: When parameter is omitted entirely, profiles from all folders across the account are returned specificFolderOnly: value: 073d01090149abae69f6305afe summary: Profiles in specific folder only (excludes subfolders) description: Returns only profiles directly assigned to this folder, subfolders are excluded rootFolderOnly: value: '' summary: Root folder profiles only description: Returns only profiles not assigned to any folder - name: includeSubfolders in: query description: 'Controls whether to include profiles from subfolders when filtering by a specific folder. **Behavior:** - **false** (default): Returns only profiles directly in the specified folder - **true**: Returns profiles in the specified folder AND all its subfolders recursively **When this parameter takes effect:** - Only when `folderId` is provided and is a valid 26-character folder ID - Ignored when `folderId` is not provided (all folders) or is empty string (root folder) - When `folderId` points to root folder (""), subfolders cannot be included **Performance considerations:** - Recursive subfolder searches may take longer for deep folder hierarchies - Maximum recursion depth is limited to prevent performance issues ' required: false schema: type: boolean default: false examples: directFolderOnly: value: false summary: Direct folder only (default behavior) description: Include only profiles directly in the specified folder, exclude subfolders includeAllSubfolders: value: true summary: Include all subfolders recursively description: Include profiles from the specified folder and all its descendant folders - name: updatedSince in: query description: 'Filter profiles by their last update date. Returns only profiles that were updated on or after this date/time. **Format:** ISO 8601 date/time with timezone offset (e.g., `2024-01-01T00:00:00Z` or `2024-01-01T00:00:00-05:00`) **Behavior:** - Compares against the profile''s `updatedAt` field (automatically maintained by the database) - Can be used alone or combined with `updatedUntil` for date range filtering - When used with `updatedUntil`, must be less than `updatedUntil` **Use Cases:** - Get profiles modified after a specific date: `?updatedSince=2024-01-01T00:00:00Z` - Get profiles from last 24 hours: `?updatedSince=2024-12-31T00:00:00Z` - Combine with until for range: `?updatedSince=2024-01-01T00:00:00Z&updatedUntil=2024-12-31T23:59:59Z` ' required: false schema: type: string format: date-time examples: sinceStartOfYear: value: '2024-01-01T00:00:00Z' summary: Profiles updated since start of 2024 sinceLastWeek: value: '2024-12-24T00:00:00Z' summary: Profiles updated in the last week sinceWithTimezone: value: '2024-01-01T00:00:00-05:00' summary: Using Eastern Time timezone - name: updatedUntil in: query description: 'Filter profiles by their last update date. Returns only profiles that were updated on or before this date/time. **Format:** ISO 8601 date/time with timezone offset (e.g., `2024-12-31T23:59:59Z` or `2024-12-31T23:59:59-05:00`) **Behavior:** - Compares against the profile''s `updatedAt` field (automatically maintained by the database) - Can be used alone or combined with `updatedSince` for date range filtering - When used with `updatedSince`, must be greater than `updatedSince` **Use Cases:** - Get profiles modified before a specific date: `?updatedUntil=2024-12-31T23:59:59Z` - Get profiles from a specific date range: `?updatedSince=2024-01-01T00:00:00Z&updatedUntil=2024-12-31T23:59:59Z` - Exclude recent changes: `?updatedUntil=2024-11-30T23:59:59Z` ' required: false schema: type: string format: date-time examples: untilEndOfYear: value: '2024-12-31T23:59:59Z' summary: Profiles updated before end of 2024 untilLastMonth: value: '2024-11-30T23:59:59Z' summary: Profiles updated before December dateRange: value: '2024-06-30T23:59:59Z' summary: Combined with updatedSince for first half of year - name: crmConfigId in: query description: Boolean toggle. When `true` (default), the response embeds the full CRM configuration object under `crmConfigurations`. When `false`, only the raw CRM configuration ID string is returned. This is a toggle, not a CRM config identifier. required: false schema: type: boolean default: true responses: '200': description: Profiles retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ProfilesList' examples: withProfiles: summary: Response with profiles description: Successful response containing profile list value: pagination: pageNumber: 1 pageSize: 10 total: 2 links: prev: '' next: '' profiles: - id: 6d45f30d-dd0e-4546-b932-b6b1f223c9f3 name: Admin Profile description: Profile for customer admin representatives licType: hybridVoiceAgent profileFolderId: 073d01090149abae69f6305afe createdBy: 002d010826307dd6630992437b updatedAt: '2025-09-09T10:03:45.883Z' - id: d5cfccf4-0507-49f8-98d9-34fdaeefca5d name: Customer Support Profile description: Profile for customer support representatives licType: hybridVoiceAgent createdBy: 002d010826307dd6630992437b updatedAt: '2025-09-09T10:02:53.596Z' emptyList: summary: No profiles available description: Response when no profiles exist value: pagination: pageNumber: 1 pageSize: 10 total: 0 links: prev: '' next: '' profiles: [] '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' /profiles/{profileId}: get: tags: - Profile Management summary: Get Profile description: '**This API requires Account Administrator role.** Retrieves detailed information about a specific profile including account information. ' operationId: getProfile parameters: - $ref: '#/components/parameters/profileId' - name: crmConfigId in: query description: Boolean toggle. When `true` (default), the response embeds the full CRM configuration object under `crmConfigurations`. When `false`, only the raw CRM configuration ID string is returned. This is a toggle, not a CRM config identifier. required: false schema: type: boolean default: true responses: '200': description: Profile retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Profile' examples: profileWithDetails: summary: Profile with Full Details description: Complete profile information including all configuration value: id: 1ac75384-6099-424c-a179-9038a7a44a54 name: Customer Support Profile description: Profile for customer support representatives accountId: 001d01022054849399088a81ad licType: hybridVoiceAgent locationId: null permissions: [] queues: access: [] performance: [] autoLogin: [] proficiency: [] logins: [] defaultOutboundQueue: null outboundQueueId: null spaces: task: [] email: [] phone: [] video: [] messaging: [] tags: [] attributes: time: tz: America/New_York taskSpaces: 3 emailSpaces: 3 phoneSpaces: 1 videoSpaces: 0 messagingSpaces: 3 sessionStats: enabled: true frequencyScalar: 5 frequencyUnit: minutes stats: cpuFree: true cpuUsage: true cpuCount: true cpuLoadOneMinute: true cpuLoadFiveMinutes: true cpuLoadFifteenMinutes: true memoryInfo: true freeMemoryPercentage: true pingGateway: true networkInterfaces: true pingHosts: - ping.avayacloud.com groups: - 007d01090301ad8db0f0d4c370 - 007d01090301ad8db0f0d4c371 defaultOutboundCallerId: null appTheme: light consoleTheme: light interactionViewsType: all definedInteractionViews: [] modifyInteractionViews: true timeZone: America/New_York commTypeChangeDefaultValue: null createdAt: '2025-09-08T06:19:21.561Z' createdBy: 002d010826307dd6630992437b updatedAt: '2025-09-08T06:19:21.561Z' updatedBy: 002d010826307dd6630992437b '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' delete: tags: - Profile Management summary: Delete Profile description: '**This API requires Account Administrator role.** Permanently deletes a profile. This operation cannot be undone. ' operationId: deleteProfile parameters: - $ref: '#/components/parameters/profileId' responses: '204': description: Profile deleted successfully - No content returned '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': description: 'Conflict — the profile cannot be deleted because it has users assigned to it. Reassign or remove those users before deleting the profile. ' content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#conflict title: Conflict status: 409 detail: Cannot delete profile that is assigned to users '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' patch: tags: - Profile Management summary: Update Profile description: "**This API requires Account Administrator role.**\n\nUpdates an existing profile with new configuration\ \ data. Only provided fields will be updated.\n\nWhen profile settings are changed, a background sync job (PRFUPD)\ \ is automatically queued to propagate\nthe updated settings to all users assigned to this profile. The sync preserves\ \ any user-specific overrides;\nonly non-overridden fields are updated to match the new profile values.\n\n**Validation\ \ Rules:**\n- Profile name must be unique within the account (if being changed)\n- License type must be valid for\ \ the account\n- Profile folder must exist (if folder ID is provided)\n- Location must exist (if location ID is provided)\ \ - location IDs are system-generated\n\n**User limit:**\n- A profile may have at most **500** assigned users (see\ \ Users API for assignment rules).\n- Profile updates are rejected when `numUsers` **exceeds** 500 (updates remain\ \ allowed at exactly 500).\n- Returns **422** with detail `Profile User limit of 500 reached. Cannot update profile`\n\ \ (`violations[].code`: **20005**).\n" operationId: updateProfile parameters: - $ref: '#/components/parameters/profileId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateProfileRequest' examples: updateProfileName: summary: Update Profile Name and Description description: Update basic profile information value: name: Updated Observer Profile description: Updated profile for users who need read-only access updateLicenseType: summary: Change License Type description: Update profile license type which will apply new defaults value: licType: voiceOnlyAgent name: Voice Agent Profile responses: '200': description: Profile updated successfully content: application/json: schema: $ref: '#/components/schemas/Profile' examples: updatedProfile: $ref: '#/components/examples/UpdatedProfileResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': description: 'Conflict. Two cases: - **Duplicate name**: a profile with the same name already exists in this account. - **Active sync job**: a PRFUPD or FSYNC job is currently running for this profile. ' content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: duplicateName: summary: Duplicate profile name value: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#conflict title: Conflict status: 409 detail: Profile name already exists in this account activeSyncJob: summary: Active sync job in progress value: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#conflict title: Conflict status: 409 detail: 'Profile cannot be updated while a sync job is in progress (jobId: abc-123). Please wait for it to complete.' '422': description: 'Unprocessable Entity. Cases include: - **Constraint violation**: request body fails field validation - **Profile user limit**: profile has more than 500 assigned users and cannot be updated ' content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: constraintViolation: summary: Field validation error value: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#constraint-violation title: Constraint Violation status: 422 detail: Request contains invalid or missing fields profileUpdateUserLimit: $ref: '#/components/examples/ErrorProfileUpdateUserLimitReached' '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' /profiles/{profileId}/users: get: tags: - Profile Management summary: Get Profile Users with Override Status description: '**This API requires Account Administrator role.** Retrieves a paginated list of users assigned to a specific profile, including their override statuses for profile fields. This endpoint provides detailed information about which profile fields (permissions, queues, spaces, attributes, groups, themes, etc.) each user has overridden from the profile defaults. **Override Fields Tracked:** - permissions (nested structure) - queues (access, performance, autoLogin, proficiency, logins, defaultOutboundQueue, outboundQueueId) - spaces (task, email, phone, video, messaging) - tags - attributes - groups - appTheme - consoleTheme - timeZone - interactionViewsType - definedInteractionViews - modifyInteractionViews - commTypeChangeDefaultValue - defaultOutboundCallerId - locationId - dialPlanProfileId - deferEnabled - enableWebHID - enableErrorTones - allowInternalCalls - allowAgentEditAutoAnswer - allowAgentEditWebHIDHeadsetControl - rejectInteractions - previewOutbound - predictiveOutbound - persistentMedia **Filtering:** - To filter on profile users that do or do not have overridden fields, use the `hasOverrides` query parameter **Pagination:** - If `pageNumber` and `pageSize` are provided, results are paginated (filtering is applied before pagination) ' operationId: listProfileUsers parameters: - $ref: '#/components/parameters/profileId' - $ref: '#/components/parameters/pageNumber' - $ref: '#/components/parameters/pageSize' - name: hasOverrides in: query required: false description: 'Filter users by override status. When `true`, only users who have at least one overridden field are returned. When `false`, only users with no overrides are returned. When omitted, all users are returned regardless of override status. ' schema: type: boolean example: true - name: search in: query required: false description: 'Case-insensitive search string. Filters users whose first name, last name, or email address contains the given text. ' schema: type: string maxLength: 100 example: john responses: '200': description: Profile users retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ProfileUsersList' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' default: $ref: '#/components/responses/InternalServerError' components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'OAuth 2.0 Bearer Token with scoped permissions. Required scopes documented per endpoint. ' responses: ProfileNameExists: description: Conflict - Profile name already exists content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#conflict title: Conflict status: 409 detail: Profile name already exists in this account InternalServerError: description: Internal Server Error content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#internal-error title: Internal Server Error status: 500 detail: An unexpected error occurred while processing your request requestId: req_xyz789 timestamp: '2025-12-08T10:30:05Z' BadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#constraint-violation title: Constraint Violation status: 400 detail: Request contains invalid or missing fields violations: - field: accountId message: must match "^[a-zA-Z]{6}$" code: 20006 Unauthorized: description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#unauthorized title: Unauthorized status: 401 detail: Bearer token expired at 2025-12-08T10:15:00Z. Request a new token. requestId: req_xyz789 timestamp: '2025-12-08T10:30:05Z' Forbidden: description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#forbidden title: Forbidden status: 403 detail: 'Missing required scope: ''workflows:execute''. Your token has: ''workflows:read''' requestId: req_xyz789 timestamp: '2025-12-08T10:30:05Z' ConstraintViolation: description: Constraint Violation content: application/problem+json: schema: $ref: '#/components/schemas/Problem' NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/Problem' example: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#not-found title: Not Found status: 404 detail: workflowId 'wf_123abc' does not exist requestId: req_xyz789 timestamp: '2025-12-08T10:30:05Z' parameters: profileId: name: profileId in: path description: The unique identifier of a profile. required: true schema: $ref: '#/components/schemas/ProfileId' pageNumber: name: pageNumber in: query description: The page number of the records to retrieve. required: false schema: type: integer format: int32 default: 1 minimum: 1 pageSize: name: pageSize in: query description: The max number of records to retrieve per page. required: false schema: type: integer format: int32 default: 10 minimum: 1 maximum: 50 schemas: ProfileName: type: string description: Name of a profile (must be unique within the account) maxLength: 100 minLength: 1 example: Customer Support Profile ProfileDescriptionValue: type: string description: Optional description of the profile maxLength: 500 example: Profile for customer support representatives ProfileDescription: type: - string - 'null' description: Optional description of the profile maxLength: 500 example: Profile for customer support representatives ProfileSyncStatus: type: string enum: - SYNCED - SYNC_QUEUED - SYNC_IN_PROGRESS - SYNC_FAILED description: "State of the profile with regards to synchronizing changes with users.\nSync jobs are created when a profile\ \ is updated (PRFUPD — preserves user overrides)\nor when a force sync is triggered (FSYNC — resets all overrides).\n\ * SYNCED means all users have been updated with the latest changes to the profile\n* SYNC_QUEUED means a change to\ \ properties on the profile has been received,\n but the process of updating users has yet to start\n* SYNC_IN_PROGRESS\ \ means the users are currently being updated for changes to\n the profile\n* SYNC_FAILED means the sync job ended\ \ in failure or was aborted before all\n users could be updated\n" ProfileNumUsers: type: integer minimum: 0 readOnly: true description: 'Number of users currently assigned to the profile. A profile supports at most 500 assigned users; assigning a 501st user is rejected by the Users API. Profile updates are blocked when this value exceeds 500. ' ProfileNumUsersWithOverrides: type: integer minimum: 0 description: Number of users currently set to the profile that have an override for at least one field. DefaultOutboundCallerIdField: description: Default outbound caller ID (nullable for create/update requests) anyOf: - $ref: '#/components/schemas/DefaultOutboundCallerId' - type: 'null' ProfilePermissions: type: object description: Nested permission structure for profile access control properties: app: type: object properties: agent: type: object properties: read: type: boolean portal: type: object properties: app-web: type: boolean homeList: type: object properties: read: type: boolean queueList: type: object properties: read: type: boolean console: type: object properties: cx: type: object properties: read: type: boolean ml: type: object properties: read: type: boolean portal: type: object properties: console-web: type: boolean queues: type: object properties: read: type: boolean account: type: object properties: read: type: boolean numbers: type: object properties: read: type: boolean integrations: type: object properties: read: type: boolean ProfileSpaces: type: object description: Interaction space configuration for the profile properties: task: type: array items: type: string description: Task interaction spaces email: type: array items: type: string description: Email interaction spaces phone: type: array items: type: string description: Phone interaction spaces video: type: array items: type: string description: Video interaction spaces messaging: type: array items: type: string description: Messaging interaction spaces ProfileAttributes: type: object description: Profile-specific attributes and settings properties: time: type: object properties: tz: type: string example: America/New_York description: Timezone setting queue: type: object properties: outboundPermissions: type: object properties: task: type: boolean example: true email: type: boolean example: true phone: type: boolean example: true video: type: boolean example: false messaging: type: boolean example: true taskSpaces: type: integer example: 2 description: Number of task spaces emailSpaces: type: integer example: 2 description: Number of email spaces phoneSpaces: type: integer example: 1 description: Number of phone spaces videoSpaces: type: integer example: 0 description: Number of video spaces messagingSpaces: type: integer example: 2 description: Number of messaging spaces sessionStats: type: object description: Session statistics configuration (obsolete but kept for backward compatibility) properties: enabled: type: boolean frequencyScalar: type: integer example: 5 frequencyUnit: type: string example: minutes stats: type: object additionalProperties: type: boolean pingHosts: type: array items: type: string example: - ping.avayacloud.com CreateProfileRequest: type: object description: Request body for creating a new profile with license-type-based defaults required: - name - licType properties: name: $ref: '#/components/schemas/ProfileName' description: $ref: '#/components/schemas/ProfileDescription' licType: $ref: '#/components/schemas/LicenseType' profileFolderId: $ref: '#/components/schemas/FolderId' locationId: $ref: '#/components/schemas/LocationId' permissions: $ref: '#/components/schemas/ProfilePermissions' description: Profile permissions configuration (license-specific defaults applied if not provided) queues: allOf: - $ref: '#/components/schemas/UserQueues' description: Queue configuration for the profile (license-specific defaults applied if not provided) spaces: $ref: '#/components/schemas/ProfileSpaces' description: Space configuration for the profile (license-specific defaults applied if not provided) tags: $ref: '#/components/schemas/TagsList' attributes: $ref: '#/components/schemas/ProfileAttributes' description: Profile attributes configuration (license-specific defaults applied if not provided) groups: $ref: '#/components/schemas/Groups' defaultOutboundCallerId: $ref: '#/components/schemas/DefaultOutboundCallerIdField' appTheme: $ref: '#/components/schemas/AppTheme' consoleTheme: $ref: '#/components/schemas/ConsoleTheme' interactionViewsType: $ref: '#/components/schemas/InteractionViewsType' definedInteractionViews: $ref: '#/components/schemas/DefinedInteractionViews' modifyInteractionViews: type: boolean description: Whether user can modify interaction views default: true timeZone: allOf: - $ref: '#/components/schemas/TimeZone' description: Optional. If not provided, defaults to the account's configured default timezone. commTypeChangeDefaultValue: anyOf: - $ref: '#/components/schemas/CommTypeChangeDefaultValue' - type: 'null' crmConfigId: $ref: '#/components/schemas/CrmConfigId' description: Optional. CRM configuration ID to assign to users in this profile. logConfiguration: $ref: '#/components/schemas/LogConfiguration' description: Log configuration settings for users created from this profile enableWebHID: $ref: '#/components/schemas/EnableWebHID' enableErrorTones: $ref: '#/components/schemas/EnableErrorTones' allowInternalCalls: $ref: '#/components/schemas/AllowInternalCalls' description: Optional. Whether users in this profile can make internal calls. Defaults to false when not provided. rejectInteractions: $ref: '#/components/schemas/RejectInteractions' allowAgentEditAutoAnswer: $ref: '#/components/schemas/AllowAgentEditAutoAnswer' description: Optional. Whether agents in this profile can edit their own Auto Answer setting. allowAgentEditWebHIDHeadsetControl: $ref: '#/components/schemas/AllowAgentEditWebHIDHeadsetControl' description: Optional. Whether agents in this profile can edit their own WebHID Headset Control setting. previewOutbound: $ref: '#/components/schemas/PreviewOutbound' description: Optional. Whether preview outbound dialing is enabled for users in this profile. predictiveOutbound: $ref: '#/components/schemas/PredictiveOutbound' description: Optional. Whether predictive outbound dialing is enabled for users in this profile. persistentMedia: $ref: '#/components/schemas/PersistentMedia' description: Optional. Whether persistent media is enabled for users in this profile. deferEnabled: type: boolean description: Optional. Whether defer is enabled for users in this profile. dialPlanProfileId: $ref: '#/components/schemas/DialPlanProfileId' description: Optional. Dial plan profile ID to assign to users in this profile. ucPhoneSpaces: $ref: '#/components/schemas/UcPhoneSpaces' description: Optional. Number of UC phone interaction spaces (0-3). useUCPhoneSpaceOnCCCall: $ref: '#/components/schemas/UseUCPhoneSpaceOnCCCall' description: Optional. Whether to use UC phone space for contact center calls. useCCPhoneSpaceOnUCCall: $ref: '#/components/schemas/UseCCPhoneSpaceOnUCCall' description: Optional. Whether to use contact center phone space for UC calls. externalUCProviderConnections: type: array description: Array of external UC provider connection IDs to assign to this profile. items: $ref: '#/components/schemas/ExternalUCProviderConnectionId' infinityElements: type: array items: type: string description: 'Optional. Array of Infinity Element IDs to assign to this profile. Only valid for agent license types; requests that set this field for `nonAgent` profiles are rejected with a 422 error. ' UpdateProfileRequest: type: object description: Request body for updating an existing profile. All fields are optional - only provided fields will be updated. properties: name: type: string description: Name of the profile (must be unique within the account if being changed) maxLength: 100 minLength: 1 example: Updated Customer Support Profile description: allOf: - $ref: '#/components/schemas/ProfileDescription' example: Updated profile for customer support representatives licType: $ref: '#/components/schemas/LicenseType' description: License type (will apply new defaults if changed) profileFolderId: anyOf: - $ref: '#/components/schemas/FolderId' - type: 'null' description: Move profile to a folder, or send null to remove from current folder. locationId: $ref: '#/components/schemas/LocationId' permissions: $ref: '#/components/schemas/ProfilePermissions' description: Profile permissions configuration queues: allOf: - $ref: '#/components/schemas/UserQueues' description: Queue configuration for the profile spaces: $ref: '#/components/schemas/ProfileSpaces' description: Space configuration for the profile tags: $ref: '#/components/schemas/TagsList' attributes: $ref: '#/components/schemas/ProfileAttributes' description: Profile attributes configuration groups: $ref: '#/components/schemas/Groups' defaultOutboundCallerId: $ref: '#/components/schemas/DefaultOutboundCallerIdField' appTheme: $ref: '#/components/schemas/AppTheme' consoleTheme: $ref: '#/components/schemas/ConsoleTheme' interactionViewsType: $ref: '#/components/schemas/InteractionViewsType' definedInteractionViews: $ref: '#/components/schemas/DefinedInteractionViews' modifyInteractionViews: type: boolean description: Whether user can modify interaction views timeZone: $ref: '#/components/schemas/TimeZone' commTypeChangeDefaultValue: anyOf: - $ref: '#/components/schemas/CommTypeChangeDefaultValue' - type: 'null' externalUCProviderConnections: type: array description: Array of external UC provider connection IDs to assign to this profile items: $ref: '#/components/schemas/ExternalUCProviderConnectionId' example: - 00261a83d82640d98e000000001 - 00261a83d82640d98e000000002 crmConfigId: $ref: '#/components/schemas/CrmConfigId' logConfiguration: $ref: '#/components/schemas/LogConfiguration' description: Log configuration settings for users in this profile enableWebHID: $ref: '#/components/schemas/EnableWebHID' enableErrorTones: anyOf: - $ref: '#/components/schemas/EnableErrorTones' - type: 'null' description: Optional. Send null to clear (revert to default). allowInternalCalls: anyOf: - $ref: '#/components/schemas/AllowInternalCalls' - type: 'null' description: Optional. Send null to clear (revert to default). rejectInteractions: anyOf: - $ref: '#/components/schemas/RejectInteractions' - type: 'null' description: Optional. Send null to clear. allowAgentEditAutoAnswer: anyOf: - $ref: '#/components/schemas/AllowAgentEditAutoAnswer' - type: 'null' description: Optional. Send null to clear (revert to default). allowAgentEditWebHIDHeadsetControl: anyOf: - $ref: '#/components/schemas/AllowAgentEditWebHIDHeadsetControl' - type: 'null' description: Optional. Send null to clear (revert to default). deferEnabled: anyOf: - type: boolean - type: 'null' description: Whether defer is enabled for this profile. Null means not set at profile level (inherit account or queue behavior). previewOutbound: anyOf: - $ref: '#/components/schemas/PreviewOutbound' - type: 'null' description: Optional. Send null to clear. predictiveOutbound: anyOf: - $ref: '#/components/schemas/PredictiveOutbound' - type: 'null' description: Optional. Send null to clear. persistentMedia: anyOf: - $ref: '#/components/schemas/PersistentMedia' - type: 'null' description: Optional. Send null to clear. dialPlanProfileId: anyOf: - $ref: '#/components/schemas/DialPlanProfileId' - type: 'null' description: Optional. Dial plan profile ID. Send null to clear. ucPhoneSpaces: anyOf: - $ref: '#/components/schemas/UcPhoneSpaces' - type: 'null' description: Optional. Number of UC phone interaction spaces (0-3). Send null to clear. useUCPhoneSpaceOnCCCall: anyOf: - $ref: '#/components/schemas/UseUCPhoneSpaceOnCCCall' - type: 'null' description: Optional. Send null to clear (revert to default). useCCPhoneSpaceOnUCCall: anyOf: - $ref: '#/components/schemas/UseCCPhoneSpaceOnUCCall' - type: 'null' description: Optional. Send null to clear (revert to default). infinityElements: type: array items: type: string description: 'Replaces the profile''s entire set of Infinity Elements. Omit to leave unchanged. ' Profile: type: object description: Detailed profile information required: - id - accountId - name - syncStatus - numUsers - numUsersWithOverrides - createdAt - createdBy - licType properties: id: allOf: - $ref: '#/components/schemas/ProfileId' readOnly: true accountId: allOf: - $ref: '#/components/schemas/AccountId' readOnly: true name: allOf: - $ref: '#/components/schemas/ProfileName' readOnly: true description: allOf: - $ref: '#/components/schemas/ProfileDescriptionValue' readOnly: true profileFolderId: allOf: - $ref: '#/components/schemas/FolderId' readOnly: true syncStatus: allOf: - $ref: '#/components/schemas/ProfileSyncStatus' readOnly: true syncJobId: anyOf: - $ref: '#/components/schemas/JobId' - type: 'null' readOnly: true description: 'ID of the currently active sync job (PRFUPD or FSYNC). Present in update responses when a sync job was created; null otherwise. Use GET /v1/jobs/{syncJobId} to poll progress. ' numUsers: allOf: - $ref: '#/components/schemas/ProfileNumUsers' readOnly: true numUsersWithOverrides: allOf: - $ref: '#/components/schemas/ProfileNumUsersWithOverrides' readOnly: true createdAt: allOf: - $ref: '#/components/schemas/CreatedAt' readOnly: true createdBy: allOf: - $ref: '#/components/schemas/CreatedBy' readOnly: true updatedAt: allOf: - $ref: '#/components/schemas/UpdatedAt' readOnly: true updatedBy: allOf: - $ref: '#/components/schemas/UpdatedBy' readOnly: true licType: allOf: - $ref: '#/components/schemas/LicenseType' readOnly: true locationId: allOf: - $ref: '#/components/schemas/LocationId' readOnly: true permissions: allOf: - $ref: '#/components/schemas/Permissions' readOnly: true queues: allOf: - $ref: '#/components/schemas/UserQueues' readOnly: true spaces: allOf: - $ref: '#/components/schemas/Spaces' readOnly: true tags: allOf: - $ref: '#/components/schemas/TagsList' readOnly: true attributes: allOf: - $ref: '#/components/schemas/Attributes' readOnly: true groups: allOf: - $ref: '#/components/schemas/Groups' readOnly: true defaultOutboundCallerId: allOf: - $ref: '#/components/schemas/DefaultOutboundCallerId' readOnly: true appTheme: allOf: - $ref: '#/components/schemas/AppTheme' readOnly: true consoleTheme: allOf: - $ref: '#/components/schemas/ConsoleTheme' readOnly: true interactionViewsType: allOf: - $ref: '#/components/schemas/InteractionViewsType' readOnly: true definedInteractionViews: allOf: - $ref: '#/components/schemas/DefinedInteractionViews' readOnly: true modifyInteractionViews: allOf: - $ref: '#/components/schemas/ModifyInteractionViews' readOnly: true commTypeChangeDefaultValue: allOf: - $ref: '#/components/schemas/CommTypeChangeDefaultValue' readOnly: true timeZone: allOf: - $ref: '#/components/schemas/TimeZone' readOnly: true dialPlanProfileId: allOf: - $ref: '#/components/schemas/DialPlanProfileId' readOnly: true crmConfigurations: description: CRM configuration details. Returns full CRM config object or raw ID string depending on the crmConfigId query parameter. anyOf: - $ref: '#/components/schemas/CrmConfiguration' - $ref: '#/components/schemas/CrmConfigId' readOnly: true externalUCProviderConnections: type: array description: External UC provider connections assigned to this profile with full details. items: $ref: '#/components/schemas/ExternalUCProviderConnection' readOnly: true infinityElements: type: array readOnly: true items: type: object properties: id: type: string name: type: string tagName: type: string icon: type: - string - 'null' fileUrl: type: - string - 'null' ucPhoneSpaces: allOf: - $ref: '#/components/schemas/UcPhoneSpaces' readOnly: true useUCPhoneSpaceOnCCCall: allOf: - $ref: '#/components/schemas/UseUCPhoneSpaceOnCCCall' readOnly: true useCCPhoneSpaceOnUCCall: allOf: - $ref: '#/components/schemas/UseCCPhoneSpaceOnUCCall' readOnly: true enableWebHID: allOf: - $ref: '#/components/schemas/EnableWebHID' readOnly: true enableErrorTones: allOf: - $ref: '#/components/schemas/EnableErrorTones' readOnly: true allowInternalCalls: allOf: - $ref: '#/components/schemas/AllowInternalCalls' readOnly: true rejectInteractions: allOf: - $ref: '#/components/schemas/RejectInteractions' readOnly: true logConfiguration: allOf: - $ref: '#/components/schemas/LogConfiguration' description: Log configuration settings for users in this profile readOnly: true allowAgentEditAutoAnswer: allOf: - $ref: '#/components/schemas/AllowAgentEditAutoAnswer' readOnly: true allowAgentEditWebHIDHeadsetControl: allOf: - $ref: '#/components/schemas/AllowAgentEditWebHIDHeadsetControl' readOnly: true deferEnabled: anyOf: - type: boolean - type: 'null' description: Whether defer is enabled for this profile. Null when unset at profile level. readOnly: true previewOutbound: allOf: - $ref: '#/components/schemas/PreviewOutbound' readOnly: true predictiveOutbound: allOf: - $ref: '#/components/schemas/PredictiveOutbound' readOnly: true persistentMedia: allOf: - $ref: '#/components/schemas/PersistentMedia' readOnly: true taskSpaces: type: integer readOnly: true description: Number of task interaction spaces for this profile. Also appears nested under `attributes`. emailSpaces: type: integer readOnly: true description: Number of email interaction spaces for this profile. Also appears nested under `attributes`. phoneSpaces: type: integer readOnly: true description: Number of phone interaction spaces for this profile. Also appears nested under `attributes`. videoSpaces: type: integer readOnly: true description: Number of video interaction spaces for this profile. Also appears nested under `attributes`. messagingSpaces: type: integer readOnly: true description: Number of messaging interaction spaces for this profile. Also appears nested under `attributes`. taskPickupOverMultiplicity: type: boolean readOnly: true description: Whether task interactions can be picked up beyond the configured space multiplicity. emailPickupOverMultiplicity: type: boolean readOnly: true description: Whether email interactions can be picked up beyond the configured space multiplicity. phonePickupOverMultiplicity: type: boolean readOnly: true description: Whether phone interactions can be picked up beyond the configured space multiplicity. messagingPickupOverMultiplicity: type: boolean readOnly: true description: Whether messaging interactions can be picked up beyond the configured space multiplicity. ProfilesList: type: object description: Paginated list of profiles required: - pagination - links - profiles properties: pagination: $ref: '#/components/schemas/Pagination' links: $ref: '#/components/schemas/Links' profiles: type: array description: Array of profile items items: $ref: '#/components/schemas/ProfileListItem' ProfileListItem: type: object description: Profile item in list response required: - id - name - createdBy - syncStatus - numUsers - numUsersWithOverrides - licType properties: id: $ref: '#/components/schemas/ProfileId' name: $ref: '#/components/schemas/ProfileName' description: $ref: '#/components/schemas/ProfileDescription' profileFolderId: $ref: '#/components/schemas/FolderId' syncStatus: allOf: - $ref: '#/components/schemas/ProfileSyncStatus' readOnly: true numUsers: allOf: - $ref: '#/components/schemas/ProfileNumUsers' readOnly: true numUsersWithOverrides: allOf: - $ref: '#/components/schemas/ProfileNumUsersWithOverrides' readOnly: true createdBy: allOf: - $ref: '#/components/schemas/CreatedBy' readOnly: true updatedAt: allOf: - $ref: '#/components/schemas/UpdatedAt' readOnly: true licType: allOf: - $ref: '#/components/schemas/LicenseType' readOnly: true previewOutbound: allOf: - $ref: '#/components/schemas/PreviewOutbound' readOnly: true predictiveOutbound: allOf: - $ref: '#/components/schemas/PredictiveOutbound' readOnly: true persistentMedia: allOf: - $ref: '#/components/schemas/PersistentMedia' readOnly: true rejectInteractions: allOf: - $ref: '#/components/schemas/RejectInteractions' readOnly: true deferEnabled: type: boolean description: Whether defer is enabled for this profile readOnly: true crmConfigurations: description: CRM configuration details. Returns full CRM config object or raw ID string depending on the crmConfigId query parameter. anyOf: - $ref: '#/components/schemas/CrmConfiguration' - $ref: '#/components/schemas/CrmConfigId' readOnly: true dialPlanProfileId: allOf: - $ref: '#/components/schemas/DialPlanProfileId' readOnly: true taskPickupOverMultiplicity: type: boolean readOnly: true description: Whether task interactions can be picked up beyond the configured space multiplicity. emailPickupOverMultiplicity: type: boolean readOnly: true description: Whether email interactions can be picked up beyond the configured space multiplicity. phonePickupOverMultiplicity: type: boolean readOnly: true description: Whether phone interactions can be picked up beyond the configured space multiplicity. messagingPickupOverMultiplicity: type: boolean readOnly: true description: Whether messaging interactions can be picked up beyond the configured space multiplicity. ProfileUsersList: type: object description: List of users assigned to a profile with override status. Includes pagination metadata if pagination parameters were provided. required: - users properties: pagination: $ref: '#/components/schemas/Pagination' description: Pagination metadata (only present when pageNumber and pageSize query parameters are provided) links: $ref: '#/components/schemas/Links' description: Pagination navigation links (only present when pageNumber and pageSize query parameters are provided) users: type: array description: Array of users assigned to the profile items: $ref: '#/components/schemas/ProfileUser' ProfileUser: type: object description: User assigned to a profile with override status information required: - userId - email - firstName - lastName - fullName - hasOverrides - overriddenFields properties: userId: $ref: '#/components/schemas/UserId' description: Unique identifier of the user email: $ref: '#/components/schemas/Email' firstName: $ref: '#/components/schemas/FirstName' lastName: $ref: '#/components/schemas/LastName' fullName: $ref: '#/components/schemas/FullName' hasOverrides: type: boolean description: Whether the user has any overrides from the profile defaults example: true overriddenFields: type: array description: List of profile field paths that have been overridden by this user. Field paths use dot notation (e.g., 'permissions.app.agent.read', 'queues.access', 'appTheme') items: type: string example: - permissions.app.agent.read - queues.access - appTheme readOnly: true folderId: allOf: - $ref: '#/components/schemas/FolderId' readOnly: true description: Folder ID of the user's assigned profile. FolderId: description: Unique identifier for a folder. type: string pattern: ^073[0-9a-f]{23}$ example: 073d010813b941cf7da111d147 Violation: type: object properties: field: description: 'The name of the field in the request that caused the violation. This can be the name of a path parameter, query parameter, or a field within the request body. ' type: string readOnly: true example: jobName message: description: 'A human-readable explanation specific to this occurrence of the violation. ' type: string readOnly: true example: must match "^[a-zA-Z]{6}$" code: description: 'The violation code generated by the server for this occurrence of the violation. Use this code when implementing any error handling logic instead of the message, as the message can change. ' type: integer format: int32 readOnly: true example: 20006 required: - field - message - code example: - field: emailAddress message: must not be null code: 20002 Problem: type: object description: 'Problem Detail is a way to carry machine-readable details of errors in an HTTP response to avoid the need to define new error response formats for HTTP APIs RFC 7807 ' properties: type: description: 'An absolute URI that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type (e.g., using HTML). ' type: string format: uri readOnly: true example: https://developers.avayacloud.com/avaya-infinity/docs/errors#constraint-violation title: 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). ' type: string readOnly: true example: Service Unavailable status: description: 'The HTTP status code generated by the origin server for this occurrence of the problem. ' type: integer format: int32 minimum: 300 exclusiveMaximum: 600 readOnly: true example: 503 detail: description: 'A human-readable explanation specific to this occurrence of the problem. ' type: string readOnly: true example: Connection to database timed out instance: description: 'An absolute URI that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. ' type: string format: uri readOnly: true violations: description: 'A list of violations that occurred as a result of invalid data provided as part of a request. ' type: array items: $ref: '#/components/schemas/Violation' readOnly: true requestId: description: 'A unique identifier for this request, useful when contacting support about a specific error occurrence. ' type: string readOnly: true example: req_xyz789 timestamp: description: 'The date and time at which the error occurred. ' type: string format: date-time readOnly: true retryAfter: description: 'Number of seconds to wait before retrying the request. Present on 429 and 503 responses. ' type: integer readOnly: true example: 30 Pagination: description: Pagination metadata type: object required: - pageNumber - pageSize - total properties: pageNumber: description: The current page number type: integer minimum: 1 readOnly: true example: 1 pageSize: description: The maximum number of items per page type: integer minimum: 1 readOnly: true example: 10 total: description: The total number of items type: integer minimum: 0 readOnly: true example: 2 Links: description: Pagination navigation links type: object required: - prev - next properties: prev: description: URL of the previous page. Blank if currently on the first page. type: string readOnly: true example: '' next: description: URL of the next page. Blank if currently on the last page. type: string readOnly: true example: '' ProfileId: type: string description: The unique identifier of a profile. pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ minLength: 36 maxLength: 36 example: 16a7490f-86a6-4a14-8ce2-11682230adb6 UserId: description: Unique identifier for a user. type: string pattern: ^002[0-9a-f]{23}$ example: 002507f1e1c8e3e9a8b7c5d4e3f2 CreatedBy: description: ID of the user who created the resource. allOf: - $ref: '#/components/schemas/UserId' example: 002d010826307dd6630992437b UpdatedAt: description: 'Timestamp of when the resource was last updated. This may not be included if the resource has not been updated since it was created. ' type: string format: date-time example: '2025-09-08T06:19:21.561Z' LicenseType: type: string description: User license type that determines available features and permissions enum: - nonAgent - voiceOnlyAgent - digitalOnlyAgent - omniChannelAgent - omniChannelAgentEnhanced - hybridVoiceAgent example: hybridVoiceAgent PreviewOutbound: type: boolean PredictiveOutbound: type: boolean PersistentMedia: type: boolean RejectInteractions: type: boolean CrmConfiguration: type: object description: Full CRM configuration object. properties: id: type: string pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ accountId: type: string name: type: string clickToDial: type: boolean clickToConsult: type: boolean omnichannelEnabled: type: string enum: - N - S complementaryDefaultStatus: type: string createdBy: $ref: '#/components/schemas/UserId' createdAt: type: string format: date-time updatedBy: allOf: - $ref: '#/components/schemas/UserId' nullable: true updatedAt: type: string format: date-time nullable: true CrmConfigId: type: string pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ minLength: 36 maxLength: 36 DialPlanProfileId: type: string pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ minLength: 36 maxLength: 36 description: ID of the dial plan profile to use LocationId: type: string description: 'Optional location ID to associate with the user or profile. Must be an existing location ID. **Note:** Location IDs are system-generated 26-character identifiers with prefix "022". ' maxLength: 26 minLength: 26 pattern: ^022[0-9a-f]{23}$ example: 022d01091776cc88fe6866b7ce QueueId: description: Unique identifier for a queue. type: string minLength: 23 maxLength: 26 pattern: ^003[0-9a-f]{20,23}$ example: 00301090301ad8db0f0d4c370 UserQueues: description: Queues configuration for a user or profile. type: object properties: access: type: array items: $ref: '#/components/schemas/QueueId' performance: type: array items: $ref: '#/components/schemas/QueueId' autoLogin: type: array items: $ref: '#/components/schemas/QueueId' proficiency: type: array items: $ref: '#/components/schemas/QueueId' logins: type: array items: $ref: '#/components/schemas/QueueId' defaultOutboundQueue: anyOf: - $ref: '#/components/schemas/QueueId' - type: 'null' outboundQueueId: anyOf: - $ref: '#/components/schemas/QueueId' - type: 'null' TagsList: type: array items: type: string description: List of tag names associated with the user or profile. example: - APACT - English - NART GroupId: description: Unique identifier for a group. type: string pattern: ^007[0-9a-f]{23}$ example: 007a1b2c3d4e5f67890abcdef12 Groups: type: array description: Array of group identifiers that the user or profile belongs to. Each string is a groupId from the groups table (IDs with a 007 prefix). items: $ref: '#/components/schemas/GroupId' example: - 007d01090301ad8db0f0d4c370 - 007d01090301ad8db0f0d4c371 DefaultOutboundCallerId: type: string description: Default outbound caller ID in E.164 format (international phone number standard) maxLength: 20 pattern: ^$|^\\+?[1-9]\\d{0,19}$ example: '+1234567890' UiTheme: type: string enum: - light - dark example: light AppTheme: allOf: - $ref: '#/components/schemas/UiTheme' description: Application theme preference ConsoleTheme: allOf: - $ref: '#/components/schemas/UiTheme' description: Console theme preference InteractionViewsType: type: string description: Type of interaction views to display enum: - all - defined - none default: all example: all DefinedInteractionViews: type: array description: List of defined interaction views items: type: string TimeZone: type: string description: User's timezone preference (IANA timezone) maxLength: 64 example: America/New_York CommTypeChangeDefaultValue: type: string description: Default value for communication type changes enum: - callback - closeResolved - closeUnresolved example: callback LogConfiguration: type: object description: 'Log configuration settings for controlling logging behavior. Used to configure client-side logging for users and profiles. ' properties: logLevel: type: string enum: - ERROR - WARN - INFO - DEBUG - TRACE description: The minimum log level to capture example: INFO remoteLoggingEnabled: type: boolean description: Whether to send logs to the remote logging service example: true sampleRate: type: number minimum: 0 maximum: 1 description: Sampling rate for logs (0 to 1, where 1 means log everything) example: 0.5 modules: type: array items: type: string description: List of module names to enable logging for example: - auth - api - websocket EnableWebHID: type: boolean description: Whether WebHID is enabled for the user EnableErrorTones: type: boolean description: Whether error tones are enabled. AllowInternalCalls: type: boolean description: Whether the user or profile can make internal calls AllowAgentEditAutoAnswer: type: boolean description: 'Controls whether the Admin Console UI exposes the Auto Answer Interactions setting (attributes.webRTC.autoAnswer.interaction) as editable in the agent''s own profile view. Defaults to false (UI shows the setting as read-only for the agent). Note: this flag is enforced in the UI only. The API accepts changes to attributes.webRTC.autoAnswer.interaction regardless of this flag''s value.' default: false AllowAgentEditWebHIDHeadsetControl: type: boolean description: 'Controls whether the Admin Console UI exposes the WebHID Headset Control setting (attributes.webHID.status) as editable in the agent''s own profile view. Defaults to false (UI shows the setting as read-only for the agent). Note: this flag is enforced in the UI only. The API accepts changes to attributes.webHID.status regardless of this flag''s value.' default: false UcPhoneSpaces: description: Number of UC phone interaction spaces. type: integer minimum: 0 UseUCPhoneSpaceOnCCCall: description: Use UC phone space for CC calls. type: boolean UseCCPhoneSpaceOnUCCall: description: Use CC phone space for UC calls. type: boolean ExternalUCProviderConnectionId: type: string description: UUID of an external UC provider connection pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ minLength: 36 maxLength: 36 AccountId: description: Unique identifier for an account. type: string pattern: ^001[0-9a-f]{23}$ example: 001f8e7d6c5b4a39281706f5e4d JobId: description: Unique ID for a bulk user operation job. type: string format: uuid example: c8c2909d-75e9-484a-94c0-b7e8d30771fe CreatedAt: description: Timestamp of when the resource was created. type: string format: date-time example: '2025-09-08T06:19:21.561Z' UpdatedBy: description: 'ID of the user who last updated the resource. This may not be included if the resource has not been updated since it was created. ' allOf: - $ref: '#/components/schemas/UserId' example: 002d010826307dd6630992437b Permissions: type: object description: The permissions for a user or profile. properties: app: type: object console: type: object example: app: agent: read: false portal: app-web: false homeList: read: false queueList: read: false queueToggling: read: false console: cx: read: true ml: read: true portal: console-web: true queues: read: true account: read: true numbers: read: true integrations: read: false Spaces: type: object description: Space configuration for a user or profile. properties: task: type: array items: type: string email: type: array items: type: string phone: type: array items: type: string video: type: array items: type: string messaging: type: array items: type: string Attributes: type: object description: Attributes of the user or profile. properties: time: type: object properties: tz: $ref: '#/components/schemas/TimeZone' taskSpaces: type: integer example: 3 emailSpaces: type: integer example: 3 phoneSpaces: type: integer example: 1 videoSpaces: type: integer example: 0 messagingSpaces: type: integer example: 3 webRTC: type: object description: WebRTC-related settings for the user. properties: autoAnswer: type: object properties: interaction: type: boolean description: Whether the agent's interactions are automatically answered. Editability by agents is controlled by the `allowAgentEditAutoAnswer` flag. webHID: type: object description: WebHID headset control settings for the user. properties: status: type: boolean description: Whether WebHID headset control is enabled for the agent. Editability by agents is controlled by the `allowAgentEditWebHIDHeadsetControl` flag. sessionStats: type: object description: Session statistics configuration (obsolete but kept for backward compatibility) properties: enabled: type: boolean frequencyScalar: type: integer example: 5 frequencyUnit: type: string example: minutes stats: type: object additionalProperties: type: boolean pingHosts: type: array items: type: string example: - ping.avayacloud.com ModifyInteractionViews: type: boolean description: Can modify interaction views example: true ExternalUCProviderConnection: type: object description: An external UC provider connection with full details. properties: id: type: string description: Unique identifier of the connection. accountId: type: string description: Account the connection belongs to. name: type: string description: Display name of the connection. provider: type: string description: Provider type (e.g. 'teams', 'zoom'). enabled: type: boolean description: Whether the connection is currently enabled. connectionDetails: type: object additionalProperties: true description: Provider-specific connection configuration. Email: description: A user's email address type: string format: email FirstName: description: The first name of a user. type: string minLength: 2 maxLength: 255 pattern: ^[^<>\^@#]*$ example: John LastName: description: The last name of a user. type: string minLength: 2 maxLength: 255 pattern: ^[^<>\^@#]*$ example: Smith FullName: description: The full name of the user (firstName + lastName). type: string example: John Smith examples: ErrorProfileUpdateUserLimitReached: description: Profile update rejected because assigned user count exceeds 500 value: type: https://developers.avayacloud.com/avaya-infinity/docs/errors#validation-failed title: Validation Failed status: 422 detail: Profile User limit of 500 reached. Cannot update profile violations: - field: profileId message: Profile User limit of 500 reached. Cannot update profile code: 20005 UpdatedProfileResponse: description: Successfully updated profile with new configuration value: id: 16a7490f-86a6-4a14-8ce2-11682230adb6 accountId: 001d01022054849399088a81ad name: Voice Agent Profile description: Updated profile for customer support representatives licType: voiceOnlyAgent profileFolderId: 073d010813b941cf7da111d147 locationId: 022d01091776cc88fe6866b7ce syncStatus: SYNC_QUEUED syncJobId: a1b2c3d4-5678-90ab-cdef-1234567890ab numUsers: 12 numUsersWithOverrides: 3 permissions: app: agent: read: true portal: app-web: true homeList: read: true queueList: read: true console: cx: read: false ml: read: false portal: console-web: false queues: read: false account: read: false numbers: read: false integrations: read: false queues: access: [] performance: [] autoLogin: [] proficiency: [] logins: [] defaultOutboundQueue: null outboundQueueId: null spaces: task: [] email: [] phone: [] video: [] messaging: [] tags: - APACT - English - NART attributes: time: tz: America/New_York taskSpaces: 2 emailSpaces: 0 phoneSpaces: 1 videoSpaces: 0 messagingSpaces: 0 groups: - 007d01090301ad8db0f0d4c370 defaultOutboundCallerId: '+1234567890' appTheme: light consoleTheme: light interactionViewsType: all definedInteractionViews: [] modifyInteractionViews: true timeZone: America/New_York commTypeChangeDefaultValue: null createdAt: '2024-01-15T10:30:00Z' createdBy: 002d01091636c828bb78aa5887 updatedAt: '2024-01-16T14:45:00Z' updatedBy: 002d01091636c828bb78aa5887