openapi: 3.0.0
info:
title: Webex Admin Address Book Journey - Profile Creation & Insights API API
version: 1.0.0
description: The Webex Admin APIs provide comprehensive programmatic access to administrative functions for managing Webex organizations, users, licenses, and settings. These APIs enable automation of user provisioning, license assignment, compliance management, and audit event retrieval. Administrators can integrate with enterprise identity systems, enforce security policies, monitor usage, and streamline onboarding/offboarding processes. The APIs support granular control over organizational resources, making them ideal for large-scale deployments and custom admin tooling.
tags:
- name: Journey - Profile Creation & Insights API
paths:
/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Get A specific Template searched by template id
description: "Get Template details by template Id in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_write scope."
operationId: getTemplatebyId
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 638844db13272c52239c525d
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileResponse'
'404':
description: Not found
'500':
description: Internal error
security:
- bearerAuth: []
put:
tags:
- Journey - Profile Creation & Insights API
summary: Update existing ProfileViewTemplate
description: "Update existing Profile View Template in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope."
operationId: updateProfileViewTemplate
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 638844db13272c52239c525d
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrUpdateTemplateModel'
required: true
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
delete:
tags:
- Journey - Profile Creation & Insights API
summary: Delete Template by template Id
description: "Delete Template By template id in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope."
operationId: deleteTemplatebyId
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 638844db13272c52239c525d
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateResponseModel'
'404':
description: Not found
'500':
description: Internal error
security:
- bearerAuth: []
/admin/v1/api/profile-view-template/workspace-id/{workspaceId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Get All Template Details
description: "Get Template details by Organization Id and workspaceId in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: getAllTemplates
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
- name: filter
in: query
description: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."
required: false
schema:
type: string
example: createdBy==satjonna@cisco.com
- name: sort
in: query
description: Sort direction
required: false
schema:
type: string
example: DESC
- name: sortBy
in: query
description: Sort By Field
required: false
schema:
type: string
example: updatedAt
- name: page
in: query
description: 'Index of the page of results to be fetched.
Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.'
required: false
schema:
type: integer
example: 0
- name: pageSize
in: query
description: Number of items to be displayed on a page.
required: false
schema:
type: integer
example: 10
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileGetResponse'
'404':
description: Not found
'500':
description: Internal error
security:
- bearerAuth: []
post:
tags:
- Journey - Profile Creation & Insights API
summary: Create Template
description: "Creates a Profile View Template in JDS. \n\n **Role and Scope**: Requires id full admin or any role with cjp:config_write scope.\n\n **Template with single rule**: \n ```\n {\n \"name\": \"ClosedCaller\",\n \"attributes\": [\n {\n \"version\": \"0.1\",\n \"event\": \"Closed Queue\",\n \"metaDataType\": \"string\",\n \"metaData\": \"category\",\n \"limit\": 100,\n \"displayName\": \"ClosedCaller\",\n \"lookBackDurationType\": \"minutes\",\n \"lookBackPeriod\": 5,\n \"aggregationMode\": \"Count\",\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value EQ Closed\"\n },\n \"widgetAttributes\": {\n \"type\": \"table\"\n },\n \"verbose\": false\n }\n ]\n }\n ```\n\n\n **Example Event:** \n ```\n {\n \"id\": \"{{$guid}}\",\n \"specversion\": \"1.0\",\n \"type\": \"Closed Queue\",\n \"source\": \"Voice%20Contact\",\n \"identity\": \"jes@gmail.com\",\n \"identitytype\": \"email\",\n \"datacontenttype\": \"application/json\",\n \"data\": {\n \"Email\": \"jes@gmail.com\",\n \"CallsQueuedNow\": \"Use GetQueueInfoNode Values\",\n \"OldestCallTime\": \"Use GetQueueInfoNode Values\",\n \"LoggedOnAgents\": \"Use GetQueueInfoNode Values\",\n \"PIQ\": \"Use GetQueueInfoNode Values\",\n \"EWT\": \"Use GetQueueInfoNode Values\",\n \"category\": \"Closed\",\n \"origin\": \"Past Due - 1st Notification\",\n \"channelType\": \"QueueCall\",\n \"channelBreakout\": \"voice\"\n }\n }\n ```\n\n\n **Key components of the rule:** \n * template.event: This refers to the specific event type you want to match (e.g., \"Closed Queue\").\n * event.type: This refers to the actual event type present in the event data.\n * event.data: This is the dictionary/object containing all the metadata associated with the event.\n * template.rules.condition - category: This is the specific metadata field you want to compare within event.data.\n * template.rules.condition - string: This indicates that the category metadata is a string type.\n * template.rules.condition - Value EQ Closed: This defines the condition: the value of the category field (as a string) must be equal to \"Closed\".\n\n\n **Evaluation process:** \n 1. The rule checks if template.event matches the event.type in the incoming event.\n 2. If they match, the rule retrieves the value of the category field from event.data.\n 3. It then compares the value of category (treated as a string) to \"Closed\" using an equality operator (EQ).\n 4. If the values are equal, the condition evaluates to True and creates a progressive profile for the identity. Otherwise, it evaluates to False.\n \n The template has lookBackPeriod and lookBackDurationType which decide how long to look back for the calculation. In the above template, it fetches events triggered in the last 5 minutes and performs the aggregation mode on the data received from rules.\n \n * When the aggregation mode is Value, the profile result will have the value of the rule as the output.\n * When the aggregation mode is Count, the profile will have the count of events with category closed in the past 5 minutes.\n * When the aggregation mode is Distinct, the profile will have the value closed.\n * When aggregation mode is Sum, the data type should be Integer or double and it will be the sum of all matching values in the last 5 minutes.\n * When aggregation mode is Max, the data type should be Integer or double and it will be the max of all matching values in the last 5 minutes.\n * When aggregation mode is Min, the data type should be Integer or double and it will be the min of all matching values in the last 5 minutes.\n * When aggregation mode is Average, the data type should be Integer or double and it will be the average of all matching values in the last 5 minutes.\n\n\n **Example template with multiple rules :** \n ```\n1. {\n2. \"name\": \"sample-template-multi-condition\",\n3. \"attributes\": [\n4. {\n5. \"version\": \"0.1\",\n6. \"event\": \"Quote\",\n7. \"metaDataType\": \"string\",\n8. \"metaData\": \"email\",\n9. \"limit\": 1,\n10. \"displayName\": \"Email\",\n11. \"lookBackDurationType\": \"days\",\n12. \"lookBackPeriod\": 50,\n13. \"aggregationMode\": \"Value\",\n14. \"rules\": {\n15. \"args\": [\n16. \"Quote,isEV,string,Value EQ Yes\",\n17. \"Quote,isEV,string,Value EQ No\",\n18. {\n19. \"args\": [\n20. \"Quote,make,string,Value EQ Honda\",\n21. \"Quote,model,string,Value EQ CR-V\"\n22. ],\n23. \"logic\": \"AND\"\n24. }\n25. ],\n26. \"logic\": \"OR\"\n27. },\n28. \"widgetAttributes\": {\n29. \"type\": \"table\"\n30. },\n31. \"verbose\": false\n32. }\n33. ]\n34. }\n ```\n1. In the above template we have multiple rules.\n2. The arguments in line 20 and 21 are evaluated with logical AND condition.\n3. Then arguments in line 16 and 17 along with the result for 20 AND 21 are evaluated with logical OR (line 26).\n"
operationId: createTemplate
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrUpdateTemplateModel'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-name/{templateName}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Get A specific Template searched by template name
description: "Get Template details by template Name in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: getTemplatebyName
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 63feryn344678998djs878
- name: templateName
in: path
description: Template Name
required: true
schema:
type: string
example: sample-template
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileResponse'
'404':
description: Not found
'500':
description: Internal error
security:
- bearerAuth: []
/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-name/{templateName}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Historic Progressive Profile View by Template Name
description: "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: getProgressiveProfileViewByTemplateName
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: personId
in: path
description: Person ID
required: true
schema:
type: string
example: 56fghn344678defjs878
- name: templateName
in: path
description: Template Name
required: true
schema:
type: string
example: insurance-template
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewStreamModel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-id/{templateId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Historic Progressive Profile View
description: "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: getProgressiveProfileView
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: personId
in: path
description: Person ID
required: true
schema:
type: string
example: 56fghn344678defjs878
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 56fghn344678defjs878
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewStreamModel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Historic Progressive Profile View By Template Name
description: Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes
operationId: getProgressiveProfileViewByIdentityAndTemplateName
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: path
description: Identity
required: true
schema:
type: string
example: ram@cisco.com
- name: templateName
in: path
description: Template Name
required: true
schema:
type: string
example: insurance-template
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewStreamModel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Historic Progressive Profile View By Template Id
description: Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes
operationId: getProgressiveProfileViewByIdentityAndTemplateId
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: path
description: identity
required: true
schema:
type: string
example: ram@cisco.com
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 56fghn344678defjs878
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewStreamModel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError400'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Stream Progressive profile Views By Template Name
description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: streamProgressiveProfileViewsByTemplateName
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: path
description: "Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."
required: true
schema:
type: string
example: srindura@gmail.com
- name: templateName
in: path
description: Template Name
required: true
schema:
type: string
example: insurance-template
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewModel'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'409':
description: Resource already exists
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError409'
'429':
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError429'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Stream Progressive profile Views By Template Id
description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: streamProgressiveProfileViews
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: path
description: "Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."
required: true
schema:
type: string
example: srindura@gmail.com
- name: templateId
in: path
description: Template ID
required: true
schema:
type: string
example: 56fghn344678defjs878
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ProgressiveProfileViewModel'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'409':
description: Resource already exists
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError409'
'429':
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError429'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/events/workspace-id/{workspaceId}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Historic Journey Events
description: "Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: historicEvents
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: query
description: "Identity to search events for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."
required: false
schema:
type: string
example: ram@cisco.com
- name: sortBy
in: query
description: sort By Field
required: false
schema:
type: string
example: identity
- name: sort
in: query
description: sort direction
required: false
schema:
type: string
example: desc
- name: filter
in: query
description: 'Optional filter which can be applied to the elements to be fetched.
This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).'
required: false
schema:
type: string
example: identityType=='phone'
- name: data
in: query
description: 'Optional filter on data filed which can be applied to the elements to be fetched.
This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).'
required: false
schema:
type: string
example: agentid=='3224343fddfdfdf'
- name: page
in: query
description: 'Index of the page of results to be fetched.
Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.'
required: false
schema:
type: integer
example: 0
- name: pageSize
in: query
description: Number of items to be displayed on a page.
required: false
schema:
type: integer
example: 10
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/JourneyEventStreamModel'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError404'
'409':
description: Resource already exists
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError409'
'429':
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError429'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError500'
security:
- bearerAuth: []
/v1/api/events/stream/workspace-id/{workspaceId}/identity/{identity}:
get:
tags:
- Journey - Profile Creation & Insights API
summary: Stream Events By Identity
description: "Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope."
operationId: streamEventsByIdentity
parameters:
- name: workspaceId
in: path
description: Workspace ID
required: true
schema:
type: string
example: 6377dafe02e7cc19b03a71b7
- name: identity
in: path
description: "Person Identity. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-enco
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webex/refs/heads/main/openapi/webex-journey-profile-creation-insights-api-api-openapi.yml