openapi: 3.2.0
info:
title: Webex Journey - Profile Creation & Insights API API
version: 1.0.0
description: 'Operations tagged Journey - Profile Creation & Insights API across 2 of this provider''s published API definitions:
webex-contact-center-openapi.json, webex-journey-profile-creation-insights-api-api-openapi.yml. Each path carries the
servers of the definition it was published in.'
x-provenance:
method: harvested
authored_by: Cisco Webex
harvested_by: API Evangelist
harvested_on: '2026-08-19'
first_party: true
note: Published by Cisco. Retrieved unmodified except for this x-provenance block.
provider_published: true
derived_view: Per-tag view of webex-contact-center-openapi.json, the provider's source document. Operations and schemas
are the provider's, unmodified; only the partition is ours.
derived_from: webex-contact-center-openapi.json
operation_coverage: 14/14
x-evidence:
- type: source
url: https://github.com/webex/webex-openapi-specs/blob/main/public-spec/webex-contact-center.json
- type: raw
url: https://raw.githubusercontent.com/webex/webex-openapi-specs/main/public-spec/webex-contact-center.json
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:
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webex/refs/heads/main/openapi/webex-journey-profile-creation-insights-api-api-openapi.yml