diff --git a/definitions/openapi_latest.json b/definitions/openapi_latest.json
index fdefb5e..a49fc1d 100644
--- a/definitions/openapi_latest.json
+++ b/definitions/openapi_latest.json
@@ -12,7 +12,7 @@
"name" : "BlueConic",
"url" : "https://github.com/blueconic/openapi/blob/main/LICENSE.MD"
},
- "version" : "89.0"
+ "version" : "90.0"
},
"servers" : [ {
"url" : "https://{blueconicHostname}/rest/v2",
@@ -26,7 +26,7 @@
} ],
"tags" : [ {
"name" : "Audit Events",
- "description" : "The Audit Event API allows users to connect BlueConic to a SIEM system. We recommend using this API to periodically receive security-related activities based on a rolling window. The API has a 30-day retention period.\n\nThe API logs the following audit events:\n\n| Object | Events |\n| :---------------------------------------- |:-----------------------------------------------------------------------------------------------|\n| BlueConic hostname | Create, Update, Delete |\n| BlueConic Support Access | Update (for each change) |\n| Channel | Create, Update, Delete |\n| Clean up rule | Create, Update, Delete |\n| Connection | Create, Update, Delete, Manual run, Scheduled run |\n| Dashboard | Create, Update, Delete |\n| Dialogue | Create, Update, Delete |\n| Domain Group | Create, Update, Delete |\n| Group | Read, Update, Delete |\n| Group type | Create, Update, Delete |\n| Ip range | Create, Update, Delete |\n| Language | Create, Update, Delete |\n| Lifecycle | Create, Update, Delete |\n| Merge rule | Create, Update, Delete |\n| Notebook | Create, Update, Delete, Manual run, Scheduled run, Editor run |\n| OAuth application | Create, Update, Delete |\n| OAuth token | Create, Update, Delete |\n| Objective | Create, Update, Delete |\n| Plugin | Create, Update, Delete |\n| Privacy setting | Update (for each change) |\n| Profile | Read, Update, Delete |\n| Profile property | Create, Update, Delete |\n| Role | Create, Update, Delete |\n| Segment | Create, Update, Delete |\n| Single Sign On Setting | Update (for each change) |\n| Supported Legislation Zone | Create, Delete, Update |\n| Tracker | Create, Update, Delete |\n| User | Login, Login failed, Logout, Create, Update, Delete, Password reset requested, Password change |\n\n\nOnly Profile and Group viewed, updated, or deleted by a user from the Profile and Groups tab are logged.\n\nThe following events are not considered as human actions, and therefore not covered in the Platform\nAudit Event API:\n\n- Connections that import or export profiles.\n- Profile and group creation (Profiles can only be created by a visitor or an import connection).\n\n**Event data**\n\nThe following event data is available:\n\n| Field | Description | Example values |\n| :--- | :--- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|date|Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt format.| 2023-04-15T11:24:01.183Z |\n|username|(BlueConic) Identifier (email address) of the user who did the action.
Value is empty for failed login attempts.| test@blueconic.com |\n|objectType|Object of the action.|
- BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUPvGROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
|\n|objectId|- Email address in case of a user.
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case the objectId is empty
- Grouptype_GroupID in case of a group
- For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectId is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
- For BLUECONIC_SUPPORT_ACCESS_SETTING the objectID contains the new settings.
- `\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
- `\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }], (contains the new list)` or
- `\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
- UUID or identifier in case of other object types.
| - 1b1e50a5-c46a-4309-a95c-d4e19985fbbb
- test@blueconic.com
- test_objective
- test_profile_property
|\n|objectName|Human readable name of the object.
For Profiles, the name is determined by the first value that is not empty:
- fullname
- email
- BlueConic ID (UUID)
For Users, the name is determined by the first value that is not empty:
- fullname
- email
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case, the objectName is empty.
For groups, the name is the group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectName is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For BLUECONIC_SUPPORT_ACCESS_SETTING the objectName contains the new settings.
`\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
`\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }],` (contains the new list) or
`\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
| - SFTP connection
- test@blueconic.om
- Keyword Interest Ranking
|\n|operation| Action performed on the object. | - CREATE
- UPDATE
- DELETE
- EDITOR_RUN
- READ
- LOGIN
- LOGIN_FAILED
- LOGOUT
- MANUAL_RUN
- PASSWORD_RESET_REQUESTED
- PASSWORD_CHANGE
- SCHEDULED_RUN
\n|ipAddress| The source IP address from which the event was triggered. | 192.168.1.100 |\n|application| The application that performed the audit event operation. | blueconic |\n\n"
+ "description" : "The Audit Event API allows users to connect BlueConic to a SIEM system. We recommend using this API to periodically receive security-related activities based on a rolling window. The API has a 30-day retention period.\n\nThe API logs the following audit events:\n\n| Object | Events |\n| :---------------------------------------- |:-----------------------------------------------------------------------------------------------|\n| BlueConic hostname | Create, Update, Delete |\n| BlueConic Support Access | Update (for each change) |\n| Channel | Create, Update, Delete |\n| Clean up rule | Create, Update, Delete |\n| Connection | Create, Update, Delete, Manual run, Scheduled run |\n| Dashboard | Create, Update, Delete |\n| Dialogue | Create, Update, Delete |\n| Domain Group | Create, Update, Delete |\n| Group | Read, Update, Delete |\n| Group type | Create, Update, Delete |\n| Ip range | Create, Update, Delete |\n| Language | Create, Update, Delete |\n| Lifecycle | Create, Update, Delete |\n| Merge rule | Create, Update, Delete |\n| Notebook | Create, Update, Delete, Manual run, Scheduled run, Editor run |\n| OAuth application | Create, Update, Delete |\n| OAuth token | Create, Update, Delete |\n| Objective | Create, Update, Delete |\n| Plugin | Create, Update, Delete |\n| Privacy setting | Update (for each change) |\n| Profile | Read, Update, Delete |\n| Profile property | Create, Update, Delete |\n| Role | Create, Update, Delete |\n| Segment | Create, Update, Delete |\n| Single Sign On Setting | Update (for each change) |\n| Supported Legislation Zone | Create, Delete, Update |\n| Tracker | Create, Update, Delete |\n| User | Login, Login failed, Logout, Create, Update, Delete, Password reset requested, Password change |\n\n\nOnly Profile and Group viewed, updated, or deleted by a user from the Profile and Groups tab are logged.\n\nThe following events are not considered as human actions, and therefore not covered in the Platform\nAudit Event API:\n\n- Connections that import or export profiles.\n- Profile and group creation (Profiles can only be created by a visitor or an import connection).\n\n**Event data**\n\nThe following event data is available:\n\n| Field | Description | Example values |\n| :--- | :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|date|Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt format.| 2023-04-15T11:24:01.183Z |\n|username|(BlueConic) Identifier (email address) of the user who did the action.
Value is empty for failed login attempts.| test@blueconic.com |\n|objectType|Object of the action.| - BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUP
- GROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
|\n|objectId|- Email address in case of a user.
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case the objectId is empty
- Grouptype_GroupID in case of a group
- For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectId is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
- For BLUECONIC_SUPPORT_ACCESS_SETTING the objectID contains the new settings.
- `\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
- `\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }], (contains the new list)` or
- `\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
- UUID or identifier in case of other object types.
| - 1b1e50a5-c46a-4309-a95c-d4e19985fbbb
- test@blueconic.com
- test_objective
- test_profile_property
|\n|objectName|Human readable name of the object.
For Profiles, the name is determined by the first value that is not empty:
- fullname
- email
- BlueConic ID (UUID)
For Users, the name is determined by the first value that is not empty:
- fullname
- email
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case, the objectName is empty.
For groups, the name is the group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectName is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For BLUECONIC_SUPPORT_ACCESS_SETTING the objectName contains the new settings.
`\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
`\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }],` (contains the new list) or
`\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
| - SFTP connection
- test@blueconic.om
- Keyword Interest Ranking
|\n|operation| Action performed on the object. | - CREATE
- UPDATE
- DELETE
- EDITOR_RUN
- READ
- LOGIN
- LOGIN_FAILED
- LOGOUT
- MANUAL_RUN
- PASSWORD_RESET_REQUESTED
- PASSWORD_CHANGE
- SCHEDULED_RUN
\n|ipAddress| The source IP address from which the event was triggered. | 192.168.1.100 |\n|application| The application that performed the audit event operation. | blueconic |\n\n"
}, {
"name" : "Interaction events",
"description" : "Page view, view, click, conversion events for profiles on a website. [Read more](https://support.blueconic.com/hc/en-us/articles/360020105614-Tracking-metrics-for-views-clicks-and-conversions#watch-the-video-analyzing-dialogues-the-metrics-0-0)."
@@ -1028,8 +1028,7 @@
"schema" : {
"type" : "array",
"items" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
}
},
"example" : "profile.timeline"
@@ -1038,20 +1037,27 @@
"in" : "query",
"description" : "Only returns the given profile properties in the response.",
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
},
"example" : "email,fullname,visits"
}, {
"name" : "eventTypeId",
"in" : "query",
- "description" : "Filter returned timeline events for a specific type. Only one timeline event type ID is allowed.",
+ "description" : "Filter returned timeline events for a specific type.",
"schema" : {
"type" : "string",
- "format" : "uuid",
- "default" : ""
+ "format" : "uuid"
},
"example" : "order"
+ }, {
+ "name" : "eventProperty",
+ "in" : "query",
+ "description" : "Filter returned timeline events for a specific type and specific event type properties.",
+ "schema" : {
+ "type" : "string",
+ "format" : "uuid"
+ },
+ "example" : "order.orderline"
}, {
"name" : "eventCount",
"in" : "query",
@@ -1067,8 +1073,7 @@
"in" : "query",
"description" : "Filter to only include timeline events that are dated later than this date. The format of fromDate is \"2023-01-01T00:00Z\" or with a time zone offset \"2023-01-01T00:00+05:00\"",
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
},
"example" : "2023-01-22T11:21:33Z"
}, {
@@ -1076,8 +1081,7 @@
"in" : "query",
"description" : "Filter to only include timeline events that are dated before this date. The format of toDate is \"2023-01-01T00:00Z\" or with a time zone offset \"2023-01-01T00:00+05:00\"",
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
},
"example" : "2023-03-05T12:00:00Z"
}, {
@@ -1312,8 +1316,7 @@
"in" : "query",
"description" : "The ID of the BlueConic profile. Note that the profile ID is required when you use a [recommendation algorithm](https://support.blueconic.com/hc/en-us/articles/360022093313-BlueConic-recommendation-algorithms) that depends on the profile, such as 'Collaborative filtering' or 'Seen articles / Seen products'.",
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
},
"example" : "640d01c7-1c30-4085-adf9-afad6560ec99"
}, {
@@ -1322,8 +1325,7 @@
"description" : "The ID of the content store to get the items from.",
"required" : true,
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
},
"example" : "0693330e-679a-48db-b94f-a8921b76149e"
}, {
@@ -1331,8 +1333,7 @@
"in" : "query",
"description" : "ID of the current item being shown. Some algorithms are based on this information. It also excludes this item from being returned in the result.",
"schema" : {
- "type" : "string",
- "default" : ""
+ "type" : "string"
}
}, {
"name" : "frequencyCap",
@@ -1340,8 +1341,7 @@
"description" : "The number of times an item can be recommended to a profile before being hidden from future recommendations.",
"schema" : {
"type" : "integer",
- "format" : "int32",
- "default" : 0
+ "format" : "int32"
},
"example" : 5
}, {
@@ -1350,8 +1350,7 @@
"description" : "Width of the images to return.",
"schema" : {
"type" : "integer",
- "format" : "int32",
- "default" : 0
+ "format" : "int32"
},
"example" : 100
}, {
@@ -1360,8 +1359,7 @@
"description" : "Height of the images to return.",
"schema" : {
"type" : "integer",
- "format" : "int32",
- "default" : 0
+ "format" : "int32"
},
"example" : 100
}, {
diff --git a/definitions/openapi_latest.yaml b/definitions/openapi_latest.yaml
index b290ca3..fa438a7 100644
--- a/definitions/openapi_latest.yaml
+++ b/definitions/openapi_latest.yaml
@@ -107,7 +107,7 @@ info:
license:
name: BlueConic
url: https://github.com/blueconic/openapi/blob/main/LICENSE.MD
- version: "89.0"
+ version: "90.0"
servers:
- url: "https://{blueconicHostname}/rest/v2"
description: The BlueConic server
@@ -189,7 +189,7 @@ tags:
\ \
\ \
\ \
- \ |\n| :--- | :--- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\
+ \ |\n| :--- | :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\
|date|Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt\
\ format.| 2023-04-15T11:24:01.183Z \
\ \
@@ -198,8 +198,8 @@ tags:
\ \
\ \
\ \
- \ |\n|username|(BlueConic) Identifier (email address) of the\
- \ user who did the action.
Value is empty for failed login attempts.|\
+ \ |\n|username|(BlueConic) Identifier (email address)\
+ \ of the user who did the action.
Value is empty for failed login attempts.|\
\ test@blueconic.com \
\ \
\ \
@@ -207,7 +207,7 @@ tags:
\ \
\ \
\ \
- \ |\n|objectType|Object of the action.| - BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUPvGROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
\
+ \ |\n|objectType|Object of the action.| - BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUP
- GROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
\
\ |\n|objectId|- Email address in case of a user.
- In the case of\
\ LOGIN_FAILED and a user tried to login with an invalid format email address,\
\ it could be that the user filled the password in the email address field. In\
@@ -226,15 +226,15 @@ tags:
\ \
\ \
\ \
- \ |\n|objectName|
Human readable name of the object.
For\
- \ Profiles, the name is determined by the first value that is not empty:
- fullname
- email
- BlueConic\
- \ ID (UUID)
For Users, the name is determined by the first value that\
- \ is not empty:
- fullname
- email
- In the case\
- \ of LOGIN_FAILED and a user tried to login with an invalid format email address,\
- \ it could be that the user filled the password in the email address field. In\
- \ that case, the objectName is empty.
For groups, the name is the\
- \ group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectName\
- \ is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For\
+ \ |\n|objectName|
Human readable name of\
+ \ the object.
For Profiles, the name is determined by the first value that\
+ \ is not empty:
- fullname
- email
- BlueConic ID (UUID)
For\
+ \ Users, the name is determined by the first value that is not empty:
- fullname
- email
- In\
+ \ the case of LOGIN_FAILED and a user tried to login with an invalid format email\
+ \ address, it could be that the user filled the password in the email address\
+ \ field. In that case, the objectName is empty.
For groups, the name\
+ \ is the group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING,\
+ \ the objectName is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For\
\ BLUECONIC_SUPPORT_ACCESS_SETTING the objectName contains the new settings.
`\"\
objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
`\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\"\
@@ -247,7 +247,7 @@ tags:
\ \
\ \
\ \
- \ |\n|operation| Action performed on the object. \
+ \ |\n|operation| Action performed on the object.\
\ \
\ \
\ \
@@ -263,12 +263,12 @@ tags:
\ \
\ \
\ \
- \ |
- CREATE
- UPDATE
- DELETE
- EDITOR_RUN
- READ
- LOGIN
- LOGIN_FAILED
- LOGOUT
- MANUAL_RUN
- PASSWORD_RESET_REQUESTED
- PASSWORD_CHANGE
- SCHEDULED_RUN
\
+ \ | - CREATE
- UPDATE
- DELETE
- EDITOR_RUN
- READ
- LOGIN
- LOGIN_FAILED
- LOGOUT
- MANUAL_RUN
- PASSWORD_RESET_REQUESTED
- PASSWORD_CHANGE
- SCHEDULED_RUN
\
\ \
\ \
\ \
\ \
- \ \n|ipAddress| The source IP address from which the event was triggered.\
+ \ \n|ipAddress| The source IP address from which the event was triggered.\
\ \
\ \
\ \
@@ -290,8 +290,9 @@ tags:
\ \
\ \
\ \
- \ |\n\
- |application| The application that performed the audit event operation. \
+ \ \
+ \ |\n|application| The application that performed the audit event operation.\
+ \ \
\ \
\ \
\ \
@@ -305,16 +306,15 @@ tags:
\ \
\ \
\ \
+ \ | blueconic\
\ \
- \ | blueconic\
\ \
\ \
\ \
\ \
\ \
\ \
- \ |\n\
- \n"
+ \ |\n\n"
- name: Interaction events
description: "Page view, view, click, conversion events for profiles on a website.\
\ [Read more](https://support.blueconic.com/hc/en-us/articles/360020105614-Tracking-metrics-for-views-clicks-and-conversions#watch-the-video-analyzing-dialogues-the-metrics-0-0)."
@@ -2097,24 +2097,28 @@ paths:
type: array
items:
type: string
- default: ""
example: profile.timeline
- name: properties
in: query
description: Only returns the given profile properties in the response.
schema:
type: string
- default: ""
example: "email,fullname,visits"
- name: eventTypeId
in: query
- description: Filter returned timeline events for a specific type. Only one
- timeline event type ID is allowed.
+ description: Filter returned timeline events for a specific type.
schema:
type: string
format: uuid
- default: ""
example: order
+ - name: eventProperty
+ in: query
+ description: Filter returned timeline events for a specific type and specific
+ event type properties.
+ schema:
+ type: string
+ format: uuid
+ example: order.orderline
- name: eventCount
in: query
description: The maximum number of timeline events to return.
@@ -2130,7 +2134,6 @@ paths:
zone offset "2023-01-01T00:00+05:00"
schema:
type: string
- default: ""
example: 2023-01-22T11:21:33Z
- name: toDate
in: query
@@ -2139,7 +2142,6 @@ paths:
offset "2023-01-01T00:00+05:00"
schema:
type: string
- default: ""
example: 2023-03-05T12:00:00Z
- name: collapse
in: query
@@ -2647,7 +2649,6 @@ paths:
\ articles / Seen products'."
schema:
type: string
- default: ""
example: 640d01c7-1c30-4085-adf9-afad6560ec99
- name: storeId
in: query
@@ -2655,7 +2656,6 @@ paths:
required: true
schema:
type: string
- default: ""
example: 0693330e-679a-48db-b94f-a8921b76149e
- name: itemId
in: query
@@ -2664,7 +2664,6 @@ paths:
result.
schema:
type: string
- default: ""
- name: frequencyCap
in: query
description: The number of times an item can be recommended to a profile before
@@ -2672,7 +2671,6 @@ paths:
schema:
type: integer
format: int32
- default: 0
example: 5
- name: imageWidth
in: query
@@ -2680,7 +2678,6 @@ paths:
schema:
type: integer
format: int32
- default: 0
example: 100
- name: imageHeight
in: query
@@ -2688,7 +2685,6 @@ paths:
schema:
type: integer
format: int32
- default: 0
example: 100
- name: manualViewCounting
in: query
diff --git a/definitions/r89/openapi.json b/definitions/r89/openapi.json
new file mode 100644
index 0000000..fdefb5e
--- /dev/null
+++ b/definitions/r89/openapi.json
@@ -0,0 +1,2928 @@
+{
+ "openapi" : "3.1.0",
+ "info" : {
+ "title" : "BlueConic REST API v2",
+ "description" : "Welcome to the [BlueConic](https://www.blueconic.com) REST API v2. Our recently updated APIs offer access to a wealth of resources to interact with BlueConic visitor profiles, segments, interactions, and audit events via OpenAPI and OAuth 2.0 authorization flows making the interconnection between various services more secure, intuitive, and reliable than ever before.\n\nThis page describes how developers can use OAuth 2.0, the industry-standard protocol for authorization, to authorize apps in BlueConic and get started using the BlueConic REST API v2.\n\nLearn more about [how to use the BlueConic REST API v2](https://support.blueconic.com/hc/en-us/articles/200453891-Using-the-BlueConic-REST-API).\n\n# Authorizing an application to use the BlueConic REST API via OAuth 2.0\n\nIf you have an external software application that needs to communicate with BlueConic, you need to allow access to the BlueConic REST API. The authorization process in BlueConic for this access is built to OAuth 2.0 specifications. You can use either of two authorization flows: the authorization code flow and the client credentials flow. The most secure flow is the authorization code flow, intended for use with a user who can log in to BlueConic and authenticate the application to use the BlueConic API. The client credentials flow is easier to implement but lacks security features present in the authorization code flow. The client credentials flow is intended for machine-to-machine applications. \n\n## Using the Authorization code flow\n\nTo use the BlueConic REST API with OAuth 2.0 according to the authorization code flow you need to complete the following steps:\n\n1. Configure BlueConic so your external OAuth 2.0 application can authenticate and use the REST API. This means that you have to:\n - Have a BlueConic user with the \"Applications\" permission. This user can configure the details of the external application in BlueConic.\n - Have a BlueConic user with the \"Authorize Applications\" permission. This user can authorize the external application via the redirect page served by the authorization server.\n - Configure the external application on the BlueConic Access management > Applications tab, so BlueConic can store public client ID and the client secret. The external app uses these properties to perform the initial request for an authorization code.\n\n\n2. Develop an application that can execute OAuth 2.0 REST API requests. Specifically, that means an application that is able to:\n - Generate a code verifier and code challenge.\n - Store the public client ID and client secret as configured in BlueConic (see step 1). \n - Request an authorization code from the BlueConic authorization server. Include the code challenge in the request. \n - Show the user the redirect page served by the BlueConic authorization server, so the user can authenticate with credentials and consent to giving the application BlueConic REST API access.\n - Receive the authorization code from the BlueConic authorization server.\n - Use the authorization code to request an access token (and refresh token) from the BlueConic authorization server. Include the code verifier in the request. You must also provide the client ID and client secret for client authentication. You can do so by sending the client credentials in the body of your POST request.\n - Use the access token to perform REST API requests. \n - Revoke access if the user of the app so chooses (meaning that after this revocation, a new authorization grant is required to use the BlueConic REST API).\n - Handle refresh token rotation. This means that whenever a new access token is requested using the refresh token, a new refresh token is also supplied along with the new access token.\n - Handle all possible responses from the BlueConic REST API appropriately.\n\n[Read more about the Authorization Code Flow](https://support.blueconic.com/hc/en-us/articles/14912561861403)\n\n## Using the Client credentials flow\n\nTo make use of the BlueConic REST API with OAuth 2.0 following the client credentials flow, you need to complete the following steps:\n\n1. Configure BlueConic so your external OAuth 2.0 application can use the REST API. This means that you have to:\n - Have a user with the \"Applications\" permission. This user can configure the details of the external application in BlueConic.\n - Have a user with the \"Authorize Applications\" permission, who also has all permissions needed to use the REST API endpoint that you intend to use.\n - Configure the external application on the Access management > Applications tab, so BlueConic can generate and store the public client ID and client secret for client authentication. Also select at least one scope so the app has access to that part of the REST API.\n \n2. Develop an application that can execute OAuth 2.0 REST API requests. Specifically that means an application that is able to:\n - Store the public client ID and client secret as configured in BlueConic (see above).\n - Use the client ID and client secret to request an access token from the BlueConic authorization server. You can do so by sending the client credentials in the body of your POST request.\n - Use the access token to perform REST API requests.\n - Handle all possible responses from the BlueConic REST API appropriately.\n\n[Read more about the Client Credentials Flow](https://support.blueconic.com/hc/en-us/articles/14912655111963)\n\n# Using the try-out feature\nThe “Try” feature allows you to directly make REST calls to the API server, where you can make requests and see the responses, allowing you to experiment with the BlueConic API and understand how it works.\n\nYou can enter your BlueConic URL in the “API Servers” section. After that, you can try out the calls that don’t require authentication, such as “Get interactions”. You can enter the request parameters and click “Try”.\n\n## OAuth 2.0 authentication\n\nMost calls require OAuth 2.0 authentication, such as “Get audit events”. This can be seen at the right top and under the Request heading of each API method. To use the “Try” feature, you need to authenticate via OAuth 2.0. First create an Application in your BlueConic tenant (see above). When using the Authorization code flow, make sure to set the redirect URL to this tool as specified under the OAuth 2.0 authentication section. After you create the Application, authenticate this tool in the “Authentication” section. Enter the client ID and client secret in the correct OAuth 2.0 flow for which you created the application and press “GET TOKEN”. If the tool got a token successfully, you will see the text “API key applied” just under the “Authentication” heading. In calls that require Authentication, it will say “OAuth (OAuth 2.0) in header”. Now you can use the “Try” feature for calls that require OAuth 2.0. If you hover over the authentication scheme at the top right of an API method, you will see the required scopes (e.g. “Get audit events” has the scope read:audit-events). Make sure you set these scopes for the Application in BlueConic.\n\n# General functionality for all endpoints\n\n1. By using `prettyPrint`, the JSON data is formatted in a way that makes it easier to read and work with. This can be especially useful when working with large or complex JSON datasets. Add the following to the query string of a request to pretty print JSON: `&prettyPrint=true`.\n2. Gzip encoding is a method of compressing data and is commonly used to reduce the size of files sent over the Internet. BlueConic supports this so a client can set the request header `Accept-Encoding: gzip`. BlueConic will then compress the data in its response and send it back to the client with the `Content-Encoding: gzip` header. \n\n",
+ "termsOfService" : "https://www.blueconic.com/blueconic-terms-and-conditions",
+ "contact" : {
+ "name" : "Contact us",
+ "url" : "https://support.blueconic.com/hc/en-us/requests/new"
+ },
+ "license" : {
+ "name" : "BlueConic",
+ "url" : "https://github.com/blueconic/openapi/blob/main/LICENSE.MD"
+ },
+ "version" : "89.0"
+ },
+ "servers" : [ {
+ "url" : "https://{blueconicHostname}/rest/v2",
+ "description" : "The BlueConic server",
+ "variables" : {
+ "blueconicHostname" : {
+ "description" : "BlueConic server hostname, e.g. 'tenant.blueconic.net'",
+ "default" : "tenantname"
+ }
+ }
+ } ],
+ "tags" : [ {
+ "name" : "Audit Events",
+ "description" : "The Audit Event API allows users to connect BlueConic to a SIEM system. We recommend using this API to periodically receive security-related activities based on a rolling window. The API has a 30-day retention period.\n\nThe API logs the following audit events:\n\n| Object | Events |\n| :---------------------------------------- |:-----------------------------------------------------------------------------------------------|\n| BlueConic hostname | Create, Update, Delete |\n| BlueConic Support Access | Update (for each change) |\n| Channel | Create, Update, Delete |\n| Clean up rule | Create, Update, Delete |\n| Connection | Create, Update, Delete, Manual run, Scheduled run |\n| Dashboard | Create, Update, Delete |\n| Dialogue | Create, Update, Delete |\n| Domain Group | Create, Update, Delete |\n| Group | Read, Update, Delete |\n| Group type | Create, Update, Delete |\n| Ip range | Create, Update, Delete |\n| Language | Create, Update, Delete |\n| Lifecycle | Create, Update, Delete |\n| Merge rule | Create, Update, Delete |\n| Notebook | Create, Update, Delete, Manual run, Scheduled run, Editor run |\n| OAuth application | Create, Update, Delete |\n| OAuth token | Create, Update, Delete |\n| Objective | Create, Update, Delete |\n| Plugin | Create, Update, Delete |\n| Privacy setting | Update (for each change) |\n| Profile | Read, Update, Delete |\n| Profile property | Create, Update, Delete |\n| Role | Create, Update, Delete |\n| Segment | Create, Update, Delete |\n| Single Sign On Setting | Update (for each change) |\n| Supported Legislation Zone | Create, Delete, Update |\n| Tracker | Create, Update, Delete |\n| User | Login, Login failed, Logout, Create, Update, Delete, Password reset requested, Password change |\n\n\nOnly Profile and Group viewed, updated, or deleted by a user from the Profile and Groups tab are logged.\n\nThe following events are not considered as human actions, and therefore not covered in the Platform\nAudit Event API:\n\n- Connections that import or export profiles.\n- Profile and group creation (Profiles can only be created by a visitor or an import connection).\n\n**Event data**\n\nThe following event data is available:\n\n| Field | Description | Example values |\n| :--- | :--- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|date|Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt format.| 2023-04-15T11:24:01.183Z |\n|username|(BlueConic) Identifier (email address) of the user who did the action.
Value is empty for failed login attempts.| test@blueconic.com |\n|objectType|Object of the action.| - BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUPvGROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
|\n|objectId|- Email address in case of a user.
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case the objectId is empty
- Grouptype_GroupID in case of a group
- For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectId is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
- For BLUECONIC_SUPPORT_ACCESS_SETTING the objectID contains the new settings.
- `\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
- `\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }], (contains the new list)` or
- `\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
- UUID or identifier in case of other object types.
| - 1b1e50a5-c46a-4309-a95c-d4e19985fbbb
- test@blueconic.com
- test_objective
- test_profile_property
|\n|objectName|Human readable name of the object.
For Profiles, the name is determined by the first value that is not empty:
- fullname
- email
- BlueConic ID (UUID)
For Users, the name is determined by the first value that is not empty:
- fullname
- email
- In the case of LOGIN_FAILED and a user tried to login with an invalid format email address, it could be that the user filled the password in the email address field. In that case, the objectName is empty.
For groups, the name is the group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectName is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For BLUECONIC_SUPPORT_ACCESS_SETTING the objectName contains the new settings.
`\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
`\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\" },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }],` (contains the new list) or
`\"objects\" : [ {\"name\" : \"All BlueConic support employees\", \"id\" : \"all\" } ],`
| - SFTP connection
- test@blueconic.om
- Keyword Interest Ranking
|\n|operation| Action performed on the object. | - CREATE
- UPDATE
- DELETE
- EDITOR_RUN
- READ
- LOGIN
- LOGIN_FAILED
- LOGOUT
- MANUAL_RUN
- PASSWORD_RESET_REQUESTED
- PASSWORD_CHANGE
- SCHEDULED_RUN
\n|ipAddress| The source IP address from which the event was triggered. | 192.168.1.100 |\n|application| The application that performed the audit event operation. | blueconic |\n\n"
+ }, {
+ "name" : "Interaction events",
+ "description" : "Page view, view, click, conversion events for profiles on a website. [Read more](https://support.blueconic.com/hc/en-us/articles/360020105614-Tracking-metrics-for-views-clicks-and-conversions#watch-the-video-analyzing-dialogues-the-metrics-0-0)."
+ }, {
+ "name" : "Interactions",
+ "description" : "Get the interactions (i.e. listeners and/or dialogues) that must be executed for a given profile that visits a certain page. Read more about [Dialogues](https://support.blueconic.com/hc/en-us/articles/202425271-Dialogues-Overview) or [Listeners](https://support.blueconic.com/hc/en-us/articles/202531942-Listeners-Overview)."
+ }, {
+ "name" : "Pageview events",
+ "description" : "The following method allows you to register a pageview event for reporting."
+ }, {
+ "name" : "OAuth 2.0",
+ "description" : "The OAuth 2.0 API allows external applications to be authenticated and authorized to access the public BlueConic API. The OAuth 2.0 specification is implemented according to [RFC 6749](https://www.rfc-editor.org/rfc/rfc6749)."
+ }, {
+ "name" : "Profile events",
+ "description" : "The following methods allow you to retrieve the events of a profile."
+ }, {
+ "name" : "Profile properties",
+ "description" : "The following methods allow you to retrieve and update profile properties."
+ }, {
+ "name" : "Profiles",
+ "description" : "The following methods allow you to create, modify, retrieve properties from, and delete BlueConic visitor profiles, as well as retrieve BlueConic segment information."
+ }, {
+ "name" : "Segments",
+ "description" : "The segment API. The following methods allow you to retrieve information from segments and the profiles within a given segment."
+ }, {
+ "name" : "Recommendations",
+ "description" : "Generate individualized content and product recommendations for a given profile. [Read more](https://support.blueconic.com/hc/en-us/articles/115005971169-Overview-Content-and-Product-Recommendations). To work with recommendations, you have to set up a [content collector](https://support.blueconic.com/hc/en-us/articles/115003214945-Content-Collector) or a [product collector](https://support.blueconic.com/hc/en-us/articles/115003214685-Product-Collector)."
+ }, {
+ "name" : "URL mappings",
+ "description" : "The following methods allow you to create, modify, and retrieve URL mappings (tracking pixel or shortened URL). These can be created via the External tracker tab, but can also be created as a separate object (not visible in the UI) via this REST API directly. You can use external trackers to track customer or visitor activity outside domains in your BlueConic tenant. [Read more](https://support.blueconic.com/hc/en-us/articles/202531862-External-Trackers)."
+ } ],
+ "paths" : {
+ "/auditEvents" : {
+ "get" : {
+ "tags" : [ "Audit Events" ],
+ "summary" : "Get audit events",
+ "description" : "Retrieves the audit events.",
+ "operationId" : "query",
+ "parameters" : [ {
+ "name" : "fromDate",
+ "in" : "query",
+ "description" : "Only return entries that are created later than this date. The fromDate is in the https://www.ietf.org/rfc/rfc3339.txt format.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "2023-01-22T11:21:33.872Z"
+ }, {
+ "name" : "count",
+ "in" : "query",
+ "description" : "Page size for the result.
Maximum limit is 1000",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 100
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the audit events.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/AuditEventsBean"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"auditEvents\": [\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T11:21:33.872Z\",\n \"userName\": \"test@blueconic.com\",\n \"objects\": [\n {\n \"id\": \"68a02413-98d0-4a2b-b65c-4617a3c26fd0\",\n \"name\": \"Campaign Tracker Listener ds\"\n }\n ],\n \"objectType\": \"LISTENER\",\n \"operation\": \"UPDATE\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T11:21:33.672Z\",\n \"userName\": \"test@blueconic.com\",\n \"objectType\": \"PROFILEPROPERTY\",\n \"objects\": [\n {\n \"id\": \"responded_to_campaigns\",\n \"name\": \"responded_to_campaigns\"\n }\n ],\n \"operation\": \"CREATE\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T12:51:32.702Z\",\n \"userName\": \"test@blueconic.com\",\n \"objectType\": \"USER\",\n \"objects\": [\n {\n \"id\": \"test@blueconic.com\",\n \"name\": \"test@blueconic.com\"\n }\n ],\n \"operation\": \"LOGIN\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T12:51:32.702Z\",\n \"objectType\": \"USER\",\n \"objects\": [\n {\n \"id\": \"wrongpassword@blueconic.com\",\n \"name\": \"wrongpassword@blueconic.com\"\n }\n ],\n \"operation\": \"LOGIN_FAILED\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T12:51:32.702Z\",\n \"objectType\": \"USER\",\n \"objects\": [\n {\n \"id\": \"\",\n \"name\": \"\"\n }\n ],\n \"operation\": \"LOGIN_FAILED\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T12:51:32.702Z\",\n \"objectType\": \"USER\",\n \"objects\": [\n {\n \"id\": \"nonexistinguserName@blueconic.com\",\n \"name\": \"nonexistinguserName@blueconic.com\"\n }\n ],\n \"operation\": \"LOGIN_FAILED\",\n \"ipAddress\": \"192.168.1.100\"\n },\n {\n \"application\": \"blueconic\",\n \"date\": \"2023-04-15T12:51:32.702Z\",\n \"userName\": \"test@blueconic.com\",\n \"objectType\": \"PROFILE\",\n \"objects\": [\n {\n \"id\": \"4dc2a97e-707e-4049-a03a-badcce564f3c\",\n \"name\": \"4dc2a97e-707e-4049-a03a-badcce564f3c\"\n },\n {\n \"id\": \"test@blueconic.com\",\n \"name\": \"33f53658-3dc8-4946-b239-ecb65dea9827\"\n }\n ],\n \"operation\": \"READ\",\n \"ipAddress\": \"192.168.1.100\"\n }\n ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:audit-events" ]
+ } ]
+ }
+ },
+ "/interactionEvents" : {
+ "post" : {
+ "tags" : [ "Interaction events" ],
+ "summary" : "Create interaction event",
+ "description" : "Register an interaction event for a profile. When optional parameter `profile` is set, the interaction ID will be added to the profile property \"interactions_viewed\" (in case of \"VIEW\"), \"interactions_clicked\" (in case of \"CLICK\"), or \"interactions_converted\" (in case of \"CONVERSION\") of that profile.",
+ "operationId" : "createEvent",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/InteractionEventBean"
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "No specific content."
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/interactions" : {
+ "get" : {
+ "tags" : [ "Interactions" ],
+ "summary" : "Get interactions",
+ "operationId" : "getInteractions",
+ "parameters" : [ {
+ "name" : "profile",
+ "in" : "query",
+ "description" : "The ID (UUID) of the profile.",
+ "schema" : {
+ "type" : "string",
+ "format" : "uuid"
+ },
+ "examples" : {
+ "BlueConic Profile UUID" : {
+ "description" : "BlueConic Profile UUID",
+ "value" : "f448c035-92c1-44d9-810e-40dbf869285f"
+ }
+ }
+ }, {
+ "name" : "url",
+ "in" : "query",
+ "description" : "The URL of the current page.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "https://www.example.com"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the interactions.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/interactions"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"interactions\": [\n {\n \"defaultLocale\": \"en_US\",\n \"id\": \"2b65eba6-d1c7-4cf9-b1f4-03e3615a42f8\",\n \"interactionType\": {\n \"id\": \"listener_adblock\",\n \"type\": \"listener\"\n },\n \"name\": \"AdBlock Detection\",\n \"parameters\": [\n {\n \"id\": \"property\",\n \"values\": [\n {\n \"locale\": \"en_US\",\n \"value\": [\n \"adblock_detected\"\n ]\n },\n {\n \"locale\": \"nl_NL\",\n \"value\": [\n \"adblock_detected\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"defaultLocale\": \"en_US\",\n \"id\": \"2b65eba6-d1c7-4cf9-b1f4-03e3615a42f8\",\n \"name\": \"AdBlock Detection\"\n }\n ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/pageviewEvents" : {
+ "post" : {
+ "tags" : [ "Pageview events" ],
+ "summary" : "Create page view event",
+ "description" : "Register that a profile visited a certain web page.",
+ "operationId" : "createPageviewEvent",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/PageViewEventBean"
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "No specific content."
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/oauth/authorize" : {
+ "get" : {
+ "tags" : [ "OAuth 2.0" ],
+ "summary" : "Start Authorization Code Flow",
+ "description" : "Starts the Authorization Code Flow. The user will be redirected to the authorization server where the user can grant or deny the external application access. The Proof Key for Code Exchange ([PKCE](https://www.rfc-editor.org/rfc/rfc7636)) extension is enforced for the Authorization Code Flow.",
+ "operationId" : "authorize",
+ "parameters" : [ {
+ "name" : "response_type",
+ "in" : "query",
+ "description" : "The response type. Currently only supports the authorization code grant type.",
+ "required" : true,
+ "schema" : {
+ "type" : "string",
+ "enum" : [ "code" ]
+ },
+ "example" : "code"
+ }, {
+ "name" : "client_id",
+ "in" : "query",
+ "description" : "The client ID of the external application. The client ID is assigned during client registration.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "Zl3QZFUGOKQrABbX2RoGwmgUDOiFAhLq"
+ }, {
+ "name" : "redirect_uri",
+ "in" : "query",
+ "description" : "The redirect URI to which the user is redirected to after successful authentication. The redirect URI must exactly match the redirect URI provided at client registration.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "https://client.example.com/cb"
+ }, {
+ "name" : "code_challenge",
+ "in" : "query",
+ "description" : "The code challenge for PKCE.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "4MwafmutlwDy7ly8QOtO-bUvSVzU3I_OQEDgmB3Pn5A"
+ }, {
+ "name" : "code_challenge_method",
+ "in" : "query",
+ "description" : "The code challenge method for PKCE.",
+ "schema" : {
+ "type" : "string",
+ "default" : "PLAIN",
+ "enum" : [ "PLAIN", "S256" ]
+ },
+ "example" : "S256"
+ }, {
+ "name" : "state",
+ "in" : "query",
+ "description" : "An opaque value provided by the client to maintain state between the request and redirect URI. The state value is added to the redirect URI upon redirection.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "xyz"
+ } ],
+ "responses" : {
+ "302" : {
+ "description" : "Redirects to the redirect URI with the error added to the query component of the redirect URI."
+ },
+ "303" : {
+ "description" : "Redirects to the authorization server."
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/oauth/revoke" : {
+ "post" : {
+ "tags" : [ "OAuth 2.0" ],
+ "summary" : "Revoke token",
+ "description" : "Revokes access and/or refresh tokens.",
+ "operationId" : "revoke",
+ "requestBody" : {
+ "content" : {
+ "application/x-www-form-urlencoded" : {
+ "schema" : {
+ "type" : "object",
+ "properties" : {
+ "token" : {
+ "type" : "string",
+ "description" : "The access or refresh token to revoke."
+ },
+ "client_id" : {
+ "type" : "string",
+ "description" : "The client id is a unique identifier assigned to a client application."
+ },
+ "client_secret" : {
+ "type" : "string",
+ "description" : "The client secret is a confidential string used for authentication in OAuth 2.0."
+ },
+ "token_type_hint" : {
+ "type" : "string",
+ "description" : "A token type hint to optimize token retrieval during revocation. The token type hint will be ignored if it contains an invalid value.",
+ "enum" : [ "access_token", "refresh_token" ]
+ }
+ },
+ "required" : [ "client_id", "client_secret", "token" ]
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Token has been revoked."
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/TokenErrorResponse"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"error_description\": \"Unsupported grant type\",\n \"error\": \"unsupported_grant_type\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized).",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/TokenErrorResponse"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"error_description\": \"Client authentication failed\",\n \"error\": \"invalid_client\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/oauth/token" : {
+ "post" : {
+ "tags" : [ "OAuth 2.0" ],
+ "summary" : "Get token",
+ "description" : "Obtains an access token and optional refresh token by presenting an authorization grant or refresh token. [Refresh Token Rotation](https://www.rfc-editor.org/rfc/rfc6819#section-5.2.2.3) is supported by default for the Authorization Code Flow.",
+ "operationId" : "token",
+ "requestBody" : {
+ "content" : {
+ "application/x-www-form-urlencoded" : {
+ "schema" : {
+ "type" : "object",
+ "properties" : {
+ "grant_type" : {
+ "type" : "string",
+ "description" : "The grant type.",
+ "enum" : [ "authorization_code", "client_credentials", "refresh_token" ]
+ },
+ "client_id" : {
+ "type" : "string",
+ "description" : "The client id is a unique identifier assigned to a client application."
+ },
+ "client_secret" : {
+ "type" : "string",
+ "description" : "The client secret is a confidential string used for authentication in OAuth 2.0."
+ },
+ "code" : {
+ "type" : "string",
+ "description" : "The authorization code, which serves as the grant. Only required when `grant_type=authorization_code`."
+ },
+ "redirect_uri" : {
+ "type" : "string",
+ "description" : "The redirect URI passed in the authorization request. Only required when `grant_type=authorization_code`."
+ },
+ "code_verifier" : {
+ "type" : "string",
+ "description" : "The code verifier for PKCE."
+ },
+ "refresh_token" : {
+ "type" : "string",
+ "description" : "The refresh token with which to obtain a new access and refresh token. Only required when `grant_type=refresh_token`."
+ }
+ },
+ "required" : [ "client_id", "client_secret", "grant_type" ]
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Returns an access token and optional refresh token.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/TokenSuccessResponse"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"access_token\": \"2YotnFZFEjr1zCsicMWpAA\",\n \"refresh_token\": \"tGzv3JOkF0XG5Qx2TlKWIB\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/TokenErrorResponse"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"error_description\": \"Unsupported grant type\",\n \"error\": \"unsupported_grant_type\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized).",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/TokenErrorResponse"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"error_description\": \"Client authentication failed\",\n \"error\": \"invalid_client\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/profileEvents/{profileId}" : {
+ "get" : {
+ "tags" : [ "Profile events" ],
+ "summary" : "Get profile events",
+ "description" : "Retrieves the consent management events for a profile; consent changed or permission level changed.",
+ "operationId" : "get",
+ "parameters" : [ {
+ "name" : "profileId",
+ "in" : "path",
+ "required" : true,
+ "schema" : {
+ "type" : "string",
+ "format" : "uuid"
+ },
+ "examples" : {
+ "BlueConic Profile UUID" : {
+ "description" : "BlueConic Profile UUID",
+ "value" : "f448c035-92c1-44d9-810e-40dbf869285f"
+ }
+ }
+ }, {
+ "name" : "startIndex",
+ "in" : "query",
+ "description" : "Specifies the index of the first item to include in the result.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 0
+ },
+ "example" : 0
+ }, {
+ "name" : "count",
+ "in" : "query",
+ "description" : "Specifies the number of results to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 20
+ },
+ "example" : 20
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the events.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileEvents"
+ },
+ "examples" : {
+ "Example profile events response" : {
+ "description" : "Example profile events response",
+ "value" : "{\n \"events\": [\n {\n \"date\": \"2022-08-13T19:35:21.951Z\",\n \"properties\": [\n {\n \"id\": \"FromRefused\",\n \"values\": []\n },\n {\n \"id\": \"ToConsented\",\n \"values\": [\n \"TestBlueConic\"\n ]\n },\n {\n \"id\": \"Message\",\n \"values\": [\n \"REST API - Update single profile\"\n ]\n },\n {\n \"id\": \"ToRefused\",\n \"values\": []\n },\n {\n \"id\": \"FromConsented\",\n \"values\": []\n },\n {\n \"id\": \"FromLegislation\",\n \"values\": [\n \"NONE\"\n ]\n },\n {\n \"id\": \"ToLegislation\",\n \"values\": [\n \"GDPR\"\n ]\n },\n {\n \"id\": \"Source\",\n \"values\": [\n \"REST\"\n ]\n }\n ],\n \"type\": \"ConsentChanged\"\n },\n {\n \"date\": \"2023-05-04T11:36:25.531Z\",\n \"properties\": [\n {\n \"id\": \"FromRefused\",\n \"values\": [\n \"dialogue_objective\"\n ]\n },\n {\n \"id\": \"ToConsented\",\n \"values\": [\n \"dialogue_objective\"\n ]\n },\n {\n \"id\": \"ToRefused\",\n \"values\": []\n },\n {\n \"id\": \"Referrer\",\n \"values\": [\n \"https://www.blueconic.test/\"\n ]\n },\n {\n \"id\": \"FromConsented\",\n \"values\": []\n },\n {\n \"id\": \"FromLegislation\",\n \"values\": [\n \"GDPR\"\n ]\n },\n {\n \"id\": \"ToLegislation\",\n \"values\": [\n \"GDPR\"\n ]\n },\n {\n \"id\": \"Source\",\n \"values\": [\n \"CLIENTSIDE\"\n ]\n }\n ],\n \"type\": \"ConsentChanged\"\n },\n {\n \"date\": \"2023-05-04T11:39:07.652Z\",\n \"properties\": [\n {\n \"id\": \"FromRefused\",\n \"values\": []\n },\n {\n \"id\": \"ToConsented\",\n \"values\": [\n \"dialogue_objective\",\n \"track_number_of_visits\"\n ]\n },\n {\n \"id\": \"ToRefused\",\n \"values\": []\n },\n {\n \"id\": \"Referrer\",\n \"values\": [\n \"https://www.blueconic.test/\"\n ]\n },\n {\n \"id\": \"FromConsented\",\n \"values\": [\n \"dialogue_objective\"\n ]\n },\n {\n \"id\": \"FromLegislation\",\n \"values\": [\n \"GDPR\"\n ]\n },\n {\n \"id\": \"ToLegislation\",\n \"values\": [\n \"GDPR\"\n ]\n },\n {\n \"id\": \"Source\",\n \"values\": [\n \"CLIENTSIDE\"\n ]\n }\n ],\n \"type\": \"ConsentChanged\"\n },\n {\n \"date\": \"2023-05-04T12:43:37.990Z\",\n \"properties\": [\n {\n \"id\": \"FromLevel\",\n \"values\": [\n \"PERSONAL\"\n ]\n },\n {\n \"id\": \"Message\",\n \"values\": [\n \"Set by (1f6961ad-f121-404c-9161-419183f81fc2)\"\n ]\n },\n {\n \"id\": \"ToLevel\",\n \"values\": [\n \"PERSONAL\"\n ]\n },\n {\n \"id\": \"Source\",\n \"values\": [\n \"CLIENTSIDE\"\n ]\n },\n {\n \"id\": \"Referrer\",\n \"values\": [\n \"https://www.blueconic.test/tenants/bc01s01.html\"\n ]\n }\n ],\n \"type\": \"PermissionLevelChanged\"\n }\n ],\n \"itemsPerPage\": 20,\n \"startIndex\": 0,\n \"totalPages\": 1,\n \"totalResults\": 4\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : "The profile doesn't exist."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:profiles" ]
+ } ]
+ }
+ },
+ "/profileProperties/{profilePropertyId}" : {
+ "get" : {
+ "tags" : [ "Profile properties" ],
+ "summary" : "Get one profile property",
+ "description" : "Retrieves a single profile property.",
+ "operationId" : "getProfileProperty",
+ "parameters" : [ {
+ "name" : "profilePropertyId",
+ "in" : "path",
+ "description" : "The ID of the profile property.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "examples" : {
+ "Browser name (most recent)" : {
+ "description" : "Browser name (most recent)",
+ "value" : "currentbrowsername"
+ },
+ "Operating system version (all)" : {
+ "description" : "Operating system version (all)",
+ "value" : "osversion"
+ }
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : " Returns the profile property.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileProperty"
+ },
+ "examples" : {
+ "Response body" : {
+ "description" : "Response body",
+ "value" : "{\n \"availableForSegmentation\" : true,\n \"canDelete\" : true,\n \"canRead\" : true,\n \"canWrite\" : true,\n \"compositionStrategy\" : \"BOTH\",\n \"createNewProfile\" : false,\n \"creationDate\" : \"2023-03-22T09:33:26.319Z\",\n \"creator\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"dataSensitivity\" : \"NON_PII\",\n \"description\" : \"Test description.\",\n \"favorite\" : false,\n \"filterType\" : \"RANGE\",\n \"id\" : \"test_property\",\n \"indexed\" : false,\n \"isIdProperty\" : false,\n \"lastModifiedDate\" : \"2023-03-22T09:41:21.491Z\",\n \"lastModifiedUser\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/profileProperties/test_property\",\n \"rel\" : \"alt\",\n \"type\" : \"application/json\"\n } ],\n \"mergeStrategy\" : \"HIGHEST\",\n \"name\" : \"Test property\",\n \"permissionLevel\" : \"ANONYMOUS\",\n \"precision\" : 0,\n \"profileCount\" : 0,\n \"readOnly\" : false,\n \"showInUI\" : true,\n \"tags\" : [ \"Tech\", \"Metrics\" ],\n \"totalProfileCount\" : 130300,\n \"useValidation\" : true,\n \"values\" : [ ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : " The specified profile property doesn't exist."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:profile-properties" ]
+ } ]
+ },
+ "put" : {
+ "tags" : [ "Profile properties" ],
+ "summary" : "Create/update profile property",
+ "operationId" : "createOrUpdateProfileProperty",
+ "parameters" : [ {
+ "name" : "profilePropertyId",
+ "in" : "path",
+ "description" : "The ID of the profile property to create or update. A valid id may consist of letters, numbers, hyphens (-), and underscores (_) and is at least one character long.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "examples" : {
+ "Browser name (most recent)" : {
+ "description" : "Browser name (most recent)",
+ "value" : "currentbrowsername"
+ }
+ }
+ } ],
+ "requestBody" : {
+ "description" : "Creates or updates a profile property.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileProperty"
+ },
+ "examples" : {
+ "Example request body" : {
+ "description" : "Example request body",
+ "value" : "{\n \"id\": \"test_property\",\n \"indexed\": false,\n \"createNewProfile\": false,\n \"availableForSegmentation\": true,\n \"showInUI\": true,\n \"canRead\": true,\n \"canWrite\": true,\n \"filterType\": \"RANGE\",\n \"description\": \"The profile property description\",\n \"permissionLevel\": \"PERSONAL\",\n \"mergeStrategy\": \"BOTH\",\n \"dataSensitivity\": \"NON_PII\",\n \"tags\": [],\n \"values\": [],\n \"precision\": 0,\n \"unit\": {\n \"id\": \"\"\n },\n \"name\": \"Test property\"\n}"
+ }
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Returns the created / updated profile property.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileProperty"
+ },
+ "examples" : {
+ "Response body with currency" : {
+ "description" : "Response body with currency",
+ "value" : "{\n \"availableForSegmentation\" : true,\n \"canDelete\" : true,\n \"canRead\" : true,\n \"canWrite\" : true,\n \"compositionStrategy\" : \"BOTH\",\n \"createNewProfile\" : false,\n \"creationDate\" : \"2023-03-22T09:43:58.910Z\",\n \"creator\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"currency\" : {\n \"isoCode\" : \"USD\",\n \"name\" : \"United States dollar\",\n \"precision\" : 2,\n \"symbol\" : \"$\"\n },\n \"dataSensitivity\" : \"NON_PII\",\n \"description\" : \"The description for the currency\",\n \"favorite\" : false,\n \"filterType\" : \"CURRENCY\",\n \"id\" : \"test_currency\",\n \"indexed\" : false,\n \"isIdProperty\" : false,\n \"lastModifiedDate\" : \"2023-03-22T09:43:58.910Z\",\n \"lastModifiedUser\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/profileProperties/test_currency\",\n \"rel\" : \"alt\",\n \"type\" : \"application/json\"\n } ],\n \"mergeStrategy\" : \"BOTH\",\n \"name\" : \"Test currency\",\n \"permissionLevel\" : \"ANONYMOUS\",\n \"precision\" : 2,\n \"profileCount\" : 0,\n \"readOnly\" : false,\n \"showInUI\" : true,\n \"tags\" : [ \"Metrics\" ],\n \"totalProfileCount\" : 130300,\n \"useValidation\" : true,\n \"values\" : [ ]\n}"
+ },
+ "Response body with unit pixel" : {
+ "description" : "Response body with unit pixel",
+ "value" : "{\n \"availableForSegmentation\" : true,\n \"canDelete\" : true,\n \"canRead\" : true,\n \"canWrite\" : true,\n \"compositionStrategy\" : \"BOTH\",\n \"createNewProfile\" : false,\n \"creationDate\" : \"2023-03-22T09:47:26.491Z\",\n \"creator\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"dataSensitivity\" : \"NON_PII\",\n \"description\" : \"Test unit pixel description.\",\n \"favorite\" : false,\n \"filterType\" : \"RANGE\",\n \"id\" : \"test_unit_pixels\",\n \"indexed\" : false,\n \"isIdProperty\" : false,\n \"lastModifiedDate\" : \"2023-03-22T09:47:26.491Z\",\n \"lastModifiedUser\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/profileProperties/test_unit_pixels\",\n \"rel\" : \"alt\",\n \"type\" : \"application/json\"\n } ],\n \"mergeStrategy\" : \"HIGHEST\",\n \"name\" : \"Test unit pixels\",\n \"permissionLevel\" : \"ANONYMOUS\",\n \"precision\" : 0,\n \"profileCount\" : 0,\n \"readOnly\" : false,\n \"showInUI\" : true,\n \"tags\" : [ \"Tech\", \"Metrics\" ],\n \"totalProfileCount\" : 130300,\n \"unit\" : {\n \"id\" : \"pixels\",\n \"name\" : {\n \"label\" : [ {\n \"content\" : \"Pixels\",\n \"locale\" : \"nl_NL\"\n }, {\n \"content\" : \"Pixels\",\n \"locale\" : \"en_US\"\n } ]\n }\n },\n \"useValidation\" : true,\n \"values\" : [ ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "The JSON is invalid or: Either, the specified profile property exists but is created by a plugin and cannot be created / updated through REST, or the id, filtertype, permission level, or merge strategy is invalid."
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "write:profile-properties" ]
+ } ]
+ },
+ "delete" : {
+ "tags" : [ "Profile properties" ],
+ "summary" : "Delete profile property",
+ "description" : "Deletes a profile property.",
+ "operationId" : "deleteProfileProperty",
+ "parameters" : [ {
+ "name" : "profilePropertyId",
+ "in" : "path",
+ "description" : "The ID of the profile property.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "examples" : {
+ "Browser name (most recent)" : {
+ "description" : "Browser name (most recent)",
+ "value" : "currentbrowsername"
+ },
+ "Operating system version (all)" : {
+ "description" : "Operating system version (all)",
+ "value" : "osversion"
+ }
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the deleted profile property.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileProperty"
+ },
+ "examples" : {
+ "Response body" : {
+ "description" : "Response body",
+ "value" : "{\n \"availableForSegmentation\" : true,\n \"canDelete\" : true,\n \"canRead\" : true,\n \"canWrite\" : true,\n \"compositionStrategy\" : \"BOTH\",\n \"createNewProfile\" : false,\n \"creationDate\" : \"2023-03-22T09:33:26.319Z\",\n \"creator\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"dataSensitivity\" : \"NON_PII\",\n \"description\" : \"Test description.\",\n \"favorite\" : false,\n \"filterType\" : \"RANGE\",\n \"id\" : \"test_property\",\n \"indexed\" : false,\n \"isIdProperty\" : false,\n \"lastModifiedDate\" : \"2023-03-22T09:41:21.491Z\",\n \"lastModifiedUser\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/profileProperties/test_property\",\n \"rel\" : \"alt\",\n \"type\" : \"application/json\"\n } ],\n \"mergeStrategy\" : \"HIGHEST\",\n \"name\" : \"Test property\",\n \"permissionLevel\" : \"ANONYMOUS\",\n \"precision\" : 0,\n \"profileCount\" : 0,\n \"readOnly\" : false,\n \"showInUI\" : true,\n \"tags\" : [ \"Tech\", \"Metrics\" ],\n \"totalProfileCount\" : 130300,\n \"useValidation\" : true,\n \"values\" : [ ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : " The specified profile property doesn't exist."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "write:profile-properties" ]
+ } ]
+ }
+ },
+ "/profileProperties" : {
+ "get" : {
+ "tags" : [ "Profile properties" ],
+ "summary" : "Get all profile properties",
+ "description" : "Retrieves the profile properties.",
+ "operationId" : "getProfileProperties",
+ "parameters" : [ {
+ "name" : "count",
+ "in" : "query",
+ "description" : "Specifies the number of results to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int64",
+ "default" : 20,
+ "example" : 10
+ }
+ }, {
+ "name" : "startIndex",
+ "in" : "query",
+ "description" : "Specifies the index of the first item to include in the result.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int64",
+ "default" : 0,
+ "example" : 10
+ }
+ }, {
+ "name" : "filterType",
+ "in" : "query",
+ "description" : "The filterType of the profile properties e.g. \"SELECT\",\"RANGE\", AND \"DATETIME\". Multiple values are allowed.",
+ "schema" : {
+ "type" : "array",
+ "enum" : [ "RANGE", "CURRENCY", "DECIMAL", "SELECT", "EMAIL", "DATETIME" ],
+ "example" : "DATETIME",
+ "items" : {
+ "type" : "string",
+ "enum" : [ "RANGE", "CURRENCY", "DECIMAL", "SELECT", "EMAIL", "DATETIME" ],
+ "example" : "DATETIME"
+ }
+ }
+ }, {
+ "name" : "filterValue",
+ "in" : "query",
+ "description" : "If specified, the name of the profile properties must match the value. ",
+ "schema" : {
+ "type" : "string"
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : " Returns the profile property.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profileProperties"
+ },
+ "examples" : {
+ "Response body" : {
+ "description" : "Response body",
+ "value" : "{\n \"itemsPerPage\": 20,\n \"startIndex\" : 0,\n \"totalPages\" : 8,\n \"totalResults\" : 144,\n \"links\": {\n \"links\": [{\n \"href\": \"https://localhost/rest/v2/profileProperties\",\n \"rel\": \"alt\",\n \"type\": \"application/json\"\n }]\n },\n \"profileProperties\": [{\n \"availableForSegmentation\": true,\n \"canDelete\": true,\n \"canRead\": true,\n \"canWrite\": true,\n \"createNewProfile\": false,\n \"creationDate\": \"2023-03-20T13:53:34.687Z\",\n \"dataSensitivity\": \"NON_PII\",\n \"description\": \"The unique Facebook Ads custom audience IDs to which a user has been added by BlueConic.\",\n \"favorite\": false,\n \"filterType\": \"SELECT\",\n \"id\": \"_facebookAdsAudiences\",\n \"indexed\": false,\n \"isIdProperty\": false,\n \"lastModifiedDate\": \"2023-03-20T13:53:34.687Z\",\n \"links\": [{\n \"href\": \"https://localhost/rest/v2/profileProperties/_facebookAdsAudiences?alt=application%2Fjson\",\n \"rel\": \"self\",\n \"type\": \"application/json\"\n }],\n \"mergeStrategy\": \"BOTH\",\n \"name\": \"Facebook Ads synced custom audience IDs\",\n \"permissionLevel\": \"ANONYMOUS\",\n \"precision\": 0,\n \"profileCount\": 0,\n \"readOnly\": false,\n \"showInUI\": false,\n \"tags\": [\"Identifier\"],\n \"totalProfileCount\": 130300,\n \"useValidation\": true,\n \"values\": []\n }, {\n \"availableForSegmentation\" : true,\n \"canDelete\" : true,\n \"canRead\" : true,\n \"canWrite\" : true,\n \"compositionStrategy\" : \"BOTH\",\n \"createNewProfile\" : false,\n \"creationDate\" : \"2023-03-20T13:53:35.046Z\",\n \"dataSensitivity\" : \"NON_PII\",\n \"description\" : \"Indicates whether an ad blocker was detected for the visitor. Will contain the value \\\"yes\\\" if one was detected.\",\n \"favorite\" : false,\n \"filterType\" : \"SELECT\",\n \"id\" : \"adblock_detected\",\n \"indexed\" : false,\n \"isIdProperty\" : false,\n \"lastModifiedDate\" : \"2023-03-22T09:34:55.568Z\",\n \"lastModifiedUser\" : {\n \"fullName\" : \"test@blueconic.com\",\n \"userName\" : \"test@blueconic.com\"\n },\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/profileProperties/adblock_detected?alt=application%2Fjson\",\n \"rel\" : \"self\",\n \"type\" : \"application/json\"\n } ],\n \"mergeStrategy\" : \"BOTH\",\n \"name\" : \"AdBlock usage detected\",\n \"permissionLevel\" : \"ANONYMOUS\",\n \"precision\" : 0,\n \"profileCount\" : 0,\n \"readOnly\" : false,\n \"showInUI\" : true,\n \"tags\" : [ \"Address\", \"Process\" ],\n \"totalProfileCount\" : 130300,\n \"useValidation\" : true,\n \"values\" : [ ]\n }]\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:profile-properties" ]
+ } ]
+ }
+ },
+ "/profiles" : {
+ "get" : {
+ "tags" : [ "Profiles" ],
+ "summary" : "Search profiles",
+ "description" : "Search for BlueConic profiles based on a specific value for an indexed (unique) property. Multiple name/value pairs can be used to refine the search.",
+ "operationId" : "get_1",
+ "parameters" : [ {
+ "name" : "property",
+ "in" : "query",
+ "description" : "Specifies the id of the profile property to search for.",
+ "required" : true,
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "examples" : {
+ "List of profile property IDs" : {
+ "description" : "List of profile property IDs",
+ "value" : "email"
+ }
+ }
+ }, {
+ "name" : "value",
+ "in" : "query",
+ "description" : "The value of the property to search for.",
+ "required" : true,
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "examples" : {
+ "List of profile property values" : {
+ "description" : "List of profile property values",
+ "value" : "john.smith@blueconic.com"
+ }
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Searches for BlueConic profiles based on a specific value for an indexed (unique) property. Multiple name/value pairs can be used to refine the search.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profiles"
+ },
+ "examples" : {
+ "Example response" : {
+ "description" : "Example response",
+ "value" : "{\n \"profiles\": [\n {\n \"id\": \"61835134-e910-49da-a09e-79d41af9b96\"\n },\n {\n \"id\": \"45e2a650-ca17-4e03-8e8d-12d00ed4d9b3\"\n }\n ],\n \"itemsPerPage\": 5,\n \"startIndex\": 0,\n \"totalPages\": 1,\n \"totalResults\": 2\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "501" : {
+ "description" : "The specified property is not classified as indexed (unique) (not implemented)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:profiles" ]
+ } ]
+ },
+ "put" : {
+ "tags" : [ "Profiles" ],
+ "summary" : "Create, update, or delete one or more profiles",
+ "description" : "Create, update, or delete one or more profiles in a single request. This is the recommended way of creating, updating and deleting profiles.",
+ "operationId" : "updateProfileAsync",
+ "parameters" : [ {
+ "name" : "objectiveIds",
+ "in" : "query",
+ "description" : "A list of IDs that should map on objectives that are configured in the BlueConic UI. If passed, the profiles to be updated that are in the privacy legislation zone are matched against these objectives. If there is no match, the profile won’t be updated (or created, for that matter).\n If a profile would have been created/updated, but is skipped because of an objective mismatch, the response will contain a `CONSENT_MISMATCH` state for that profile.",
+ "schema" : {
+ "type" : "string",
+ "format" : "uuid",
+ "default" : ""
+ },
+ "examples" : {
+ "Comma separated list of objective IDs" : {
+ "description" : "Comma separated list of objective IDs",
+ "value" : "objective1,objective2"
+ }
+ }
+ } ],
+ "requestBody" : {
+ "description" : "**Timeline event types**\n\nTimeline event types can be accessed through **Timeline event types** tab in BlueConic. In this tab you can create a new timeline event type, update, or delete existing ones.\n\nIt's possible to add, update, or remove properties and nested properties from a timeline event type. The property ID of timeline event property can only be changed until it's saved.\nTo update the property ID after saving, the property will have to be deleted and recreated with the desired ID.\n\n**Timeline events**\n\nEvents are data points tied to the [BlueConic Timeline](https://support.blueconic.com/hc/en-us/articles/360035962954-About-Timeline-events-in-BlueConic) of a profile, e.g. an order the customer placed. BlueConic comes out of the box with several predefined [BlueConic Timeline event types](https://support.blueconic.com/hc/en-us/articles/360037189454-BlueConic-Timeline-event-types). \nEvents can be HIGH or LOW priority. There is a maximum number of 250 events per profile allowed.\nLOW priority events have a retention period between 1 and 365 days (the default is 30 days).\nHIGH priority events have a retention period of 1 day and up.\nThe default is indefinitely; however, they are constrained by the total number of events and take precedence over LOW priority events, which are capped at 50 if there are 200 or more HIGH priority events.\n\n**Privacy legislations and consent management**\n\nAny `objectiveIds` passed in the query string are matched against the profile that is being created.\nMatching is done against the special profile property `consented_objectives`, which reflects the objective IDs that the profile has explicitly consented to. So, for the profile to be created, the “properties” should at least contain one of the objective IDs passed in the querystring, for the property with id `consented_objectives`. Otherwise, the `CONSENT_MISMATCH` state is returned in the response.\n\nThe following values are valid privacy legislation zone values.\n\n| Name | Description |\n| :---------------------- | :---------- |\n| CCPA | A profile is governed by CCPA in the State of California. |\n| GDPR | A profile is governed by GDPR in Europe. |\n| NYPA | A profile is governed by NYPA in the State of New York. |\n| PIPEDA | A profile is governed by PIPEDA in Canada. |\n| SB220 | A profile is governed by SB220 in the State of Nevada. |\n| PERU_DPL | A profile is governed by the Personal Data Protection Law (PDPL) of Peru. |\n| ARGENTINA_DPL | A profile is governed by the Personal Data Protection Law (PDPL) of Argentina. |\n| SB1392 | A profile is governed by SB1392 of the Commonwealth of Virginia |\n| SB190 | A profile is governed by the State of Colorado. |\n| BRAZIL_LGPD | A profile is governed by the Brazilian General Protection Law. |\n| ISRAEL_PPL | A profile is governed by the Israel Protection Privacy Law. |\n| JAPAN_APPI | A profile is governed by the Japan APPI. |\n| NEW_ZEALAND_PRIVACY_ACT | A profile is governed by the New Zealand Privacy Act. |\n| SWITZERLAND_DPA | A profile is governed by the Switzerland Data Protection Act (DPA). |\n| UK_GDPR | A profile is governed by the United Kingdom General Data Protection Regulation. |\n| CHINA_PIPL | A profile is governed by the People's Republic of China PIPL. |\n| AUSTRALIA_PRIVACY_ACT | A profile is governed by the Australian Privacy Act. |\n| NONE | The profile is not governed by a known privacy legislation zone; profile will just be created. NONE legislations are also targeted when 'Rest of World' is selected in an objective. |\n\n**Profile strategy**\n\nThe following values are valid strategies for profile operations. These can be used to create, update or delete profiles.\n\n| Name | Description |\n| :----------- | :---------- |\n| UPSERT | Will update (and insert if not found) the profile based on the rules passed along. |\n| UPDATE | Will update (but doesn’t insert if not found) the profile based on the rules passed along. |\n| DELETE | Will delete the profile with the given ID. |\n\n**Timeline Strategy**\n\nThe following values are valid timeline strategies. These can either be used for the strategy property for a timeline event as a whole, or when passing rules to apply on nested timeline event properties.\n\n| Name | Description |\n| :--------| :---------- |\n| SET | Timeline event will be added to the profile timeline as is, possibly replacing the existing event with the same ID, event type ID, and date. |\n| UPSERT | Will update (and insert if not found) the timeline event with the given ID, event type ID, and date, based on the rules that are passed along. |\n| UPDATE | Will update (but doesn’t insert if not found) the timeline event with the given ID, event type ID, and date, based on the rules that are passed along. |\n| DELETE | Will delete the timeline event with the given ID, event type ID and, optionally, a date. If not passed, all events matching the ID and event type ID will be deleted. |\n\n**Profile and Timeline property strategy**\n\nThe following values are valid property strategies. These rules apply on profile and timeline event properties.\n\n| Name | Description |\n| :----------- | :---------- |\n| ADD | Values will be added to the values that already existed in the profile or timeline event property. Duplicates will not be added. |\n| SET | Values will overwrite the values that already existed in the profile or timeline event property. |\n| SET_IF_EMPTY | Only set values if the profile or timeline event property is empty. |\n| SUM | Add the value to the value already stored in the profile property. This is not supported for timeline event properties. |\n| REMOVE | Remove the value from the list of values already stored in the profile property. This is not yet supported for timeline event properties. |\n\n**Limits**\n\n* Each request can contain up to 1000 entries. If this limit is exceeded, a HTTP 413 will be thrown (the first 1000 entries will be processed and returned in the response).\n* When too many requests are sent concurrently, a HTTP 429 can be thrown. BlueConic recommends designing your app to be resilient to this scenario. For example, implement a request queue with an exponential backoff algorithm.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/BulkInputEntryV2"
+ }
+ },
+ "examples" : {
+ "Basic create profile example" : {
+ "description" : "Example that shows how to create one profile.",
+ "value" : "[{\n \"matching\": [\n [{\n \"id\": \"email\",\n \"value\": \"jane@example.com\"\n }]\n ],\n \"properties\": [{\n \"id\": \"zipcode\",\n \"values\": [\"02111\", \"02112\"],\n \"strategy\": \"SET\"\n },\n {\n \"id\": \"email\",\n \"values\": [\"jane@example.com\"],\n \"strategy\": \"SET\"\n }\n ],\n \"strategy\": \"UPSERT\"\n}]"
+ },
+ "Advanced example" : {
+ "description" : "This request contains three operations:\n\n* The first operation looks up a specific BlueConic profile by its id, then sets the property with id crm_id to 003Kz4Bsaa14 and adds a new entry to email property. If the profile cannot be found, nothing will happen.\n* The second operation deletes a specific BlueConic profile by its id.\n* The third operation tries to find profiles that either have an email address `jane@example.com` or a crm_id of `002wC4BadR1w` in the specified domain. If any profile is found, three properties and timeline event will be set:\n * Zipcodes `02111` and `02112` will be added.\n * `email` will be set to `jane@example.com.`\n * `crm_id` will be set to `002wC4BadR1w`.\n * An `order` event will be added to the profiles timeline:\n * `quantity` 2\n * `net price` 3.45\n * `coupon` \"FREETV\"\n * `delivery date` 23/1/2023 at 11:45 PM\n * If no profile can be found, a new profile is created in the specified domaingroup. The three properties and the timeline event will be set on the profile.\n",
+ "value" : "[{\n \"profileId\": \"f7daa9db-5ea0-40c8-b9dc-96e519151f8c\",\n \"properties\": [{\n \"id\": \"crm_id\",\n \"values\": [\"003Kz4Bsaa11\"],\n \"strategy\": \"SET\"\n }, {\n \"id\": \"email\",\n \"values\": [\"user_0000@gmail.com\"],\n \"strategy\": \"ADD\"\n }]\n },\n {\n \"profileId\": \"a84fe9e8-ee83-4c1c-8a32-9132f958fe13\",\n \"strategy\": \"DELETE\"\n },\n {\n \"matching\": [\n [{\n \"id\": \"email\",\n \"value\": \"jane@example.com\"\n }],\n [{\n \"id\": \"crm_id\",\n \"value\": \"002wC5BadR1w\"\n }]\n ],\n \"properties\": [{\n \"id\": \"zipcode\",\n \"values\": [\"02111\", \"02112\"],\n \"strategy\": \"ADD\"\n },\n {\n \"id\": \"email\",\n \"values\": [\"jane99@example.com\"],\n \"strategy\": \"ADD\"\n },\n {\n \"id\": \"crm_id\",\n \"values\": [\"002wC5BadR1w\"],\n \"strategy\": \"SET\"\n }\n ],\n \"timeline\": [{\n \"eventTypeId\": \"order\",\n \"data\": [{\n \"id\": \"product\",\n \"values\": [\n [{\n \"id\": \"quantity\",\n \"values\": [2]\n }, {\n \"id\": \"netprice\",\n \"values\": [3.45]\n }, {\n \"id\": \"coupon\",\n \"values\": [\"FREETV\"]\n }, {\n \"id\": \"deliverydate\",\n \"values\": [\"2023-01-23T23:45:56.789Z\"]\n }]\n ]\n }, {\n \"id\": \"quantity\",\n \"values\": [1]\n }],\n \"strategy\": \"SET\"\n }],\n \"strategy\": \"UPSERT\",\n \"domainGroup\": \"85ee8f33-15a3-4e95-aff5-abfa5bc457ab\"\n }\n]"
+ },
+ "Partial updates for timeline events" : {
+ "description" : "An example for partially updating a timeline event:\n\n\n* Will update (or insert if not exists) the order event with the given ID.\n * `date` is optional and may be omitted, causing all events with the given ID to be updated.\n* Will add (or update if it exists) a product with id:PRODUCT-5469878987 to product.\n * Note that the `strategy` can be left empty when the `identifier` is specified.\n* Will set `quantity` to 2 if the product does not have `quantity` set yet.\n* Will add `FREETV-CHRISTMAS-SPECIAL` to `coupon` for the product.\n* Will set `quantity` to 1 for this `order`.\n\nNotes on using an `identifier` for nested timeline event properties:\n\n* A timeline event type property marked as `identifier` can only contain one value; more values will be ignored (first value is used).\n* When sending an `identifier` in the bulk API, it cannot be empty.",
+ "value" : "[{\n \"matching\": [\n [{\n \"id\": \"email\",\n \"value\": \"jane@example.com\"\n }]\n ],\n \"properties\": [{\n \"id\": \"zipcode\",\n \"values\": [\"02111\", \"02112\"],\n \"strategy\": \"SET\"\n },\n {\n \"id\": \"email\",\n \"values\": [\"jane@example.com\"],\n \"strategy\": \"SET\"\n }\n ],\n \"timeline\": [\n {\n \"id\": \"eb20c911-4d23-4791-a3e7-d113e7a326d9\",\n \"date\": \"2023-01-01T00:00Z\",\n \"eventTypeId\": \"order\",\n \"data\": [{\n \"id\": \"product\",\n \"values\": [{\n \"id\": \"id\",\n \"values\": [\"PRODUCT-5469878987\"]\n },\n {\n \"id\": \"quantity\",\n \"values\": [2],\n \"strategy\": \"SET_IF_EMPTY\"\n },\n {\n \"id\": \"coupon\",\n \"values\": [\"FREETV-CHRISTMAS-SPECIAL\"],\n \"strategy\": \"ADD\"\n }\n ],\n \"strategy\": \"UPSERT\"\n },\n {\n \"id\": \"quantity\",\n \"values\": [1],\n \"strategy\": \"SET\"\n }\n ],\n \"strategy\": \"UPSERT\"\n }\n\n ],\n \"strategy\": \"UPSERT\"\n}]"
+ }
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Bulk response \n\n**JSON Response**\n\nEvery bulk operation is returned in the response as well.\nThe state can be one of the following values: `CREATED`, `SKIPPED`, `MODIFIED`, `DELETED`, `UNCHANGED`, `NOTFOUND`, `RESTRICTION_MISMATCH` or `CONSENT_MISMATCH`.\n\n```json\n[{\n \"state\": \"CREATED\",\n \"profileId\": \"profile-UUID of the created profile\",\n \"identifier\": \" my-external-identifier\"\n}]\n```\n\nWhen the profile operation contains timeline events, the response will also contain a response per timeline event supplied. The state can be one of the following values: `CREATED`, `SET`, `MODIFIED`, `REJECTED`, `NOTFOUND` or `DELETED`.\n\n```json\n[{\n \"state\": \"CREATED\",\n \"profileId\": \"profile-UUID of the created profile\",\n \"identifier\": \" my-external-identifier\",\n \"timeline\": [{\n \"id\": \"order_1\",\n \"identifier\": \"my-external-order-identifier\",\n \"state\": \"REJECTED\",\n \"validationErrors\": [\"#/total_revenue/0: expected type: Number, found: String\"]\n }]\n}] \n```",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/BulkResultBean"
+ }
+ },
+ "examples" : {
+ "Example bulk response" : {
+ "description" : "Example bulk response",
+ "value" : "[\n {\n \"profileId\": \"f7daa9db-5ea0-40c8-b9dc-96e519151f8c\",\n \"state\": \"MODIFIED\",\n \"timeline\": []\n },\n {\n \"profileId\": \"a84fe9e8-ee83-4c1c-8a32-9132f958fe13\",\n \"state\": \"DELETED\"\n },\n {\n \"profileId\": \"e4c45d3b-f59b-4391-ad46-7413961e8cbd\",\n \"state\": \"CREATED\",\n \"timeline\": [\n {\n \"id\": \"63cec368-c40e-4c2c-ae08-7d4513edd125\",\n \"state\": \"SET\"\n }\n ]\n }\n]"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/BadRequestBean"
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "403" : {
+ "description" : "Forbidden, invalid (PII) permissions to perform the request. Please check your OAuth Application configuration."
+ },
+ "413" : {
+ "description" : "More than the allowed 1000 entries are sent in the request. The entries that are processed are returned in the response.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/BulkResultBean"
+ }
+ },
+ "examples" : {
+ "Example bulk response" : {
+ "description" : "Example bulk response",
+ "value" : "[\n {\n \"profileId\": \"f7daa9db-5ea0-40c8-b9dc-96e519151f8c\",\n \"state\": \"MODIFIED\",\n \"timeline\": []\n },\n {\n \"profileId\": \"a84fe9e8-ee83-4c1c-8a32-9132f958fe13\",\n \"state\": \"DELETED\"\n },\n {\n \"profileId\": \"e4c45d3b-f59b-4391-ad46-7413961e8cbd\",\n \"state\": \"CREATED\",\n \"timeline\": [\n {\n \"id\": \"63cec368-c40e-4c2c-ae08-7d4513edd125\",\n \"state\": \"SET\"\n }\n ]\n }\n]"
+ }
+ }
+ }
+ }
+ },
+ "429" : {
+ "description" : "Too many requests are sent concurrently. BlueConic recommends designing your app to be resilient to this scenario. For example, implement a request queue with an exponential backoff algorithm."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "write:profiles" ]
+ } ]
+ }
+ },
+ "/profiles/{profileId}" : {
+ "get" : {
+ "tags" : [ "Profiles" ],
+ "summary" : "Get one profile",
+ "description" : "Retrieves the properties of the specified profile, including the IDs of the matching dynamic segments.",
+ "operationId" : "getProfileAsync",
+ "parameters" : [ {
+ "name" : "profileId",
+ "in" : "path",
+ "description" : "The ID of the BlueConic profile.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "640d01c7-1c30-4085-adf9-afad6560ec99"
+ }, {
+ "name" : "expand",
+ "in" : "query",
+ "description" : "Expand the information in the result set. Use \"profile.permissions.exceptions\" to include permission level and exception data.\nUse \"profile.timeline\" to include timeline event information.\nUse multiple \"expand\" querystring parameters to return combinations.\n",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string",
+ "default" : ""
+ }
+ },
+ "example" : "profile.timeline"
+ }, {
+ "name" : "properties",
+ "in" : "query",
+ "description" : "Only returns the given profile properties in the response.",
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ },
+ "example" : "email,fullname,visits"
+ }, {
+ "name" : "eventTypeId",
+ "in" : "query",
+ "description" : "Filter returned timeline events for a specific type. Only one timeline event type ID is allowed.",
+ "schema" : {
+ "type" : "string",
+ "format" : "uuid",
+ "default" : ""
+ },
+ "example" : "order"
+ }, {
+ "name" : "eventCount",
+ "in" : "query",
+ "description" : "The maximum number of timeline events to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 20
+ },
+ "example" : 10
+ }, {
+ "name" : "fromDate",
+ "in" : "query",
+ "description" : "Filter to only include timeline events that are dated later than this date. The format of fromDate is \"2023-01-01T00:00Z\" or with a time zone offset \"2023-01-01T00:00+05:00\"",
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ },
+ "example" : "2023-01-22T11:21:33Z"
+ }, {
+ "name" : "toDate",
+ "in" : "query",
+ "description" : "Filter to only include timeline events that are dated before this date. The format of toDate is \"2023-01-01T00:00Z\" or with a time zone offset \"2023-01-01T00:00+05:00\"",
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ },
+ "example" : "2023-03-05T12:00:00Z"
+ }, {
+ "name" : "collapse",
+ "in" : "query",
+ "description" : "Collapse the information in the result set. Use profile.segments to exclude segment information.",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string",
+ "default" : ""
+ }
+ },
+ "example" : "profile.segments"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the specified profile.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/profile"
+ },
+ "examples" : {
+ "Example profile response" : {
+ "description" : "Example profile response",
+ "value" : "{\n \"id\": \"640d01c7-1c30-4085-adf9-afad6560ec99\",\n \"creationDate\": \"2022-10-23T14:47:05.207Z\",\n \"consentedObjectives\": [\"objective_1\", \"objective_2\"],\n \"refusedObjectives\": [],\n \"permissions\": {\n \"level\": \"PERSONAL\"\n },\n \"properties\": [\n {\n \"id\": \"clickcount\",\n \"values\": [\n \"0\"\n ]\n },\n {\n \"id\": \"creationdate\",\n \"values\": [\n \"1571842025207\"\n ]\n },\n {\n \"id\": \"engagement\",\n \"values\": [\n \"medium\"\n ]\n },\n {\n \"id\": \"lastmodifieddate\",\n \"values\": [\n \"1571842025207\"\n ]\n },\n {\n \"id\": \"sample_id\",\n \"values\": [\n \"26\"\n ]\n },\n {\n \"id\": \"lastvisitdate\",\n \"values\": [\n \"1571842023124\"\n ]\n },\n {\n \"id\": \"lastvisit\",\n \"values\": [\n \"1571842023124\"\n ]\n },\n {\n \"id\": \"browsers\",\n \"values\": [\n \"ie\"\n ]\n },\n {\n \"id\": \"visits\",\n \"values\": [\n \"2\"\n ]\n },\n {\n \"id\": \"browser\",\n \"values\": [\n \"ie\"\n ]\n },\n {\n \"id\": \"domaingroup\",\n \"values\": [\n \"DEFAULT\"\n ]\n },\n {\n \"id\": \"email\",\n \"values\": [\n \"user_017@gmail.com\"\n ]\n }\n ],\n \"replaces\": [],\n \"events\": [{\n \"data\": [{\n \"id\": \"product\",\n \"values\": [\n [{\n \"id\": \"quantity\",\n \"values\": [100]\n }, {\n \"id\": \"id\",\n \"values\": [\"987644321\"]\n }]\n ]\n }],\n \"date\": \"2023-01-01T00:00:00.123Z\",\n \"eventTypeId\": \"order\",\n \"id\": \"order_2\",\n \"source\": \"notebook_9139fb0a-6e65-4e65-9dff-9dd971ac2b21\"\n }],\n \"segments\": [\n {\n \"id\": \"bfef6ef0-745a-4c5c-b64b-472771096de8\"\n },\n {\n \"id\": \"aaefc4b6-61ef-4252-b78b-5edef1fd8991\"\n },\n {\n \"id\": \"2a04c001-bb27-4c6f-9767-3f333a1144af\"\n },\n {\n \"id\": \"6c02486d-b92a-4696-b6cc-8826049a0208\"\n },\n {\n \"id\": \"ae2c27fb-62ff-4be6-996c-a265e53920c8\"\n }\n ]\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : "The specified profile doesn't exist."
+ },
+ "408" : {
+ "description" : "Request timed out."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:profiles" ]
+ } ]
+ }
+ },
+ "/segments/{segment}/profiles" : {
+ "get" : {
+ "tags" : [ "Segments" ],
+ "summary" : "Get profiles in segment",
+ "description" : "Retrieves the profiles of the segment.",
+ "operationId" : "getSegmentExportNormal",
+ "parameters" : [ {
+ "name" : "segment",
+ "in" : "path",
+ "description" : "The ID of the segment.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "cursor",
+ "in" : "query",
+ "description" : "Defines the starting point of the page for pagination. When cursors are used, each page, except the last page, returns a `nextCursor` value which can be used to retrieve the next page.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "*"
+ }, {
+ "name" : "count",
+ "in" : "query",
+ "description" : "Specifies the number of results to return. Smaller than or equal to 1.000.000.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "example" : 20
+ }, {
+ "name" : "properties",
+ "in" : "query",
+ "description" : "Specifies for which profile properties values will be returned for each profile. If not specified, the values of all profile properties will be returned, which may result in a large result set. One or more profile property ids, separated by a comma.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "browserversion,email"
+ }, {
+ "name" : "expand",
+ "in" : "query",
+ "description" : "Expand the information in the result set. Use `profiles.profile.permissions` to include permission level. Use `profiles.profile.replace` to include profile merge information. Use `profiles.profile.segments` to include the segments a profile is part of. Use `profiles.profile.timeline` to include timeline event information. Use multiple `expand` querystring parameters to return combinations.",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "example" : "profiles.profile.segments"
+ }, {
+ "name" : "eventTypeId",
+ "in" : "query",
+ "description" : "Filter for the returned timeline events for specific types. One or more IDs of a timeline event type.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "order"
+ }, {
+ "name" : "eventCount",
+ "in" : "query",
+ "description" : "The maximum number of timeline events to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "example" : 20
+ }, {
+ "name" : "fromDate",
+ "in" : "query",
+ "description" : "Filter to only include timeline events that are dated later than this date. ISO date like `2023-01-01T00:00Z` or with time zone offset `2023-01-01T00:00+05:00`.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "2023-01-01T00:00Z"
+ }, {
+ "name" : "toDate",
+ "in" : "query",
+ "description" : "Filter to only include timeline events that are dated before this date. ISO date like `2023-01-01T00:00Z` or with time zone offset `2023-01-01T00:00+05:00`.",
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "2023-01-01T00:00Z"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the profiles of the given segment in a streaming fashion (`Transfer-Encoding: chunked`).",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/SegmentProfiles"
+ },
+ "examples" : {
+ "Example segment profiles response" : {
+ "description" : "Example segment profiles response",
+ "value" : "{\n\"itemsPerPage\":20,\n\"totalPages\":5,\n\"totalResults\":100,\n\"cursor\":\"*\",\n\"nextCursor\":\"AoJylraPsPICPwU4ZDZiMzhmYS0yMmYwLTRmZTAtYmE0My1kOWVlNTFjNWE5MDA\",\n\n \"links\" : [ {\n \"href\" : \"https://localhost/rest/v2/segments/aa9c3c86-edec-4ac5-8521-a1be602eb7c6/profiles?cursor=%2A&count=20\",\n \"rel\" : \"first\",\n \"type\" : \"application/json\"\n }, {\n \"href\" : \"https://localhost/rest/v2/segments/aa9c3c86-edec-4ac5-8521-a1be602eb7c6/profiles?cursor=AoJylraPsPICPwU4ZDZiMzhmYS0yMmYwLTRmZTAtYmE0My1kOWVlNTFjNWE5MDA&count=20\",\n \"rel\" : \"last\",\n \"type\" : \"application/json\"\n } ]\n,\n\"profiles\": [\n{\n \"id\" : \"41ebc321-b02b-4e8a-a368-82995c81fb18\",\n \"creationDate\" : \"2023-03-27T10:36:11.990Z\",\n \"privacyLegislation\" : \"GDPR\",\n \"consentedObjectives\" : [ \"objective1\" ],\n \"refusedObjectives\" : [ \"objective2\" ],\n \"properties\" : [ {\n \"id\" : \"visitclicks_5db4a390-4e11-43ae-be2d-a1b6e248d129\",\n \"values\" : [ \"1\" ]\n }, {\n \"id\" : \"privacy_legislation\",\n \"values\" : [ \"GDPR\" ]\n }, {\n \"id\" : \"visitedchannel\",\n \"values\" : [ \"5db4a390-4e11-43ae-be2d-a1b6e248d129\" ]\n }, {\n \"id\" : \"creationdate\",\n \"values\" : [ \"1679913371990\" ]\n }, {\n \"id\" : \"color\",\n \"values\" : [ \"Mustard\" ]\n }, {\n \"id\" : \"currentbrowsername\",\n \"values\" : [ \"Default Browser\" ]\n }, {\n \"id\" : \"sample_id\",\n \"values\" : [ \"41\" ]\n }, {\n \"id\" : \"lastvisitdate\",\n \"values\" : [ \"1679913372011\" ]\n }, {\n \"id\" : \"currentbrowserversion\",\n \"values\" : [ \"Default Browser Unknown\" ]\n }, {\n \"id\" : \"lastvisit\",\n \"values\" : [ \"1679913371988\" ]\n }, {\n \"id\" : \"origin_source\",\n \"values\" : [ \"www.blueconic.com\" ]\n }, {\n \"id\" : \"session_start\",\n \"values\" : [ \"1679913371934\" ]\n }, {\n \"id\" : \"devicetype\",\n \"values\" : [ \"MOBILE\" ]\n }, {\n \"id\" : \"lastvisitdate_5db4a390-4e11-43ae-be2d-a1b6e248d129\",\n \"values\" : [ \"1679913372011\" ]\n }, {\n \"id\" : \"frequency\",\n \"values\" : [ \"100\" ]\n }, {\n \"id\" : \"devicetypes\",\n \"values\" : [ \"MOBILE\" ]\n }, {\n \"id\" : \"visits\",\n \"values\" : [ \"1\" ]\n }, {\n \"id\" : \"domaingroup\",\n \"values\" : [ \"DEFAULT\" ]\n }, {\n \"id\" : \"totalvisittime\",\n \"values\" : [ \"0\" ]\n }, {\n \"id\" : \"clickcount\",\n \"values\" : [ \"1\" ]\n }, {\n \"id\" : \"clickcount_5db4a390-4e11-43ae-be2d-a1b6e248d129\",\n \"values\" : [ \"1\" ]\n }, {\n \"id\" : \"visitedsites\",\n \"values\" : [ \"www.blueconic.test\" ]\n }, {\n \"id\" : \"averagetime\",\n \"values\" : [ \"0\" ]\n }, {\n \"id\" : \"lastmodifieddate\",\n \"values\" : [ \"1679922388115\" ]\n }, {\n \"id\" : \"hostentrypage\",\n \"values\" : [ \"{\\\"www.blueconic.com\\\":{\\\"entrypage\\\":\\\"http://www.blueconic.com/\\\"}}\" ]\n }, {\n \"id\" : \"browsername\",\n \"values\" : [ \"Default Browser\" ]\n }, {\n \"id\" : \"recency\",\n \"values\" : [ \"99\" ]\n }, {\n \"id\" : \"origin_type\",\n \"values\" : [ \"mobile_web\" ]\n }, {\n \"id\" : \"momentum\",\n \"values\" : [ \"50\" ]\n }, {\n \"id\" : \"intensity\",\n \"values\" : [ \"100\" ]\n }, {\n \"id\" : \"firstvisit\",\n \"values\" : [ \"1679913371926\" ]\n }, {\n \"id\" : \"hostaveragetime\",\n \"values\" : [ \"{\\\"www.blueconic.test\\\":{\\\"startdate\\\":1679913372011,\\\"enddate\\\":1679913372011,\\\"averageTime\\\":0,\\\"visits\\\":0}}\" ]\n }, {\n \"id\" : \"visiteddomain\",\n \"values\" : [ \"75d78fab-bc93-4398-adbf-b8d04fc1889b\" ]\n }, {\n \"id\" : \"entrypage\",\n \"values\" : [ \"http://www.blueconic.com/\" ]\n }, {\n \"id\" : \"origin_detail\",\n \"values\" : [ \"http://www.blueconic.com/\" ]\n }, {\n \"id\" : \"visits_5db4a390-4e11-43ae-be2d-a1b6e248d129\",\n \"values\" : [ \"1\" ]\n }, {\n \"id\" : \"recent_intensity\",\n \"values\" : [ \"100\" ]\n }, {\n \"id\" : \"browserversion\",\n \"values\" : [ \"Default Browser Unknown\" ]\n }, {\n \"id\" : \"visitclicks\",\n \"values\" : [ \"1\" ]\n } ],\n \"segments\" : [ {\n \"id\" : \"bdd64355-2d45-411b-a5ea-0bcf87318f35\",\n \"name\" : \"Export test segment\"\n } ]\n}\n]}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "404" : {
+ "description" : "Segment not found."
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:segments" ]
+ } ]
+ }
+ },
+ "/segments" : {
+ "get" : {
+ "tags" : [ "Segments" ],
+ "summary" : "Get all segments",
+ "description" : "Retrieves all segments.",
+ "operationId" : "getSegments",
+ "parameters" : [ {
+ "name" : "startIndex",
+ "in" : "query",
+ "description" : "Specifies the index of the first item to include in the result.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "example" : 0
+ }, {
+ "name" : "count",
+ "in" : "query",
+ "description" : "Specifies the number of results to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "example" : 10
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the segments.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/segments"
+ },
+ "examples" : {
+ "Example segment response" : {
+ "description" : "Example segment response",
+ "value" : "{\n \"itemsPerPage\" : 10,\n \"segments\" : [ {\n \"favorite\" : false,\n \"id\" : \"aa9c3c86-edec-4ac5-8521-a1be602eb7c6\",\n \"inverseOf\" : \"\",\n \"inversedBy\" : \"\",\n \"name\" : \"All Visitors\",\n \"readOnly\" : true,\n \"tags\" : [\"a tag\"]\n }, {\n \"favorite\" : false,\n \"id\" : \"dcd46509-0c5f-40a5-8b91-e9b9315466ef\",\n \"inverseOf\" : \"\",\n \"inversedBy\" : \"\",\n \"name\" : \"Preferred visit hour: Afternoon\",\n \"readOnly\" : false,\n \"tags\" : [ ]\n }, {\n \"favorite\" : false,\n \"id\" : \"6c2785b1-66fd-4504-9b26-20c8b24b1c46\",\n \"inverseOf\" : \"\",\n \"inversedBy\" : \"\",\n \"name\" : \"Preferred visit hour: Evening\",\n \"readOnly\" : false,\n \"tags\" : [ ]\n }, {\n \"favorite\" : true,\n \"id\" : \"194b246b-26c5-4e9a-bc3a-f3896c8dc96e\",\n \"inverseOf\" : \"\",\n \"inversedBy\" : \"\",\n \"name\" : \"Preferred visit hour: Morning\",\n \"readOnly\" : false,\n \"tags\" : [ ]\n }, {\n \"favorite\" : false,\n \"id\" : \"1e557d7c-e655-415a-a0bd-256009af183a\",\n \"inverseOf\" : \"\",\n \"inversedBy\" : \"\",\n \"name\" : \"Preferred visit hour: Night\",\n \"readOnly\" : false,\n \"tags\" : [ ]\n } ],\n \"startIndex\" : 0,\n \"totalPages\" : 1,\n \"totalResults\" : 5\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:segments" ]
+ } ]
+ }
+ },
+ "/recommendations" : {
+ "post" : {
+ "tags" : [ "Recommendations" ],
+ "summary" : "Generate recommendations",
+ "description" : "Generate BlueConic recommendations for a specific profile based on the provided parameters.",
+ "operationId" : "getRecommendationsPostJsonpAsync",
+ "parameters" : [ {
+ "name" : "profileId",
+ "in" : "query",
+ "description" : "The ID of the BlueConic profile. Note that the profile ID is required when you use a [recommendation algorithm](https://support.blueconic.com/hc/en-us/articles/360022093313-BlueConic-recommendation-algorithms) that depends on the profile, such as 'Collaborative filtering' or 'Seen articles / Seen products'.",
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ },
+ "example" : "640d01c7-1c30-4085-adf9-afad6560ec99"
+ }, {
+ "name" : "storeId",
+ "in" : "query",
+ "description" : "The ID of the content store to get the items from.",
+ "required" : true,
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ },
+ "example" : "0693330e-679a-48db-b94f-a8921b76149e"
+ }, {
+ "name" : "itemId",
+ "in" : "query",
+ "description" : "ID of the current item being shown. Some algorithms are based on this information. It also excludes this item from being returned in the result.",
+ "schema" : {
+ "type" : "string",
+ "default" : ""
+ }
+ }, {
+ "name" : "frequencyCap",
+ "in" : "query",
+ "description" : "The number of times an item can be recommended to a profile before being hidden from future recommendations.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 0
+ },
+ "example" : 5
+ }, {
+ "name" : "imageWidth",
+ "in" : "query",
+ "description" : "Width of the images to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 0
+ },
+ "example" : 100
+ }, {
+ "name" : "imageHeight",
+ "in" : "query",
+ "description" : "Height of the images to return.",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 0
+ },
+ "example" : 100
+ }, {
+ "name" : "manualViewCounting",
+ "in" : "query",
+ "description" : "Prevent updating recommendation statistics for the recommended items. Can be used to generate offline recommendation items without influencing the profile.",
+ "schema" : {
+ "type" : "boolean",
+ "default" : false
+ },
+ "example" : true
+ } ],
+ "requestBody" : {
+ "description" : "The body of a recommendations request consists of a JSON array that holds one or more sets of recommendation definition objects. Each recommendation definition object contains a combination of algorithms and filters and a number of items that should be returned. This allows you to return items based on different mixes of algorithms. You can also define a default to fall back to when not enough matching recommendations can be found.\n\nThe following boosting algorithms are supported:\n\n|Name|Description|Example|\n|:----|:----|:----|\n|Breaking news|Items most viewed by all visitors in the time frame defined in the collector.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENT_VIEW\"}]`\n|Viral news|Items most used as a landing page by all visitors in the time frame defined in the collector.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENT_ENTRYPAGE\"}]`\n|Recency|Items most recently added items based on the publication date property.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENCY\"}]`\n|Recent high CTRs|Items most clicked-through from BlueConic recommendations by all visitors in the time frame defined in the collector.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENT_CTR\"}]`\n|Recently bought items|Items recently bought by the provided profileId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENTLY_BOUGHT\"}]`\n|Recently carted items|Items recently put in the shopping cart by the provided profileId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"RECENTLY_SHOPPINGCART\"}]`\n|Same category|Items of the same category as the item with the provided itemId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"SAME_CATEGORY\" }]`\n|Look-alike-articles|Items that have similar content to the item with the provided itemId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \" LOOK_ALIKE\" }]`\n|Seen articles|Items the provided profileId recently viewed.|`\"boosts\": [{\"value\": 1, \"algorithm\": \" RECENTLY_VIEWED\" }]`\n|Same interest|Items that look similar to the items already viewed by the provided profileId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"INTEREST\", \"rampUp\": \"FAST\"}]`\n|Collaborative filtering|Items popular with other profiles who viewed the same items as the provided profileId.|`\"boosts\": [{\"value\": 1, \"algorithm\": \"COLLABORATIVE_FILTERING\", \"rampUp\": \"FAST\"}]`|\n\nRecommendation definition objects may contain filters that restrict the items that may be returned.\nWhen combining multiple filters, these have an implicit `AND` relation.\n\n| Example | Description |\n|:---------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `\"filters\": [\"VIEWED\"]` | Exclude the items already viewed by the provided profileId. |\n| `\"filters\": [\"SHOPPINGCART\"]` | Exclude the items in the shopping of the provided profileId. |\n| `\"filters\": [\"BOUGHT\"]` | Exclude the items already bought by the provided profileId. |\n| `\"filters\": [\"VIEWED_ONLY\"]` | Include only items that were viewed by the provided profileId. |\n| `\"filters\": [\"SHOPPINGCART_ONLY\"]` | Include only items that were in the shoppingcart of the provided profileId. |\n| `\"filters\": [\"BOUGHT_ONLY\"]` | Include only items that were bought by the provided profileId. |\n| `\"filters\": [\"SAME_CATEGORY\"]` | Include only items that have the same category as the provided itemId. |\n| `\"filters\": [\"IN_STOCK\"]` | Include only items that are in stock. |\n| `\"filters\": [\"publicationDate>2023-06-01T00:00+02:00\"]` | Include only items with a publication date after June 1st 2023. The format of publicationDate is `2023-01-01T00:00Z` or with a time zone offset `2023-01-01T00:00+05:00` |\n| `\"filters\": [\"publicationDate<=2023-06-01T00:00+02:00\"]` | Include only items with a publication date before June 1st 2023. The format of publicationDate is `2023-01-01T00:00Z` or with a time zone offset `2023-01-01T00:00+05:00` |\n| `\"filters\": [\"category:politics\"]` | Include only items that have a specific value for a specific property, e.g. “politics” for property “category”. |\n| `\"filters\": [\"!category:politics\"]` | Exclude items that do not have a specific value, e.g. “politics” for property “category”. |\n| `\"filters\": [\"category:politics\",\"category:sports\"]` | Include only items that have all specific values, e.g. “politics” and “sports” for property “category”. |\n| `\"filters\": [\"category:politics,sports\"]` | Include only items that have any of the specified values, e.g. “politics” or “sports” for property “category”. |\n| `\"filters\": [\"!category:politics\",\"!category:sports\"]` | Include only items that do not have any of the specified values, e.g. “politics” or “sports” for property “category”. |\n| `\"filters\": [\"!category:politics,sports\"]` | Include only items that do not have all of the specified values, e.g. “politics” and “sports” for property “category”. |\n| `\"filters\": [\"hasproperty:image\"]` | Include only items that have an image. |\n",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/RecommendationRequest"
+ }
+ },
+ "examples" : {
+ "Example body" : {
+ "description" : "Example body",
+ "value" : "[{\n \"id\": \"first\",\n \"boosts\": [{\n \"value\": \"1\",\n \"algorithm\": \"RECENCY\"\n },\n {\n \"value\": \"2\",\n \"algorithm\": \"COLLABORATIVE_FILTERING\",\n \"rampUp\": \"FAST\"\n },\n {\n \"value\": \"1\",\n \"algorithm\": \"RECENT_VIEW\"\n },\n {\n \"value\": \"1\",\n \"algorithm\": \"RECENT_CTR\"\n }\n ],\n \"filters\": [\n \"category:politics\",\n \"viewed\"\n ],\n \"count\": 3\n },\n {\n \"id\": \"second\",\n \"boosts\": [{\n \"value\": \"2\",\n \"algorithm\": \" COLLABORATIVE_FILTERING \",\n \"rampup\": \"SLOW\"\n },\n {\n \"value\": \"1\",\n \"algorithm\": \" RECENT_CTR\"\n }\n ],\n \"filters\": [\n \"category:politics\",\n \"!category:economie\",\n \"VIEWED\"\n ],\n \"count\": 3\n },\n {\n \"id\": \"default\",\n \"filters\": [\n \"publicationDate>2023-04-17T14:30+0200\",\n \"!category:economie\",\n \"VIEWED\"\n ],\n \"boosts\": [{\n \"value\": \"1\",\n \"algorithm\": \"RECENT_CTR\"\n }]\n }\n]"
+ }
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "The generated recommendations, based on the given request parameters.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/RecommendationResponse"
+ },
+ "examples" : {
+ "Example recommendation response" : {
+ "description" : "Example recommendation response",
+ "value" : "{\n \"recommendationBlock\": [{\n \"id\": \"first\",\n \"recommendations\": [{\n \"score\": 0.12063565363854145,\n \"trackingUrl\": \"http://taylor-news.com/1\",\n \"id\": \"www.taylor-news.com/news/1111\",\n \"url\": \"https://www.taylor-news.com/news/1111\",\n \"name\": \"Name 1\",\n \"description\": \"Description 1.\",\n \"category\": [\"sport\", \"baseball\"],\n \"image\": \"https://img.taylor-news.com/img1.jpg\",\n \"customProperties\": {\n \"pubdate\": [\"tuesday 12 june 2023, 09:45\"],\n \"story\": []\n }\n },\n {\n \"score\": 0.001113261296046081,\n \"trackingUrl\": \"http://taylor-news.com/2\",\n \"id\": \"www.taylor-news.com/news/2222\",\n \"url\": \"https://www.taylor-news.com/news/2222\",\n \"name\": \"Name 2\",\n \"description\": \"Description 2.\",\n \"category\": [\"news\", \"politics\"],\n \"image\": \"https://img.taylor-news.com/img2.jpg\",\n \"customProperties\": {\n \"pubdate\": [\"wednesday 13 june 2023, 09:45\"],\n \"story\": []\n }\n }\n ]\n },\n {\n \"id\": \"second\",\n \"recommendations\": [{\n \"score\": 1.0,\n \"trackingUrl\": \"http://taylor-news.com/3\",\n \"id\": \"www.taylor-news.com/news/3333\",\n \"url\": \"https://www.taylor-news.com/news/2317578\",\n \"name\": \"Name 3\",\n \"description\": \"Description 3.\",\n \"category\": [\"sport\", \"basketball\"],\n \"image\": \"https://img.taylor-news.com/img3.jpg\",\n \"customProperties\": {\n \"pubdate\": [\"tuesday 12 june 2023, 09:45\"],\n \"story\": []\n }\n },\n {\n \"score\": 1.0,\n \"trackingUrl\": \"http://taylor-news.com/4\",\n \"id\": \"www.taylor-news.com/news/4444\",\n \"url\": \"https://www.taylor-news.com/news/2317578\",\n \"name\": \"Name 4\",\n \"description\": \"Description 4.\",\n \"category\": [],\n \"image\": \"https://img.taylor-news.com/img4.jpg\",\n \"customProperties\": {\n \"pubdate\": [\"tuesday 12 june 2023, 09:45\"],\n \"story\": []\n }\n }\n ]\n }\n ],\n \"recommendationId\": \"97258279-baf7-45de-aab3-457dc42904be\",\n \"trackingPixel\": \"http://track.com\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ }
+ }
+ },
+ "/urlmappings" : {
+ "post" : {
+ "tags" : [ "URL mappings" ],
+ "summary" : "Create URL mapping",
+ "description" : "Create a new URL mapping (separate from an external tracker).",
+ "operationId" : "createURL",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/urlmapping"
+ },
+ "examples" : {
+ "Urlmapping example body" : {
+ "description" : "Urlmapping example body",
+ "value" : "{\n \"id\": \"2D\",\n \"properties\": [\n {\n \"id\": \"pp_download\",\n \"values\": [\n \"Blueconic Release News R30\"\n ]\n },\n {\n \"id\": \"interactionId\",\n \"values\": [\n \"9197fdf7-e1d4-4b4b-8b59-5c49a72a412b\"\n ]\n },\n {\n \"id\": \"containerId\",\n \"values\": [\n \"b8bf7a5b-e937-451f-a93c-aa83a20deea5\"\n ]\n },\n {\n \"id\": \"channelId\",\n \"values\": [\n \"36a43edb-0a92-42df-8f19-f788cb146bda\"\n ]\n },\n {\n \"id\": \"pp_interest_index\",\n \"values\": [\n \"blueconic\"\n ]\n }\n ],\n \"type\": \"TRACKINGPIXEL\",\n \"url\": \"http://www.blueconic.com/support/release-notes/profile-property-creation.htm\"\n}"
+ }
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Returns the created urlmapping.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/urlmapping"
+ },
+ "examples" : {
+ "Example POST response" : {
+ "description" : "Example POST response",
+ "value" : "{\n \"id\": \"2D\",\n \"properties\": [\n {\n \"id\": \"pp_download\",\n \"values\": [\n \"Blueconic Release News R30\"\n ]\n },\n {\n \"id\": \"interactionId\",\n \"values\": [\n \"9197fdf7-e1d4-4b4b-8b59-5c49a72a412b\"\n ]\n },\n {\n \"id\": \"containerId\",\n \"values\": [\n \"b8bf7a5b-e937-451f-a93c-aa83a20deea5\"\n ]\n },\n {\n \"id\": \"channelId\",\n \"values\": [\n \"36a43edb-0a92-42df-8f19-f788cb146bda\"\n ]\n },\n {\n \"id\": \"pp_interest_index\",\n \"values\": [\n \"blueconic\"\n ]\n }\n ],\n \"type\": \"TRACKINGPIXEL\",\n \"url\": \"http://www.blueconic.com/support/release-notes/profile-property-creation.htm\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "400" : {
+ "description" : "One or more required parameters are missing or invalid."
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "write:url-mappings" ]
+ } ]
+ }
+ },
+ "/urlmappings/{id}" : {
+ "get" : {
+ "tags" : [ "URL mappings" ],
+ "summary" : "Get URL mapping",
+ "operationId" : "getShortenedURL",
+ "parameters" : [ {
+ "name" : "id",
+ "in" : "path",
+ "description" : "The ID of the URL mapping.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "4Q"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Returns the URL mapping.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/urlmapping"
+ },
+ "examples" : {
+ "Example GET response" : {
+ "description" : "Example GET response",
+ "value" : "{\n \"id\": \"4d\",\n \"properties\": [\n {\n \"id\": \"pp_download\",\n \"values\": [\n \"Blueconic Release News R30\"\n ]\n },\n {\n \"id\": \"interactionId\",\n \"values\": [\n \"9197fdf7-e1d4-4b4b-8b59-5c49a72a412b\"\n ]\n },\n {\n \"id\": \"containerId\",\n \"values\": [\n \"b8bf7a5b-e937-451f-a93c-aa83a20deea5\"\n ]\n },\n {\n \"id\": \"channelId\",\n \"values\": [\n \"36a43edb-0a92-42df-8f19-f788cb146bda\"\n ]\n },\n {\n \"id\": \"pp_interest_index\",\n \"values\": [\n \"blueconic\"\n ]\n }\n ],\n \"type\": \"TRACKINGPIXEL\",\n \"url\": \"http://www.blueconic.com/support/release-notes/profile-property-creation.htm\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : "The specified URL mapping doesn't exist."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "read:url-mappings" ]
+ } ]
+ },
+ "put" : {
+ "tags" : [ "URL mappings" ],
+ "summary" : "Update URL mapping",
+ "operationId" : "updateShortenedURL",
+ "parameters" : [ {
+ "name" : "id",
+ "in" : "path",
+ "description" : "The ID of the URL mapping.",
+ "required" : true,
+ "schema" : {
+ "type" : "string"
+ },
+ "example" : "4Q"
+ } ],
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/urlmapping"
+ },
+ "examples" : {
+ "URL mapping example body" : {
+ "description" : "URL mapping example body",
+ "value" : "{\n \"id\": \"4d\",\n \"properties\": [\n {\n \"id\": \"pp_download\",\n \"values\": [\n \"Blueconic Release News R30\"\n ]\n },\n {\n \"id\": \"interactionId\",\n \"values\": [\n \"9197fdf7-e1d4-4b4b-8b59-5c49a72a412b\"\n ]\n },\n {\n \"id\": \"containerId\",\n \"values\": [\n \"b8bf7a5b-e937-451f-a93c-aa83a20deea5\"\n ]\n }\n ],\n \"type\": \"TRACKINGPIXEL\",\n \"url\": \"http://www.blueconic.com/support/release-notes/profile-property-creation.htm\"\n}"
+ }
+ }
+ }
+ },
+ "required" : true
+ },
+ "responses" : {
+ "200" : {
+ "description" : "Returns the updated urlmapping.",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/urlmapping"
+ },
+ "examples" : {
+ "Example PUT response" : {
+ "description" : "Example PUT response",
+ "value" : "{\n \"id\": \"4d\",\n \"properties\": [\n {\n \"id\": \"pp_download\",\n \"values\": [\n \"Blueconic Release News R30\"\n ]\n },\n {\n \"id\": \"interactionId\",\n \"values\": [\n \"9197fdf7-e1d4-4b4b-8b59-5c49a72a412b\"\n ]\n },\n {\n \"id\": \"containerId\",\n \"values\": [\n \"b8bf7a5b-e937-451f-a93c-aa83a20deea5\"\n ]\n }\n ],\n \"type\": \"SHORTENEDURL\",\n \"url\": \"https://support.blueconic.com/hc/en-us/categories/200063851-Release-Notes\"\n}"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Authentication failed (unauthorized)."
+ },
+ "404" : {
+ "description" : "The specified URL mapping doesn't exist."
+ },
+ "503" : {
+ "description" : "The server is too busy to handle the request."
+ }
+ },
+ "security" : [ {
+ "oauth2" : [ "write:url-mappings" ]
+ } ]
+ }
+ }
+ },
+ "components" : {
+ "schemas" : {
+ "AuditEntryBean" : {
+ "type" : "object",
+ "properties" : {
+ "application" : {
+ "type" : "string"
+ },
+ "date" : {
+ "type" : "string",
+ "format" : "date-time",
+ "description" : "Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt format, example = \"2023-01-22T11:21:33.872Z\"."
+ },
+ "ipAddress" : {
+ "type" : "string"
+ },
+ "objectType" : {
+ "type" : "string",
+ "enum" : [ "DIALOGUE", "LISTENER", "CONNECTION", "VARIANT", "SEGMENT", "PROFILE_PROPERTY", "GROUP_PROPERTY", "TRACKER", "DASHBOARD", "LIFECYCLE", "PLUGIN", "USER", "ROLE", "CHANNEL", "BLUECONIC_HOSTNAME", "LANGUAGE", "CONTENTSTORE", "STATISTICS", "FAVORITE", "TEMPLATE", "NOTEBOOK", "PRIORITY", "GROUP_TYPE", "CLEANUP_RULE", "MERGE_RULE", "COMPOSITION_RULE", "OBJECTIVE", "TIMELINE_EVENT_TYPE", "PROFILE", "IP_RANGE", "GROUP", "SUPPORTED_LEGISLATION_ZONE", "DOMAIN_GROUP", "DOMAIN", "PRIVACY_SETTING", "SINGLE_SIGN_ON_SETTING", "BLUECONIC_SUPPORT_ACCESS_SETTING", "OAUTH_APPLICATION", "OAUTH_TOKEN" ]
+ },
+ "objects" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/AuditEntryObjectBean"
+ }
+ },
+ "operation" : {
+ "type" : "string",
+ "enum" : [ "CREATE", "UPDATE", "DELETE", "READ", "LOGIN", "LOGOUT", "LOGIN_FAILED", "PROFILE_MERGE_TRIGGERED_BY_USER", "PASSWORD_RESET_REQUESTED", "PASSWORD_CHANGE", "MANUAL_RUN", "SCHEDULED_RUN", "EDITOR_RUN" ]
+ },
+ "username" : {
+ "type" : "string"
+ }
+ },
+ "required" : [ "date", "objectType", "operation" ]
+ },
+ "AuditEntryObjectBean" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "AuditEventsBean" : {
+ "type" : "object",
+ "properties" : {
+ "auditEvents" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/AuditEntryBean"
+ }
+ }
+ }
+ },
+ "InteractionEventBean" : {
+ "type" : "object",
+ "properties" : {
+ "interactionId" : {
+ "type" : "string",
+ "description" : "The ID of the interaction. For example the ID of a dialogue variant.",
+ "example" : "b8f384aa-46fe-4904-8664-9ca840e3d476"
+ },
+ "profileId" : {
+ "type" : "string",
+ "description" : "The ID of a BlueConic profile.",
+ "example" : "3bc7cc93-21bc-42d5-bede-dcb1a501fc16"
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "The event type.",
+ "enum" : [ "PAGEVIEW", "VIEW", "CLICK", "CONVERSION" ],
+ "example" : "VIEW"
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "The URL of the current page.",
+ "example" : "https://www.example.com/"
+ }
+ },
+ "required" : [ "interactionId", "type", "url" ]
+ },
+ "InteractionType" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "positionType" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ }
+ }
+ },
+ "entry" : {
+ "type" : "object",
+ "properties" : {
+ "defaultLocale" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string"
+ },
+ "interactionType" : {
+ "$ref" : "#/components/schemas/InteractionType"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "position" : {
+ "type" : "string"
+ }
+ }
+ },
+ "interactions" : {
+ "type" : "object",
+ "properties" : {
+ "interactions" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/entry"
+ }
+ }
+ }
+ },
+ "PageViewEventBean" : {
+ "type" : "object",
+ "properties" : {
+ "profileId" : {
+ "type" : "string",
+ "description" : "The ID of the profile that triggered the event. For this profile, the properties \"firstvisit\", \"visiteddomain\" and \"visitedchannel\" are updated.",
+ "example" : "3bc7cc93-21bc-42d5-bede-dcb1a501fc16"
+ },
+ "referrer" : {
+ "type" : "string",
+ "description" : "The URL of the previous (referring) page.",
+ "example" : "https://www.example.com/"
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "The URL of the current page.",
+ "example" : "https://www.example.com/"
+ }
+ },
+ "required" : [ "url" ]
+ },
+ "TokenErrorResponse" : {
+ "type" : "object",
+ "properties" : {
+ "error" : {
+ "type" : "string",
+ "description" : "The error code."
+ },
+ "error_description" : {
+ "type" : "string",
+ "description" : "A human-readable description of the error with additional information."
+ }
+ }
+ },
+ "TokenSuccessResponse" : {
+ "type" : "object",
+ "properties" : {
+ "access_token" : {
+ "type" : "string",
+ "description" : "The access token that gives access to the public API."
+ },
+ "expires_in" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The time in seconds after which the access token will expire."
+ },
+ "refresh_token" : {
+ "type" : "string",
+ "description" : "The refresh token with which a new access and refresh token can be obtained."
+ },
+ "token_type" : {
+ "type" : "string",
+ "description" : "The token type of the access and refresh token."
+ }
+ }
+ },
+ "profileEvent" : {
+ "type" : "object",
+ "properties" : {
+ "date" : {
+ "type" : "string",
+ "description" : "Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt format, example = \"2023-01-22T11:21:33.872Z\"."
+ },
+ "property" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/property"
+ }
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "The type of event.",
+ "enum" : [ "PermissionLevelChanged", "ConsentChanged" ]
+ }
+ }
+ },
+ "profileEvents" : {
+ "type" : "object",
+ "properties" : {
+ "events" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/profileEvent"
+ }
+ },
+ "itemsPerPage" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Number of results per page."
+ },
+ "startIndex" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The start index."
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of pages."
+ },
+ "totalResults" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of results."
+ }
+ }
+ },
+ "property" : {
+ "type" : "object",
+ "description" : "List of profile properties to be set.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The ID of the property."
+ },
+ "values" : {
+ "type" : "array",
+ "description" : "Values for this property.",
+ "items" : {
+ "type" : "string",
+ "description" : "Values for this property."
+ }
+ }
+ }
+ },
+ "Labels" : {
+ "type" : "object",
+ "properties" : {
+ "label" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/label"
+ }
+ }
+ },
+ "readOnly" : true
+ },
+ "UserBean" : {
+ "type" : "object",
+ "properties" : {
+ "fullName" : {
+ "type" : "string"
+ },
+ "userName" : {
+ "type" : "string"
+ }
+ },
+ "readOnly" : true
+ },
+ "currency" : {
+ "type" : "object",
+ "default" : "None",
+ "description" : "The currency.",
+ "example" : "EUR",
+ "properties" : {
+ "isoCode" : {
+ "type" : "string",
+ "description" : "The currency ISO code, e.g. \"USD\". Only applicable when the filterType is \"CURRENCY.\"",
+ "example" : "EUR, USD, etc."
+ },
+ "name" : {
+ "type" : "string",
+ "readOnly" : true
+ },
+ "precision" : {
+ "type" : "integer",
+ "format" : "int32",
+ "readOnly" : true
+ },
+ "symbol" : {
+ "type" : "string",
+ "readOnly" : true
+ }
+ }
+ },
+ "label" : {
+ "type" : "object",
+ "properties" : {
+ "content" : {
+ "type" : "string"
+ },
+ "locale" : {
+ "type" : "string"
+ }
+ }
+ },
+ "link" : {
+ "type" : "object",
+ "properties" : {
+ "href" : {
+ "type" : "string"
+ },
+ "rel" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ }
+ }
+ },
+ "profileProperty" : {
+ "type" : "object",
+ "properties" : {
+ "availableForSegmentation" : {
+ "type" : "boolean",
+ "default" : false,
+ "description" : "Whether the profile property is available as a filter to create segments."
+ },
+ "canDelete" : {
+ "type" : "boolean",
+ "description" : "If the item can be deleted or not.",
+ "readOnly" : true
+ },
+ "canRead" : {
+ "type" : "boolean",
+ "default" : false,
+ "description" : "Whether the visitor's browser is allowed to retrieve the value for this profile property."
+ },
+ "canWrite" : {
+ "type" : "boolean",
+ "default" : false,
+ "description" : "Whether the visitor's browser is allowed to write a (new) value into this profile property."
+ },
+ "compositionStrategy" : {
+ "type" : "string",
+ "readOnly" : true
+ },
+ "createNewProfile" : {
+ "type" : "boolean",
+ "default" : false,
+ "description" : "Whether a visitor will switch to a new profile when a new value for the profile property is set. This will prevent potential profile hijacking. Only applicable when \"indexed\" is \"true.\""
+ },
+ "creationDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "description" : "The creation date of the object. Datetime in UTC in the https://www.ietf.org/rfc/rfc3339.txt format, example = \"2023-01-22T11:21:33.872Z\".",
+ "readOnly" : true
+ },
+ "creator" : {
+ "$ref" : "#/components/schemas/UserBean"
+ },
+ "currency" : {
+ "$ref" : "#/components/schemas/currency"
+ },
+ "dataSensitivity" : {
+ "type" : "string",
+ "default" : "NON_PII",
+ "description" : "The data sensitivity for the profile property.",
+ "enum" : [ "NON_PII", "PII" ]
+ },
+ "description" : {
+ "type" : "string",
+ "description" : "The description."
+ },
+ "favorite" : {
+ "type" : "boolean",
+ "readOnly" : true
+ },
+ "filterType" : {
+ "type" : "string",
+ "default" : "None",
+ "description" : "The filtertype of the profile property. Note that changing the type might lead to loss of information.",
+ "enum" : [ "RANGE", "CURRENCY", "DECIMAL", "SELECT", "EMAIL", "DATETIME" ]
+ },
+ "filterTypeSuggestion" : {
+ "type" : "string",
+ "readOnly" : true
+ },
+ "id" : {
+ "type" : "string",
+ "description" : "The object ID."
+ },
+ "indexed" : {
+ "type" : "boolean",
+ "default" : false,
+ "description" : "Whether the profile property is indexed (unique)."
+ },
+ "isIdProperty" : {
+ "type" : "boolean",
+ "readOnly" : true
+ },
+ "lastModifiedDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "readOnly" : true
+ },
+ "lastModifiedUser" : {
+ "$ref" : "#/components/schemas/UserBean"
+ },
+ "lastProfileMutationDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "readOnly" : true
+ },
+ "linkingGroupTypeId" : {
+ "type" : "string",
+ "readOnly" : true
+ },
+ "mergeStrategy" : {
+ "type" : "string",
+ "default" : "None",
+ "description" : "The merge strategy of the profile property.",
+ "enum" : [ "BOTH", "SUM", "HIGHEST", "LOWEST", "LATEST", "OLDEST", "KEEP_CURRENT" ]
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "The object name."
+ },
+ "permissionLevel" : {
+ "type" : "string",
+ "default" : "ANONYMOUS",
+ "description" : "The permission level of the profile property.",
+ "enum" : [ "DO_NOT_TRACK", "ANONYMOUS", "PERSONAL" ]
+ },
+ "precision" : {
+ "type" : "integer",
+ "format" : "int32",
+ "default" : 0,
+ "description" : "The precision of a profile property, e.g. 3. Only applicable when the “filterType” is \"DECIMAL.\"",
+ "example" : 3
+ },
+ "profileCount" : {
+ "type" : "integer",
+ "format" : "int64",
+ "readOnly" : true
+ },
+ "range" : {
+ "$ref" : "#/components/schemas/range"
+ },
+ "readOnly" : {
+ "type" : "boolean",
+ "readOnly" : true
+ },
+ "showInUI" : {
+ "type" : "boolean",
+ "default" : true,
+ "description" : "Whether the profile property is shown in the segments UI. Only applicable when \"isAvailableForSegmentation\" is \"true.\""
+ },
+ "tags" : {
+ "type" : "array",
+ "description" : "The tags (e.g. labels).",
+ "example" : "Address",
+ "items" : {
+ "type" : "string",
+ "description" : "The tags (e.g. labels).",
+ "example" : "Address"
+ }
+ },
+ "totalProfileCount" : {
+ "type" : "integer",
+ "format" : "int64",
+ "readOnly" : true
+ },
+ "unit" : {
+ "$ref" : "#/components/schemas/unit"
+ },
+ "useValidation" : {
+ "type" : "boolean"
+ },
+ "values" : {
+ "type" : "array",
+ "description" : "When selecting this profile property as filter for segmentation, these values will be selectable next to the values that are in the profiles. Only applicable when \"availableForSegmentation\" is \"true\".",
+ "items" : {
+ "type" : "string",
+ "description" : "When selecting this profile property as filter for segmentation, these values will be selectable next to the values that are in the profiles. Only applicable when \"availableForSegmentation\" is \"true\"."
+ },
+ "uniqueItems" : true
+ }
+ }
+ },
+ "range" : {
+ "type" : "object",
+ "properties" : {
+ "max" : {
+ "type" : "integer",
+ "format" : "int64"
+ },
+ "min" : {
+ "type" : "integer",
+ "format" : "int64"
+ }
+ },
+ "readOnly" : true
+ },
+ "unit" : {
+ "type" : "object",
+ "description" : "The unit of the profile property.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unit ID."
+ },
+ "name" : {
+ "$ref" : "#/components/schemas/Labels"
+ }
+ }
+ },
+ "links" : {
+ "type" : "object",
+ "properties" : {
+ "links" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/link"
+ }
+ }
+ }
+ },
+ "profileProperties" : {
+ "type" : "object",
+ "properties" : {
+ "itemsPerPage" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Number of results per page."
+ },
+ "links" : {
+ "$ref" : "#/components/schemas/links"
+ },
+ "profileProperties" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/profileProperty"
+ }
+ },
+ "startIndex" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The start index."
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of pages."
+ },
+ "totalResults" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of results."
+ }
+ }
+ },
+ "AbstractBaseBean" : {
+ "type" : "object",
+ "description" : "List of profile IDs that matches search criteria.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier for the object."
+ }
+ }
+ },
+ "profiles" : {
+ "type" : "object",
+ "properties" : {
+ "itemsPerPage" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Number of results per page."
+ },
+ "profiles" : {
+ "type" : "array",
+ "description" : "List of profile IDs that matches search criteria.",
+ "items" : {
+ "$ref" : "#/components/schemas/AbstractBaseBean"
+ }
+ },
+ "startIndex" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The start index."
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of pages."
+ },
+ "totalResults" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of results."
+ }
+ }
+ },
+ "Property" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "Timeline event property ID to apply to this rule for."
+ },
+ "strategy" : {
+ "type" : "string",
+ "description" : "The strategy to apply to primitive timeline event properties. For nested timeline event properties, SET/UPSERT/UPDATE/DELETE are supported.",
+ "enum" : [ "ADD", "SET", "SET_IF_EMPTY" ],
+ "writeOnly" : true
+ },
+ "values" : {
+ "type" : "array",
+ "description" : "The values for this timeline event property. Either a list of primitives (strings, numbers, booleans) or a list of objects (see example).",
+ "items" : {
+ "type" : "object",
+ "description" : "The values for this timeline event property. Either a list of primitives (strings, numbers, booleans) or a list of objects (see example)."
+ }
+ }
+ }
+ },
+ "event" : {
+ "type" : "object",
+ "properties" : {
+ "data" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/Property"
+ }
+ },
+ "date" : {
+ "type" : "string",
+ "format" : "date-time",
+ "description" : "Timestamp for the event. The format of date is \"2018-01-01T00:00Z\" or with a timezone offset \"2018-01-01T00:00+05:00\". If empty, \"now\" will be used."
+ },
+ "eventTypeId" : {
+ "type" : "string",
+ "description" : "The type identifier of the event. See https://yourserver.blueconic.net/rest/timelineEventTypes?alt=json for the list of defined event types."
+ },
+ "id" : {
+ "type" : "string",
+ "description" : "An identifier to identify the event. Preferred to be unique, although it isn't required. If an event with the same ID is present on the profile's timeline, it will be overwritten. Note that the combination of ID, event type ID, and date uniquely identifies an event."
+ },
+ "identifier" : {
+ "type" : "string",
+ "description" : "An (external) identifier which can be passed along with a timeline event operation and is returned in the response."
+ },
+ "strategy" : {
+ "type" : "string",
+ "description" : "How the event will be applied to the timeline.",
+ "enum" : [ "SET", "UPSERT", "UPDATE", "DELETE" ],
+ "writeOnly" : true
+ }
+ }
+ },
+ "lifecycleStage" : {
+ "type" : "object",
+ "description" : "Lifecycle stages that the profile is part of.",
+ "properties" : {
+ "lifecycle" : {
+ "$ref" : "#/components/schemas/simpleDomain"
+ },
+ "stage" : {
+ "$ref" : "#/components/schemas/simpleDomain"
+ }
+ }
+ },
+ "permissions" : {
+ "type" : "object",
+ "properties" : {
+ "level" : {
+ "type" : "string",
+ "description" : "The permission level of the profile"
+ }
+ }
+ },
+ "profile" : {
+ "type" : "object",
+ "description" : "The profiles that are in this segment.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier for the object."
+ },
+ "creationDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "description" : "The creation date of the object. Datetime in UTC in the https://www.ietf.org/rfc/rfc3339.txt format, example = \"2023-01-22T11:21:33.872Z\"."
+ },
+ "privacyLegislation" : {
+ "type" : "string",
+ "description" : "The default privacy legislation for creating profiles (not for matching).",
+ "enum" : [ "NONE", "GDPR", "PIPEDA", "CCPA", "SB220", "NYPA", "PERU_DPL", "ARGENTINA_DPL", "SB1392", "SB190", "BRAZIL_LGPD", "ISRAEL_PPL", "JAPAN_APPI", "NEW_ZEALAND_PRIVACY_ACT", "SWITZERLAND_DPA", "UK_GDPR", "CHINA_PIPL", "AUSTRALIA_PRIVACY_ACT" ]
+ },
+ "consentedObjectives" : {
+ "type" : "array",
+ "description" : "List of objective IDs that the profile has given consent to.",
+ "items" : {
+ "type" : "string",
+ "description" : "List of objective IDs that the profile has given consent to."
+ }
+ },
+ "refusedObjectives" : {
+ "type" : "array",
+ "description" : "List of objective IDs that the profile has refused consent to.",
+ "items" : {
+ "type" : "string",
+ "description" : "List of objective IDs that the profile has refused consent to."
+ }
+ },
+ "permissions" : {
+ "$ref" : "#/components/schemas/permissions"
+ },
+ "properties" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/property"
+ }
+ },
+ "events" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/event"
+ }
+ },
+ "lifecycleStages" : {
+ "type" : "array",
+ "description" : "Lifecycle stages that the profile is part of.",
+ "items" : {
+ "$ref" : "#/components/schemas/lifecycleStage"
+ }
+ },
+ "replacedBy" : {
+ "type" : "string",
+ "description" : "The profile ID that replaced this profile."
+ },
+ "replaces" : {
+ "type" : "array",
+ "description" : "The IDs of the profiles that are replaced by this profile.",
+ "items" : {
+ "type" : "string",
+ "description" : "The IDs of the profiles that are replaced by this profile."
+ }
+ },
+ "segments" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/profileSegmentBean"
+ }
+ }
+ }
+ },
+ "profileSegmentBean" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The ID of the segment."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "The name of the segment."
+ }
+ }
+ },
+ "simpleDomain" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "Unique identifier."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Name of this object."
+ }
+ }
+ },
+ "BulkInputEntryV2" : {
+ "type" : "object",
+ "properties" : {
+ "domainGroup" : {
+ "type" : "string",
+ "default" : "DEFAULT",
+ "description" : "Specifies the domain group in which a profile is created. Used for matching and creating profiles."
+ },
+ "identifier" : {
+ "type" : "string",
+ "description" : "An (external) identifier which can be passed along with an operation and is returned in the response.",
+ "example" : "[[{\"id\": \"email\", value: \"test@test.com\"}]]"
+ },
+ "matching" : {
+ "type" : "array",
+ "description" : "The profile properties to match (only use \"Unique Identifier\" properties). This is an array of arrays; the items in the outer array have an \"OR\" relation, the items in the inner array have an \"AND\" relation.",
+ "items" : {
+ "type" : "array",
+ "description" : "The profile properties to match (only use \"Unique Identifier\" properties). This is an array of arrays; the items in the outer array have an \"OR\" relation, the items in the inner array have an \"AND\" relation.",
+ "items" : {
+ "$ref" : "#/components/schemas/Criterium"
+ }
+ }
+ },
+ "permissionLevel" : {
+ "type" : "string",
+ "default" : "PERSONAL",
+ "description" : "Specifies the permission level when creating a profile. Not used for matching.",
+ "enum" : [ "DO_NOT_TRACK", "ANONYMOUS", "PERSONAL" ]
+ },
+ "privacyLegislation" : {
+ "type" : "string",
+ "description" : "Specifies the privacy legislation when creating a profile. Not used for matching.",
+ "enum" : [ "NONE", "GDPR", "PIPEDA", "CCPA", "SB220", "NYPA", "PERU_DPL", "ARGENTINA_DPL", "SB1392", "SB190", "BRAZIL_LGPD", "ISRAEL_PPL", "JAPAN_APPI", "NEW_ZEALAND_PRIVACY_ACT", "SWITZERLAND_DPA", "UK_GDPR", "CHINA_PIPL", "AUSTRALIA_PRIVACY_ACT" ]
+ },
+ "profileId" : {
+ "type" : "string",
+ "description" : "The BlueConic profile ID to search for. When specified, it overrides possible matching criteria."
+ },
+ "properties" : {
+ "type" : "array",
+ "description" : "The rules that will be executed on this profile.The following properties have a special meaning: `privacy_legislation`: the value passed in this property should be one of the [privacy legislation zone values](https://support.blueconic.com/hc/en-us/articles/202528082-BlueConic-REST-API#privacy_legislation), and is used to determine if a profile should be matched against the passed `objectiveIds` in the querystring. `consented_objectives`: the value(s) passed in this property are used to match against the passed `objectiveIds` in the querystring. At least one must match in order for the profile to be created/updated, otherwise `CONSENT_MISMATCH` is returned. `refused_objectives`: the value(s) passed in this property are used to set the explicitly refused objectives.",
+ "items" : {
+ "$ref" : "#/components/schemas/ProfileProperty"
+ }
+ },
+ "restriction" : {
+ "$ref" : "#/components/schemas/restriction"
+ },
+ "strategy" : {
+ "type" : "string",
+ "default" : "UPDATE",
+ "description" : "The strategy to apply to the given entry. Can be used to create, update or delete profiles.",
+ "enum" : [ "UPSERT", "UPDATE", "DELETE" ]
+ },
+ "timeline" : {
+ "type" : "array",
+ "description" : "The timeline event entries that will be applied to the timeline for this profile.",
+ "items" : {
+ "$ref" : "#/components/schemas/event"
+ }
+ }
+ }
+ },
+ "Criterium" : {
+ "type" : "object",
+ "description" : "The profile properties to match (only use \"Unique Identifier\" properties). This is an array of arrays; the items in the outer array have an \"OR\" relation, the items in the inner array have an \"AND\" relation.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The profile property ID to match on."
+ },
+ "value" : {
+ "type" : "string",
+ "description" : "The profile property value to match on."
+ }
+ }
+ },
+ "ProfileProperty" : {
+ "type" : "object",
+ "description" : "The rules that will be executed on this profile.The following properties have a special meaning: `privacy_legislation`: the value passed in this property should be one of the [privacy legislation zone values](https://support.blueconic.com/hc/en-us/articles/202528082-BlueConic-REST-API#privacy_legislation), and is used to determine if a profile should be matched against the passed `objectiveIds` in the querystring. `consented_objectives`: the value(s) passed in this property are used to match against the passed `objectiveIds` in the querystring. At least one must match in order for the profile to be created/updated, otherwise `CONSENT_MISMATCH` is returned. `refused_objectives`: the value(s) passed in this property are used to set the explicitly refused objectives.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The profile property ID to apply to this rule for."
+ },
+ "restriction" : {
+ "type" : "string",
+ "default" : "ALL_PROFILES",
+ "description" : "The restriction to apply to this rule.",
+ "enum" : [ "ALL_PROFILES", "EXISTING_PROFILES_ONLY", "NEW_PROFILES_ONLY" ]
+ },
+ "strategy" : {
+ "type" : "string",
+ "description" : "The strategy to apply to this rule.",
+ "enum" : [ "ADD", "SET", "SET_IF_EMPTY", "INCREMENT", "REMOVE" ]
+ },
+ "values" : {
+ "type" : "array",
+ "description" : "The values to apply to this rule.",
+ "items" : {
+ "type" : "string",
+ "description" : "The values to apply to this rule."
+ }
+ }
+ }
+ },
+ "restriction" : {
+ "type" : "object",
+ "description" : "The possible restriction rules when matching profiles. Only \"isMemberOfSegment\" is available at the moment.",
+ "properties" : {
+ "isMemberOfSegment" : {
+ "type" : "string",
+ "description" : "The segment ID this profile should be a part of."
+ }
+ }
+ },
+ "BulkResultBean" : {
+ "type" : "object",
+ "properties" : {
+ "identifier" : {
+ "type" : "string",
+ "description" : "The identifier (optionally) as passed in the input, can be used as reference."
+ },
+ "profileId" : {
+ "type" : "string",
+ "description" : "The profile ID of the profile that was created, updated or deleted."
+ },
+ "state" : {
+ "type" : "string",
+ "description" : "The possible states for profile related changes.",
+ "enum" : [ "CREATED", "SKIPPED", "MODIFIED", "UNCHANGED", "NOTFOUND", "RESTRICTION_MISMATCH", "CONSENT_MISMATCH", "DELETED" ]
+ },
+ "timeline" : {
+ "type" : "array",
+ "description" : "The feedback on the given timeline events.",
+ "items" : {
+ "$ref" : "#/components/schemas/TimelineResultBean"
+ }
+ },
+ "validationErrors" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "array",
+ "description" : "The errors found for the given profile changes (if any).",
+ "items" : {
+ "type" : "string",
+ "description" : "The errors found for the given profile changes (if any)."
+ }
+ },
+ "description" : "The errors found for the given profile changes (if any)."
+ }
+ }
+ },
+ "TimelineResultBean" : {
+ "type" : "object",
+ "description" : "The feedback on the given timeline events.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The ID for this event."
+ },
+ "identifier" : {
+ "type" : "string",
+ "description" : "The identifier (optionally) as passed in the input, can be used as reference."
+ },
+ "state" : {
+ "type" : "string",
+ "description" : "The possible states for timeline events.",
+ "enum" : [ "CREATED", "SET", "MODIFIED", "REJECTED", "NOTFOUND", "DELETED" ]
+ },
+ "validationErrors" : {
+ "type" : "array",
+ "description" : "The errors found for the given timeline event changes (if any).",
+ "example" : [ "#/total_revenue/0: expected type: Number, found: String" ],
+ "items" : {
+ "type" : "string",
+ "description" : "The errors found for the given timeline event changes (if any).",
+ "example" : "[\"#/total_revenue/0: expected type: Number, found: String\"]"
+ }
+ }
+ }
+ },
+ "BadRequestBean" : {
+ "type" : "object",
+ "properties" : {
+ "code" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "errors" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/ErrorBean"
+ }
+ },
+ "message" : {
+ "type" : "string"
+ }
+ }
+ },
+ "ErrorBean" : {
+ "type" : "object",
+ "properties" : {
+ "message" : {
+ "type" : "string"
+ }
+ }
+ },
+ "SegmentProfiles" : {
+ "type" : "object",
+ "properties" : {
+ "cursor" : {
+ "type" : "string",
+ "description" : "The cursor of the current page. `*` when not passed."
+ },
+ "itemsPerPage" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Number of results per page."
+ },
+ "links" : {
+ "type" : "array",
+ "description" : "The links to the first and next/last page.",
+ "items" : {
+ "$ref" : "#/components/schemas/link"
+ }
+ },
+ "nextCursor" : {
+ "type" : "string",
+ "description" : "The cursor of the next page (if any)."
+ },
+ "profiles" : {
+ "type" : "array",
+ "description" : "The profiles that are in this segment.",
+ "items" : {
+ "$ref" : "#/components/schemas/profile"
+ }
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of pages."
+ },
+ "totalResults" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of results."
+ }
+ }
+ },
+ "segment" : {
+ "type" : "object",
+ "description" : "The segments.",
+ "properties" : {
+ "canDelete" : {
+ "type" : "boolean",
+ "description" : "If the item can be deleted or not.",
+ "readOnly" : true
+ },
+ "creationDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "description" : "The creation date of the object. Datetime in UTC in the https://www.ietf.org/rfc/rfc3339.txt format, example = \"2023-01-22T11:21:33.872Z\".",
+ "readOnly" : true
+ },
+ "creator" : {
+ "$ref" : "#/components/schemas/UserBean"
+ },
+ "description" : {
+ "type" : "string",
+ "description" : "The description."
+ },
+ "favorite" : {
+ "type" : "boolean",
+ "readOnly" : true
+ },
+ "id" : {
+ "type" : "string",
+ "description" : "The object ID."
+ },
+ "inverseOf" : {
+ "type" : "string"
+ },
+ "inversedBy" : {
+ "type" : "string"
+ },
+ "lastModifiedDate" : {
+ "type" : "string",
+ "format" : "date-time",
+ "readOnly" : true
+ },
+ "lastModifiedUser" : {
+ "$ref" : "#/components/schemas/UserBean"
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "The object name."
+ },
+ "readOnly" : {
+ "type" : "boolean",
+ "readOnly" : true
+ },
+ "tags" : {
+ "type" : "array",
+ "description" : "The tags (e.g. labels).",
+ "example" : "Address",
+ "items" : {
+ "type" : "string",
+ "description" : "The tags (e.g. labels).",
+ "example" : "Address"
+ }
+ }
+ }
+ },
+ "segments" : {
+ "type" : "object",
+ "properties" : {
+ "itemsPerPage" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "Number of results per page."
+ },
+ "segments" : {
+ "type" : "array",
+ "description" : "The segments.",
+ "items" : {
+ "$ref" : "#/components/schemas/segment"
+ }
+ },
+ "startIndex" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The start index."
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of pages."
+ },
+ "totalResults" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The total number of results."
+ }
+ }
+ },
+ "Boost" : {
+ "type" : "object",
+ "description" : "The algorithms that will be executed to determine the recommendations with their boost value and parameters.",
+ "example" : [ {
+ "value" : "1.5",
+ "algorithm" : "RECENCY"
+ } ],
+ "properties" : {
+ "algorithm" : {
+ "type" : "string",
+ "description" : "Available boosting algorithms",
+ "enum" : [ "COLLABORATIVE_FILTERING", "INTEREST", "LOOK_ALIKE", "RECENCY", "RECENT_CTR", "RECENT_ENTRYPAGE", "RECENT_VIEW", "RECENTLY_BOUGHT", "RECENTLY_SHOPPINGCART", "RECENTLY_VIEWED", "SAME_CATEGORY" ]
+ },
+ "rampUp" : {
+ "type" : "string",
+ "description" : "Ramp up value for algorithms that use it",
+ "enum" : [ "INSTANT", "VERY_SLOW", "SLOW", "NORMAL", "FAST" ]
+ },
+ "value" : {
+ "type" : "number",
+ "format" : "double",
+ "description" : "Boost value can be a whole or half number: 1, 1.5, 2, 2.5, …, 9.5, 10."
+ }
+ },
+ "required" : [ "algorithm", "value" ]
+ },
+ "RecommendationRequest" : {
+ "type" : "object",
+ "properties" : {
+ "boosts" : {
+ "type" : "array",
+ "description" : "The algorithms that will be executed to determine the recommendations with their boost value and parameters.",
+ "example" : [ {
+ "value" : "1.5",
+ "algorithm" : "RECENCY"
+ } ],
+ "items" : {
+ "$ref" : "#/components/schemas/Boost"
+ }
+ },
+ "count" : {
+ "type" : "integer",
+ "format" : "int32",
+ "description" : "The maximum number of items that should be returned for this definition.",
+ "example" : 5
+ },
+ "filters" : {
+ "type" : "array",
+ "description" : "Item filters, see description.",
+ "example" : [ "category:news", "viewed" ],
+ "items" : {
+ "type" : "string",
+ "description" : "Item filters, see description.",
+ "example" : "[\"category:news\",\"viewed\"]"
+ }
+ },
+ "id" : {
+ "type" : "string",
+ "description" : "The order of execution of the definition objects: 'first' will be executed first, 'second' will be executed next. If the total count has not been reached, the remainder items will be from the 'default' definition.",
+ "example" : "first"
+ }
+ },
+ "required" : [ "boosts", "id" ]
+ },
+ "RecommendationItem" : {
+ "type" : "object",
+ "description" : "The recommendations of this block.",
+ "properties" : {
+ "category" : {
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "customProperties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "array",
+ "description" : "The properties of this item.",
+ "items" : {
+ "type" : "string",
+ "description" : "The properties of this item."
+ }
+ },
+ "description" : "The properties of this item."
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "id" : {
+ "type" : "string",
+ "description" : "The ID of this item."
+ },
+ "image" : {
+ "type" : "string",
+ "description" : "The image of this item."
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "publicationDate" : {
+ "type" : "string",
+ "description" : "The publication date of this item."
+ },
+ "score" : {
+ "type" : "number",
+ "format" : "double",
+ "description" : "The recommendation score."
+ },
+ "trackingUrl" : {
+ "type" : "string",
+ "description" : "The recommendation tracking url."
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "The url of this item."
+ }
+ }
+ },
+ "RecommendationResponse" : {
+ "type" : "object",
+ "properties" : {
+ "recommendationBlock" : {
+ "type" : "array",
+ "description" : "The recommendation blocks as defined in the request body.",
+ "items" : {
+ "$ref" : "#/components/schemas/RecommendationSubResponse"
+ }
+ },
+ "recommendationId" : {
+ "type" : "string",
+ "description" : "The unique ID for this recommendation request."
+ },
+ "trackingPixel" : {
+ "type" : "string",
+ "description" : "The tracking pixel to track this recommendation request."
+ }
+ }
+ },
+ "RecommendationSubResponse" : {
+ "type" : "object",
+ "description" : "The recommendation blocks as defined in the request body.",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The ID for this recommendation block, as defined in the request body."
+ },
+ "recommendations" : {
+ "type" : "array",
+ "description" : "The recommendations of this block.",
+ "items" : {
+ "$ref" : "#/components/schemas/RecommendationItem"
+ }
+ }
+ }
+ },
+ "urlmapping" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The ID of shortened URL."
+ },
+ "properties" : {
+ "type" : "array",
+ "description" : "List of profile properties to be set.",
+ "items" : {
+ "$ref" : "#/components/schemas/property"
+ }
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "The tracker must be one of the available types.",
+ "enum" : [ "TRACKINGPIXEL", "SHORTENEDURL" ]
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "The full URL of the target page (only applicable for type SHORTENEDURL)."
+ }
+ },
+ "required" : [ "id", "properties", "url" ]
+ }
+ },
+ "securitySchemes" : {
+ "oauth2" : {
+ "type" : "oauth2",
+ "description" : "Authenticates a registered OAuth 2.0 client. The Authorization code flow and Client credentials flow are supported. Make sure to select the correct flow based on which flow the registered client supports. The client id and client secret can be found in BlueConic by opening the registered client under *Settings* > *Access management* > *Applications*.
**NOTE:** When using the Authorization code flow, the redirect URL of the registered client in BlueConic must be set to `https://rest.apidoc.blueconic.com/oauth-receiver.html` and 'Send Proof Key for Code Exchange' must be enabled.
To use a Bearer token for authentication, follow these steps:
1. Acquire the token through authentication.
2. Include the token in the request's Authorization header as Bearer \\.
3. Send the request to access protected resources.
4. Handle token expiration by refreshing or obtaining a new token.",
+ "flows" : {
+ "clientCredentials" : {
+ "tokenUrl" : "/rest/v2/oauth/token"
+ },
+ "authorizationCode" : {
+ "authorizationUrl" : "/rest/v2/oauth/authorize",
+ "tokenUrl" : "/rest/v2/oauth/token",
+ "refreshUrl" : "/rest/v2/oauth/token"
+ }
+ }
+ }
+ }
+ },
+ "jsonSchemaDialect" : "https://json-schema.org/draft/2020-12/schema"
+}
\ No newline at end of file
diff --git a/definitions/r89/openapi.yaml b/definitions/r89/openapi.yaml
new file mode 100644
index 0000000..b290ca3
--- /dev/null
+++ b/definitions/r89/openapi.yaml
@@ -0,0 +1,4433 @@
+openapi: 3.1.0
+info:
+ title: BlueConic REST API v2
+ description: "Welcome to the [BlueConic](https://www.blueconic.com) REST API v2.\
+ \ Our recently updated APIs offer access to a wealth of resources to interact\
+ \ with BlueConic visitor profiles, segments, interactions, and audit events via\
+ \ OpenAPI and OAuth 2.0 authorization flows making the interconnection between\
+ \ various services more secure, intuitive, and reliable than ever before.\n\n\
+ This page describes how developers can use OAuth 2.0, the industry-standard protocol\
+ \ for authorization, to authorize apps in BlueConic and get started using the\
+ \ BlueConic REST API v2.\n\nLearn more about [how to use the BlueConic REST API\
+ \ v2](https://support.blueconic.com/hc/en-us/articles/200453891-Using-the-BlueConic-REST-API).\n\
+ \n# Authorizing an application to use the BlueConic REST API via OAuth 2.0\n\n\
+ If you have an external software application that needs to communicate with BlueConic,\
+ \ you need to allow access to the BlueConic REST API. The authorization process\
+ \ in BlueConic for this access is built to OAuth 2.0 specifications. You can use\
+ \ either of two authorization flows: the authorization code flow and the client\
+ \ credentials flow. The most secure flow is the authorization code flow, intended\
+ \ for use with a user who can log in to BlueConic and authenticate the application\
+ \ to use the BlueConic API. The client credentials flow is easier to implement\
+ \ but lacks security features present in the authorization code flow. The client\
+ \ credentials flow is intended for machine-to-machine applications. \n\n## Using\
+ \ the Authorization code flow\n\nTo use the BlueConic REST API with OAuth 2.0\
+ \ according to the authorization code flow you need to complete the following\
+ \ steps:\n\n1. Configure BlueConic so your external OAuth 2.0 application can\
+ \ authenticate and use the REST API. This means that you have to:\n - Have\
+ \ a BlueConic user with the \"Applications\" permission. This user can configure\
+ \ the details of the external application in BlueConic.\n - Have a BlueConic\
+ \ user with the \"Authorize Applications\" permission. This user can authorize\
+ \ the external application via the redirect page served by the authorization server.\n\
+ \ - Configure the external application on the BlueConic Access management >\
+ \ Applications tab, so BlueConic can store public client ID and the client secret.\
+ \ The external app uses these properties to perform the initial request for an\
+ \ authorization code.\n\n\n2. Develop an application that can execute OAuth 2.0\
+ \ REST API requests. Specifically, that means an application that is able to:\n\
+ \ - Generate a code verifier and code challenge.\n - Store the public client\
+ \ ID and client secret as configured in BlueConic (see step 1). \n - Request\
+ \ an authorization code from the BlueConic authorization server. Include the code\
+ \ challenge in the request. \n - Show the user the redirect page served by\
+ \ the BlueConic authorization server, so the user can authenticate with credentials\
+ \ and consent to giving the application BlueConic REST API access.\n - Receive\
+ \ the authorization code from the BlueConic authorization server.\n - Use the\
+ \ authorization code to request an access token (and refresh token) from the BlueConic\
+ \ authorization server. Include the code verifier in the request. You must also\
+ \ provide the client ID and client secret for client authentication. You can do\
+ \ so by sending the client credentials in the body of your POST request.\n \
+ \ - Use the access token to perform REST API requests. \n - Revoke access if\
+ \ the user of the app so chooses (meaning that after this revocation, a new authorization\
+ \ grant is required to use the BlueConic REST API).\n - Handle refresh token\
+ \ rotation. This means that whenever a new access token is requested using the\
+ \ refresh token, a new refresh token is also supplied along with the new access\
+ \ token.\n - Handle all possible responses from the BlueConic REST API appropriately.\n\
+ \n[Read more about the Authorization Code Flow](https://support.blueconic.com/hc/en-us/articles/14912561861403)\n\
+ \n## Using the Client credentials flow\n\nTo make use of the BlueConic REST API\
+ \ with OAuth 2.0 following the client credentials flow, you need to complete the\
+ \ following steps:\n\n1. Configure BlueConic so your external OAuth 2.0 application\
+ \ can use the REST API. This means that you have to:\n - Have a user with the\
+ \ \"Applications\" permission. This user can configure the details of the external\
+ \ application in BlueConic.\n - Have a user with the \"Authorize Applications\"\
+ \ permission, who also has all permissions needed to use the REST API endpoint\
+ \ that you intend to use.\n - Configure the external application on the Access\
+ \ management > Applications tab, so BlueConic can generate and store the public\
+ \ client ID and client secret for client authentication. Also select at least\
+ \ one scope so the app has access to that part of the REST API.\n \n2. Develop\
+ \ an application that can execute OAuth 2.0 REST API requests. Specifically that\
+ \ means an application that is able to:\n - Store the public client ID and\
+ \ client secret as configured in BlueConic (see above).\n - Use the client\
+ \ ID and client secret to request an access token from the BlueConic authorization\
+ \ server. You can do so by sending the client credentials in the body of your\
+ \ POST request.\n - Use the access token to perform REST API requests.\n \
+ \ - Handle all possible responses from the BlueConic REST API appropriately.\n\
+ \n[Read more about the Client Credentials Flow](https://support.blueconic.com/hc/en-us/articles/14912655111963)\n\
+ \n# Using the try-out feature\nThe “Try” feature allows you to directly make REST\
+ \ calls to the API server, where you can make requests and see the responses,\
+ \ allowing you to experiment with the BlueConic API and understand how it works.\n\
+ \nYou can enter your BlueConic URL in the “API Servers” section. After that, you\
+ \ can try out the calls that don’t require authentication, such as “Get interactions”\
+ . You can enter the request parameters and click “Try”.\n\n## OAuth 2.0 authentication\n\
+ \nMost calls require OAuth 2.0 authentication, such as “Get audit events”. This\
+ \ can be seen at the right top and under the Request heading of each API method.\
+ \ To use the “Try” feature, you need to authenticate via OAuth 2.0. First create\
+ \ an Application in your BlueConic tenant (see above). When using the Authorization\
+ \ code flow, make sure to set the redirect URL to this tool as specified under\
+ \ the OAuth 2.0 authentication section. After you create the Application, authenticate\
+ \ this tool in the “Authentication” section. Enter the client ID and client secret\
+ \ in the correct OAuth 2.0 flow for which you created the application and press\
+ \ “GET TOKEN”. If the tool got a token successfully, you will see the text “API\
+ \ key applied” just under the “Authentication” heading. In calls that require\
+ \ Authentication, it will say “OAuth (OAuth 2.0) in header”. Now you can use the\
+ \ “Try” feature for calls that require OAuth 2.0. If you hover over the authentication\
+ \ scheme at the top right of an API method, you will see the required scopes (e.g.\
+ \ “Get audit events” has the scope read:audit-events). Make sure you set these\
+ \ scopes for the Application in BlueConic.\n\n# General functionality for all\
+ \ endpoints\n\n1. By using `prettyPrint`, the JSON data is formatted in a way\
+ \ that makes it easier to read and work with. This can be especially useful when\
+ \ working with large or complex JSON datasets. Add the following to the query\
+ \ string of a request to pretty print JSON: `&prettyPrint=true`.\n2. Gzip encoding\
+ \ is a method of compressing data and is commonly used to reduce the size of files\
+ \ sent over the Internet. BlueConic supports this so a client can set the request\
+ \ header `Accept-Encoding: gzip`. BlueConic will then compress the data in its\
+ \ response and send it back to the client with the `Content-Encoding: gzip` header.\
+ \ \n\n"
+ termsOfService: https://www.blueconic.com/blueconic-terms-and-conditions
+ contact:
+ name: Contact us
+ url: https://support.blueconic.com/hc/en-us/requests/new
+ license:
+ name: BlueConic
+ url: https://github.com/blueconic/openapi/blob/main/LICENSE.MD
+ version: "89.0"
+servers:
+- url: "https://{blueconicHostname}/rest/v2"
+ description: The BlueConic server
+ variables:
+ blueconicHostname:
+ description: "BlueConic server hostname, e.g. 'tenant.blueconic.net'"
+ default: tenantname
+tags:
+- name: Audit Events
+ description: "The Audit Event API allows users to connect BlueConic to a SIEM system.\
+ \ We recommend using this API to periodically receive security-related activities\
+ \ based on a rolling window. The API has a 30-day retention period.\n\nThe API\
+ \ logs the following audit events:\n\n| Object \
+ \ | Events \
+ \ |\n| :---------------------------------------- |:-----------------------------------------------------------------------------------------------|\n\
+ | BlueConic hostname | Create, Update, Delete \
+ \ |\n| BlueConic\
+ \ Support Access | Update (for each change) \
+ \ |\n| Channel \
+ \ | Create, Update, Delete \
+ \ |\n| Clean up rule \
+ \ | Create, Update, Delete \
+ \ |\n| Connection \
+ \ | Create, Update, Delete, Manual run, Scheduled run \
+ \ |\n| Dashboard \
+ \ | Create, Update, Delete \
+ \ |\n| Dialogue | Create,\
+ \ Update, Delete \
+ \ |\n| Domain Group | Create, Update,\
+ \ Delete \
+ \ |\n| Group | Read, Update, Delete \
+ \ |\n|\
+ \ Group type | Create, Update, Delete \
+ \ |\n| Ip range\
+ \ | Create, Update, Delete \
+ \ |\n| Language \
+ \ | Create, Update, Delete \
+ \ |\n| Lifecycle \
+ \ | Create, Update, Delete \
+ \ |\n| Merge rule \
+ \ | Create, Update, Delete \
+ \ |\n| Notebook \
+ \ | Create, Update, Delete, Manual run, Scheduled run, Editor run \
+ \ |\n| OAuth application | Create,\
+ \ Update, Delete \
+ \ |\n| OAuth token | Create, Update,\
+ \ Delete \
+ \ |\n| Objective | Create, Update, Delete \
+ \ |\n|\
+ \ Plugin | Create, Update, Delete \
+ \ |\n| Privacy\
+ \ setting | Update (for each change) \
+ \ |\n| Profile \
+ \ | Read, Update, Delete \
+ \ |\n| Profile property \
+ \ | Create, Update, Delete \
+ \ |\n| Role \
+ \ | Create, Update, Delete \
+ \ |\n| Segment \
+ \ | Create, Update, Delete \
+ \ |\n| Single Sign On Setting | Update\
+ \ (for each change) \
+ \ |\n| Supported Legislation Zone | Create, Delete,\
+ \ Update \
+ \ |\n| Tracker | Create, Update, Delete \
+ \ |\n|\
+ \ User | Login, Login failed, Logout, Create,\
+ \ Update, Delete, Password reset requested, Password change |\n\n\nOnly Profile\
+ \ and Group viewed, updated, or deleted by a user from the Profile and Groups\
+ \ tab are logged.\n\nThe following events are not considered as human actions,\
+ \ and therefore not covered in the Platform\nAudit Event API:\n\n- Connections\
+ \ that import or export profiles.\n- Profile and group creation (Profiles can\
+ \ only be created by a visitor or an import connection).\n\n**Event data**\n\n\
+ The following event data is available:\n\n| Field | Description\
+ \ | Example values \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ |\n| :--- | :--- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\
+ |date|Datetime in UTC when the event occurred. The date is in the https://www.ietf.org/rfc/rfc3339.txt\
+ \ format.| 2023-04-15T11:24:01.183Z \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ |\n|username|(BlueConic) Identifier (email address) of the\
+ \ user who did the action.
Value is empty for failed login attempts.|\
+ \ test@blueconic.com \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ |\n|objectType|Object of the action.| - BLUECONIC_HOSTNAME
- BLUECONIC_SUPPORT_ACCESS_SETTING
- CHANNEL
- CLEAN_UP_RULE
- CONNECTION
- DASHBOARD
- DIALOGUE
- DOMAIN_GROUPvGROUP
- GROUP_TYPE
- IP_RANGE
- LANGUAGE
- LIFECYCLE
- LISTENER
- MERGE_RULE
- NOTEBOOK
- OBJECTIVE
- PLUGIN
- PRIVACY_SETTING
- PROFILE
- PROFILE_PROPERTY
- ROLE
- SEGMENT
- SINGLE_SIGN_ON_SETTING
- SUPPORTED_LEGISLATION_ZONE
- TRACKER
- USER
\
+ \ |\n|objectId|- Email address in case of a user.
- In the case of\
+ \ LOGIN_FAILED and a user tried to login with an invalid format email address,\
+ \ it could be that the user filled the password in the email address field. In\
+ \ that case the objectId is empty
- Grouptype_GroupID in case\
+ \ of a group
- For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectId\
+ \ is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
- \
+ \ For BLUECONIC_SUPPORT_ACCESS_SETTING the objectID contains the new settings.
- \
+ \ `\"objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
- `\"\
+ objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\"\
+ \ },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }], (contains\
+ \ the new list)` or
- `\"objects\" : [ {\"name\" : \"All BlueConic support\
+ \ employees\", \"id\" : \"all\" } ],`
- UUID or identifier in\
+ \ case of other object types.
| - 1b1e50a5-c46a-4309-a95c-d4e19985fbbb
- test@blueconic.com
- test_objective
- test_profile_property
\
+ \ \
+ \ \
+ \ \
+ \ \
+ \ \
+ \ |\n|objectName|Human readable name of the object.
For\
+ \ Profiles, the name is determined by the first value that is not empty:
- fullname
- email
- BlueConic\
+ \ ID (UUID)
For Users, the name is determined by the first value that\
+ \ is not empty:
- fullname
- email
- In the case\
+ \ of LOGIN_FAILED and a user tried to login with an invalid format email address,\
+ \ it could be that the user filled the password in the email address field. In\
+ \ that case, the objectName is empty.
For groups, the name is the\
+ \ group id.
For PRIVACY_SETTING and SINGLE_SIGN_ON_SETTING, the objectName\
+ \ is the name(s) of the changed setting. E.g. Status, Identity_Provider_Issuer_URL_Entity_ID.
For\
+ \ BLUECONIC_SUPPORT_ACCESS_SETTING the objectName contains the new settings.
`\"\
+ objects\" : [ {\"name\" : \"No Access\", \"id\" : \"none\" } ]` or
`\"objects\" : [ {\"name\" : \"User name here\", \"id\" : \"user1@blueconic.com\"\
+ \ },{\"name\" : \"User name 2 here\", \"id\" : \"user2@blueconic.com\" }],` (contains\
+ \ the new list) or
`\"objects\" : [ {\"name\" : \"All BlueConic\
+ \ support employees\", \"id\" : \"all\" } ],`
|