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