Illuminate REST API
The PubNub Illuminate REST API provides programmatic access to create, manage, and monitor your real-time analytics and decision-making infrastructure.
Overview
Use this API to define the data you capture (business objects), transform that data into aggregations (metrics), make real-time decisions (decisions), and visualize everything (dashboards). The typical workflow is linear and repeatable across projects.
Quick start workflow
- Create a business object to describe which event fields you will ingest.
- Create a metric to aggregate those fields over a time window.
- Create a decision to evaluate conditions and trigger actions.
- Create a dashboard to visualize the metric and optionally overlay decision triggers.
Endpoint index
Resource | Operation | Method | Endpoint | Docs |
---|---|---|---|---|
Business objects | Create | POST | /business-objects | Create business object |
List | GET | /business-objects | List business objects | |
Get | GET | /business-objects/{id} | Get business object | |
Update | PUT | /business-objects/{id} | Update business object | |
Delete | DELETE | /business-objects/{id} | Delete business object | |
Metrics | Create | POST | /metrics | Create metric |
List | GET | /metrics | List metrics | |
Get | GET | /metrics/{id} | Get metric | |
Update | PUT | /metrics/{id} | Update metric | |
Delete | DELETE | /metrics/{id} | Delete metric | |
Decisions | Create | POST | /decisions | Create decision |
List | GET | /decisions | List decisions | |
Get | GET | /decisions/{id} | Get decision | |
Update | PUT | /decisions/{id} | Update decision | |
Delete | DELETE | /decisions/{id} | Delete decision | |
Reset action limits | POST | /decisions/{id}/action-limit-reset | Reset action limits | |
Retrieve action log | GET | /decisions/{id}/action-log | Retrieve action log | |
Dashboards | Create | POST | /dashboards | Create dashboard |
List | GET | /dashboards | List dashboards | |
Get | GET | /dashboards/{id} | Get dashboard | |
Update | PUT | /dashboards/{id} | Update dashboard | |
Delete | DELETE | /dashboards/{id} | Delete dashboard |
Conventions and data types
IDs you will reuse
- Every create response returns stable IDs (for example,
businessObjectId
,metricId
,decisionId
). You will reuse them to create dependent resources and when updating rules. - Field IDs (
fields[].id
) from a business object are reused asmeasureId
,dimensionIds
, and decisioninputFields[].sourceId
. - Action IDs (
actions[].id
) from a decision are required when configuring rules and when resetting execution limits.
Timestamps and time zones
- All timestamps are ISO 8601 and UTC (for example,
2025-08-21T19:27:01Z
). - When specifying date ranges, the time component is optional; the time zone is UTC.
Authentication header and cURL template
Use the X-Session-Token
header on every request. HTTP header names are case-insensitive.
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/<resource>' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Common enumerations and windows
- Action types: see Action types.
- Metric evaluation windows: see Evaluation windows.
Authentication
PubNub REST APIs use session-based authentication. To access the Illuminate API, you'll need an X-Session-Token
obtained from your PubNub credentials.
Request a token by calling the following URL:
curl --location --request POST 'https://admin.pubnub.com/api/me' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "'$LOGIN'",
"password":"'$PASSWORD'"
}'
Include the X-Session-Token
(session token) in the request header for all requests to Illuminate endpoints.
Base URL
The base path for all Illuminate API endpoints is:
https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/
The account ID is your PubNub six-digit account ID.
Resources
Business objects
Business Objects are containers for the data you want to use for decision-making and visualization within Illuminate. They define how event data is ingested and organized.
Operation | HTTP Method | Endpoint |
---|---|---|
Create a business object | POST | /business-objects |
List all business objects | GET | /business-objects |
Get a specific business object | GET | /business-objects/{id} |
Update a business object | PUT | /business-objects/{id} |
Delete a business object | DELETE | /business-objects/{id} |
Create business object
Creates a new business object to capture and organize event data.
Endpoint: POST /business-objects
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/business-objects
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
The request body should contain a BusinessObjectDto
with the following properties:
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Business object name (1-50 characters). |
isActive | boolean | No | Whether to start capturing data (default: false). |
description | string | No | Description (max 200 characters). |
fields | FieldDto[] | No | Data fields for the business object (max 15). |
subkeys | string[] | Yes | PubNub subscribe keys to capture data from (min 1, max 10). |
customerIds | string[] | No | Your unique customer IDs (max 1, requires Partner Portal). |
FieldDto
Elements of fields
or data fields for the Business Object.
Field | Type | Required | Description |
---|---|---|---|
id | string | No | PubNub-generated unique ID (required for GET, PUT, DELETE methods). |
name | string | Yes | Field name (1-50 characters). |
source | enum | Yes | JSONPATH or DERIVED . |
jsonPath | string | Conditional | Required when source is JSONPATH and isActive is true (max 200 chars) |
jsonFieldType | enum | Conditional | TEXT , NUMERIC , or TIMESTAMP (required when source is JSONPATH ). Timestamp format: ISO 8601 (e.g., 2025-08-21T19:27:01Z ). |
derivation | DerivationDto | Conditional | Required when source is DERIVED . |
DerivationDto
Configuration for creating derived fields when field source is DERIVED
.
Field | Type | Required | Description |
---|---|---|---|
operation | enum | Yes | Always TIME_DIFF . |
params | TimeDiffParams | Yes | Parameters for time difference calculation. |
TimeDiffParams
Parameters that define start and end sources for calculating a TIME_DIFF
.
Field | Type | Required | Description |
---|---|---|---|
startSource | enum | Yes | DATA_FIELD or PUBLISH_TIMETOKEN . DATA_FIELD is a field created in the business object (accepts only TIMESTAMP data type). |
startFieldIndex | number | Conditional | Index or position of the timestamp data field in your array. Not required if endSource is PUBLISH_TIMETOKEN (e.g., startFieldIndex=1 ). |
endSource | enum | Yes | DATA_FIELD or PUBLISH_TIMETOKEN . |
endFieldIndex | number | Conditional | Index or position of the timestamp data field in your array. Not required if endSource is PUBLISH_TIMETOKEN (e.g., endFieldIndex=4 ). |
Sample request
{
"name": "DEMO - Level Failure",
"isActive": false,
"description": "Tracks player failures in level flow",
"fields": [
{
"name": "Event",
"source": "JSONPATH",
"jsonPath": "$.message.body.event",
"jsonFieldType": "TEXT"
},
{
"name": "Event Timestamp",
"source": "JSONPATH",
"jsonPath": "$.message.body.event",
show all 39 linesSample response
{
"id": "19b9c407-6269-44a4-a5ec-d581dbbpntest",
"name": "DEMO - Level Failure",
"isActive": true,
"description": "Tracks player failures in level flow",
"fields": [
{
"id": "b20214f9-0677-4e65-a60b-b12a132pntest",
"name": "Event",
"source": "JSONPATH",
"jsonPath": "$.message.body.event",
"jsonFieldType": "TEXT",
"isKeyset": false
},
{
show all 57 linesResponse field descriptions
Field | Description |
---|---|
id | PubNub-generated unique ID for the Business Object. Required in later requests for GET , UPDATE , and DELETE methods. Also used when working with metrics. |
fields[].id | PubNub-generated unique ID for the fields (data fields). Required when creating metrics and decisions. Used in the inputFields when adding conditions to a decision.Note: fields and the corresponding IDs are the data fields defined in the Business Object. The IDs generated for each field are used interchangeably with measureId and dimensionIds when working with metrics and the inputFields when working with decisions. |
fields[].isKeyset | Boolean flag included in responses for each field. Informational only and not required in requests. |
createdAt / updatedAt / createdBy / updatedBy | Metadata only; not required in other requests. You can use this for your own audit log. |
Other fields | The data you provided in creating the Business Object will also be echoed back in the response. |
List business objects
Returns a list of all business objects for your account.
Endpoint: GET /business-objects
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/business-objects
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/business-objects' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
[
{
"id": "19b9c407-6269-44a4-a5ec-d581dbbpntest",
"name": "DEMO - Level Failure",
"isActive": true,
"description": "Tracks player failures in level flow",
"accountId": "123456",
"createdAt": "2025-08-15T12:00:00Z",
"updatedAt": "2025-08-15T12:00:00Z"
}
]
Get business object
Returns details for a specific business object.
Endpoint: GET /business-objects/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/business-objects/{id}
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Business object ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/business-objects/19b9c407-6269-44a4-a5ec-d581dbbpntest' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
Returns the complete business object details as shown in the Create Business Object sample response.
Update business object
Updates an existing business object.
Endpoint: PUT /business-objects/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/business-objects/{id}
Active business objects
While active, you can change only the name and description. To add or remove fields, deactivate the business object first. Deactivation pauses data collection. If a related decision is active, deactivate it too.
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Business object ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Same as Create Business Object request body.
Sample request
{
"name": "Updated Level Failure Tracker",
"description": "Updated description for tracking player failures"
}
Sample response
Returns the complete business object details as shown in the Create Business Object sample response.
Delete business object
Deletes a business object and all associated metrics, decisions, and charts.
Endpoint: DELETE /business-objects/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/business-objects/{id}
Cascading deletion
Deleting a business object also deletes its metrics, decisions, and charts.
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Business object ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request DELETE \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/business-objects/19b9c407-6269-44a4-a5ec-d581dbbpntest' \
--header 'X-Session-Token: <token>'
Metrics
Metrics are aggregations of the data fields (fields
in the Illuminate API) you created. They represent calculations you apply to your data fields. For example, the average number of purchases grouped by region and/or user.
Dimensions vs Measures
Refers to the data fields you created with the Business Object.
- Dimensions are
fields
(data fields) used for grouping or filtering data (e.g., user, channels, region) and have thejsonFieldType=TEXT
- Measures are
fields
(data fields) with numeric values that can be aggregated (e.g. average, sum) and have thejsonFieldType=NUMERIC
- When creating a metric, you pick a measure for the calculation and optionally one or more dimensions to group by.
For more information, see Illuminate Basics - Metrics.
See also: Create a metric → Create metric.
Operation | HTTP Method | Endpoint |
---|---|---|
Create a metric | POST | /metrics |
List all metrics | GET | /metrics |
Get a specific metric | GET | /metrics/{id} |
Update a metric | PUT | /metrics/{id} |
Delete a metric | DELETE | /metrics/{id} |
Create metric
Creates a new metric for data aggregation.
Endpoint: POST /metrics
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Metric name (1-50 characters). |
businessObjectId | string | Yes | ID of the business object. |
measureId | string | Conditional | Field ID to aggregate (required for AVG, MAX, MIN, SUM). |
evaluationWindow | number | Yes | Time period in seconds: 60, 300, 600, 900, 1800, 3600, 86400. |
function | enum | Yes | AVG , COUNT , COUNT_DISTINCT , MAX , MIN , SUM . |
dimensionIds | string[] | No | Field IDs to group by (TEXT fields only). |
filters | MetricFilterDto[] | No | Filtering criteria for metrics. |
MetricFilterDto
Filtering criteria for metrics, applied to dimension fields.
Field | Type | Required | Description |
---|---|---|---|
id | string | Conditional | PubNub-generated ID for the metric filter (required for PUT methods). |
sourceType | enum | Yes | Value must always be DIMENSION . |
sourceId | string | Yes | ID of the field or data field to filter on. |
operation | enum | Yes | STRING_EQUALS , STRING_NOT_EQUAL , STRING_CONTAINS , STRING_NOT_CONTAINS , STRING_IS_EMPTY , STRING_IS_NOT_EMPTY , STRING_STARTS_WITH , STRING_ENDS_WITH . |
arguments | string[] | Yes | 1 string argument. Matching is case-sensitive. |
Sample request
{
"name": "DEMO - Average Failure Count by Device Type",
"businessObjectId": "19b9c407-6269-44a4-a5ec-d581dbbpntest",
"evaluationWindow": 60,
"function": "AVG",
"measureId": "b20214f9-0677-4e65-a60b-b12a132pntest",
"dimensionIds": ["13546d2b-7e42-4f2a-a81b-db16pntest"],
"filters": [
{
"sourceType": "DIMENSION",
"sourceId": "1772feb7-6a6c-4acc-9f40-60f200pntest",
"operation": "STRING_EQUALS",
"arguments": ["Level_Failure"]
}
]
show all 16 linesSample response
{
"id": "21583568-cb7b-4413-8166-f56d0cpntest",
"name": "DEMO - Average Failure Count by Device Type",
"measureId": "b20214f9-0677-4e65-a60b-b12a132pntest",
"businessObjectId": "19b9c407-6269-44a4-a5ec-d581dbbpntest",
"evaluationWindow": 60,
"function": "AVG",
"dimensionIds": ["13546d2b-7e42-4f2a-a81b-db16pntest"],
"dimensions": [
{
"id": "13546d2b-7e42-4f2a-a81b-db16pntest",
"name": "Device Type",
"source": "JSONPATH",
"jsonPath": "$.message.body.data.device_type",
"jsonFieldType": "TEXT",
show all 28 linesResponse field descriptions
Field | Description |
---|---|
id | PubNub-generated ID for the metric that will be required in later requests to update, delete, or retrieve the metric. Also needed when creating a decision (as sourceId if sourceType is METRIC ). |
businessObjectId | PubNub-generated ID for the source Business Object; needed if you want to create other metrics or decisions referencing the same data. |
measureId | PubNub-generated ID for the field or data field that is found in a Business Object. |
dimensionIds | PubNub-generated ID for the field or data field that is found in a Business Object and is used for grouping. |
filters[].sourceId | PubNub-generated ID for the field used for filtering. |
dimensions | Information about the IDs included in the dimensionIds or the IDs of the fields you grouped by. |
filters[].id | PubNub-generated ID for the metric filter. Required when updating a metric (PUT). |
businessObject | Optional nested object with details of the source Business Object. Present in some responses. |
List metrics
Returns a list of all metrics for your account.
Endpoint: GET /metrics
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/metrics' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
Returns an array of metric objects as shown in the Create metric sample response.
Get metric
Returns details for a specific metric.
Endpoint: GET /metrics/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics/{id}
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Metric ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/metrics/21583568-cb7b-4413-8166-f56d0cpntest' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
Returns the complete metric details as shown in the Create metric sample response.
Update metric
Updates an existing metric.
Endpoint: PUT /metrics/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics/{id}
Decision deactivation required
To update a metric, first deactivate any associated decisions.
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Metric ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Same as Create Metric request body.
Sample request
{
"name": "Updated Average Failure Count",
"evaluationWindow": 300
}
Sample response
Returns the complete metric details as shown in the Create metric sample response.
Delete metric
Deletes a metric and any associated decisions.
Endpoint: DELETE /metrics/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics/{id}
Cascading deletion
Deleting a metric also deletes associated decisions.
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Metric ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request DELETE \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/metrics/21583568-cb7b-4413-8166-f56d0cpntest' \
--header 'X-Session-Token: <token>'
Sample response
Returns a success message.
See also: Next, create a decision → Create decision.
Decisions
Decisions help product managers with engagement and monetization strategies by executing actions when specific conditions are met.
Choose a source type
When you create a decision, choose a sourceType
:
METRIC
: evaluates an aggregated value (for example, send an alert when average failures ≥ 5).BUSINESSOBJECT
(event): evaluates each event in real time.
For more information, see Illuminate Basics - Decisions.
See also: If you do not have a metric yet, start here → Create metric.
Decision input fields
These are data fields used by the decision.
- For
METRIC
decisions: input fields are populated from the metric’s measure and dimensions. - For
BUSINESSOBJECT
decisions: provide input fields yourself. UsesourceType = FIELD
and supply each field’s ID from the business object.
Decision actions
Actions are what the decision does when conditions are met. Examples:
PUBNUB_PUBLISH
– Publish a message to a PubNub channel.WEBHOOK_EXECUTION
– Make an HTTP request to an external endpoint.- App Context actions (
APPCONTEXT_*
) – Update PubNub App Context metadata for users, channels, or memberships.
The template
defines the payload for that action (e.g., channel name and message for PUBNUB_PUBLISH).
For more information, see Illuminate Basics - Actions.
Operation | HTTP Method | Endpoint |
---|---|---|
Create a decision | POST | /decisions |
List all decisions | GET | /decisions |
Get a specific decision | GET | /decisions/{id} |
Update a decision | PUT | /decisions/{id} |
Delete a decision | DELETE | /decisions/{id} |
Reset action execution limits | POST | /decisions/{id}/action-limit-reset |
Retrieve action log | GET | /decisions/{id}/action-log |
Create decision
Creates a new decision for configuring rules, conditions, and actions based on either events or metrics.
Endpoint: POST /decisions
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Decision name (1-50 characters). |
description | string | No | Description (max 200 characters). |
sourceType | enum | Yes | BUSINESSOBJECT or METRIC . |
sourceId | string | Yes | ID of the metric or business object. |
hitType | enum | No | SINGLE or MULTIPLE . |
enabled | boolean | No | Whether decision is active (default: false). Must be false when creating a decision. |
activeFrom | datetime | No | Start date/time for activation (ISO 8601). |
activeUntil | datetime | No | End date/time for deactivation (ISO 8601). |
executeOnce | boolean | No | Execute actions only once when conditions are satisfied. |
executionFrequency | number | No | Evaluation frequency in seconds. Allowed values: 60, 300, 600, 900, 1800, 3600, 86400. |
inputFields | DecisionInputFieldDto[] | Conditional | Required if sourceType is BUSINESSOBJECT. |
outputFields | DecisionOutputFieldDto[] | No | Custom variables for actions. |
actions | ActionDto[] | No | Available actions for rules. |
DecisionInputFieldDto
Conditions to use if sourceType
is BUSINESSOBJECT
. These are data fields found in the selected Business Object that you want to use as conditions for an event-based decision.
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Label for the input field |
sourceType | string | Yes | Only required when creating an event decision. Allowed value: FIELD . When creating a metric decision, these will be filled from the metric |
sourceId | string | Yes | ID of metric field/dimension to use as input or condition |
DecisionOutputFieldDto
Custom variables created in a decision for use in actions.
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Label of the custom variable in the rules table (1-50 characters) |
variable | string | Yes | Name of the custom variable in the action during creation (1-50 characters) |
ActionDto
Definition of an action the decision can execute (e.g., publish, webhook, App Context updates).
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Name for the action (1-50 characters) |
description | string | No | Optional description of the action (max 200 characters) |
actionType | string | Yes | PUBNUB_PUBLISH , WEBHOOK_EXECUTION , APPCONTEXT_SET_USER_METADATA , APPCONTEXT_SET_CHANNEL_METADATA , APPCONTEXT_SET_MEMBERSHIP_METADATA |
template | object | Yes | Structure depends on actionType |
note | string | No | Additional notes (max 2,048 characters) |
Action templates
PUBNUB_PUBLISH template
Field | Type | Required | Description |
---|---|---|---|
pubkey | string | Yes | The PubNub publish key for the account |
subkey | string | Yes | The PubNub subscribe key for the account |
channel | string | Yes | The PubNub channel name to publish the action event to |
meta | string | No | Metadata field (e.g., externalId) that can be included with the publish |
body | string | Yes | JSON string payload; supports variables like ${inputFieldId} |
WEBHOOK_EXECUTION template
Field | Type | Required | Description |
---|---|---|---|
webhookUrl | string | Yes | Target URL for the webhook request |
headers | object | No | Key/value pairs for custom headers |
payload | string | Yes | JSON string payload; supports variables like ${custom variable} |
APPCONTEXT_SET_USER_METADATA template
Field | Type | Required | Description |
---|---|---|---|
subkey | string | Yes | PubNub subscribe key for the account |
userId | string | Yes | The user identifier |
externalId | string | No | External identifier for mapping users |
type | string | No | Type of user |
status | string | No | Status of the user |
custom | object | No | Key/value pairs of custom properties |
customDataTypes | object | No | Top Level Custom Fields |
APPCONTEXT_SET_CHANNEL_METADATA template
Field | Type | Required | Description |
---|---|---|---|
subkey | string | Yes | PubNub subscribe key for the account |
channelId | string | Yes | Channel identifier |
name | string | No | Channel name to update |
type | string | No | Channel type |
status | string | No | Channel status |
custom | object | No | Key/value pairs of custom properties |
customDataTypes | object | No | Top Level Custom Fields |
APPCONTEXT_SET_MEMBERSHIP_METADATA template
Field | Type | Required | Description |
---|---|---|---|
subkey | string | Yes | PubNub subscribe key for the account |
userId | string | Yes | ID of the user in the membership relationship |
channelId | string | Yes | ID of the channel in the membership relationship |
status | string | No | Membership status; can include variables (e.g., ${custom variable} ) |
customFields | array | No | List of custom membership properties |
customDataTypes | object | No | Top Level Custom Fields |
DecisionRuleDto (only for PUT)
Rule definitions inside a decision, containing input conditions, outputs, and action mappings.
Field | Type | Required | Description |
---|---|---|---|
inputValues | DecisionInputValueDto[] | No | List of conditions to evaluate (Only for PUT) |
outputValues | DecisionOutputValueDto[] | No | Values to assign to outputs when matched (Only for PUT) |
actionValues | ActionValueDto[] | No | Actions to trigger when matched (Only for PUT) |
DecisionInputValueDto (only for PUT)
A condition expression used within a decision rule.
Field | Type | Required | Description |
---|---|---|---|
inputFieldId | string | Yes | References inputFields[].id . Always needed when creating rules |
operation | enum | Yes | ANY , NUMERIC_EQUALS , NUMERIC_NOT_EQUALS , NUMERIC_GREATER_THAN , NUMERIC_GREATER_THAN_EQUALS , NUMERIC_LESS_THAN , NUMERIC_LESS_THAN_EQUALS , NUMERIC_INCLUSIVE_BETWEEN , STRING_EQUALS , STRING_NOT_EQUALS , STRING_CONTAINS |
argument | string | Conditional | Maximum 92 characters. Empty if operation is ANY . If operation is NUMERIC_INCLUSIVE_BETWEEN , separate numbers by comma (e.g., "2,7") |
DecisionOutputValueDto (only for PUT)
A value assigned to an output field when a decision rule is met.
Field | Type | Required | Description |
---|---|---|---|
outputFieldId | string | Yes | References outputFields[].id |
value | string | Yes | Value that your custom variable will send in actions (max 200 characters) |
ActionValueDto (only for PUT)
Configuration for how and when an action executes within a rule.
Field | Type | Required | Description |
---|---|---|---|
actionId | string | Yes | Action ID from POST/GET method response |
status | boolean | Yes | Whether action is active for this rule (true = execute when conditions satisfied, false = don't execute) |
executionLimitType | string | No | How often to execute when conditions satisfied. Default: ALWAYS . Options: ALWAYS , ONCE_PER_INTERVAL , ONCE_PER_INTERVAL_PER_CONDITION , ONCE_PER_INTERVAL_PER_CONDITION_GROUP |
executionLimitIntervalInSeconds | number | Conditional | Execution interval in seconds: 60, 300, 600, 900, 1800, 3600, 86400. Required if executionLimitType is ONCE_PER_INTERVAL or ONCE_PER_INTERVAL_PER_CONDITION |
executionLimitInputFieldIds | string[] | Conditional | Field IDs for execution limits. Required if executionLimitType is ONCE_PER_INTERVAL_PER_CONDITION |
resetLimits | boolean | No | When true, resets accumulated execution limits for this action when updating rules. |
Place in the screenshot | Field |
---|---|
1 | DecisionDto.name |
2 | DecisionDto.description |
3 | DecisionDto.sourceType |
4 | DecisionDto.inputFields |
5 | ActionDto.name |
6 | ActionDto.description |
7 | DecisionOutputFieldDto.variable |
8 | DecisionOutputFieldDto.name |
Sample request
{
"name": "API Metric Test Decision",
"description": "API Metric Test Decision Description",
"sourceId": "73a2de07-3df6-4d9b-9ff7-28c738PNTEST",
"sourceType": "METRIC",
"enabled": false,
"hitType": "SINGLE",
"activeFrom": "2025-08-21T17:32:28.282Z",
"activeUntil": "2025-09-20T17:32:28.282Z",
"executeOnce": false,
"executionFrequency": 60,
"actions": [
{
"name": "Send Message Action Name",
"description": "Send Message Action Description",
show all 48 linesEvent-based decision example:
{
"name": "API Event Test Decision",
"description": "This is a test description for an event based decision.",
"sourceId": "80812fcb-0ab9-4707-b768-2a16eePNTEST",
"sourceType": "BUSINESSOBJECT",
"enabled": false,
"hitType": "SINGLE",
"activeFrom": "2025-08-21T17:57:57.692Z",
"activeUntil": "2025-09-20T17:57:57.692Z",
"executeOnce": false,
"executionFrequency": 60,
"inputFields": [
{
"sourceId": "3ddcedbf-f182-48b2-bf6a-3fcf58PNTEST",
"name": "Player ID",
show all 61 linesSample response
{
"id": "a41c8507-46ce-496f-ba0d-f7319aPNTEST",
"accountId": "123456",
"businessObjectId": "80812fcb-0ab9-4707-b768-2a16eePNTEST",
"sourceType": "METRIC",
"sourceId": "73a2de07-3df6-4d9b-9ff7-28c738PNTEST",
"name": "API Metric Test Decision",
"description": "API Metric Test Decision Description",
"hitType": "SINGLE",
"enabled": false,
"activeFrom": "2025-08-21T17:32:28.282Z",
"activeUntil": "2025-09-20T17:32:28.282Z",
"executeOnce": false,
"executionFrequency": 60,
"actions": [
show all 71 linesResponse field descriptions
Field | Description |
---|---|
id | Required in later requests to update, delete, or retrieve this decision. |
sourceId | If sourceType is METRIC or BUSINESSOBJECT , this is their ID; required when recreating or updating the decision. |
inputFields[].id | Required when creating or updating rules in this decision (rules reference inputFieldId ). |
inputFields[].sourceId | Links to the Business Object field or metric field used as input; may be reused in other decisions. |
actions[].id | Required when referencing an action in rules (actionId in actionValues ). |
rules[].id | Required for updating rules directly. |
createdAt/updatedAt | Metadata only; not required in other requests. |
List decisions
Returns a list of all decisions for your account.
Endpoint: GET /decisions
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/decisions' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
[
{
"id": "003d5d4f-6bb7-48f8-8b0b-bc8dd79ae792",
"accountId": "123456",
"name": "car brand count",
"description": "",
"enabled": false,
"createdAt": "2024-09-20T20:20:17.629Z",
"updatedAt": "2024-09-20T20:20:17.629Z"
}
]
Response fields
The /decisions
endpoint guarantees only id
and name
. Other fields may change without notice.
Get decision
Returns details for a specific decision.
Endpoint: GET /decisions/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions/{id}
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Decision ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/decisions/a41c8507-46ce-496f-ba0d-f7319aPNTEST' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample response
Returns the complete decision details as shown in the Create decision sample response.
Update decision
Updates an existing decision.
Endpoint: PUT /decisions/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions/{id}
Inactive decisions only
You can modify only inactive decisions. Deactivate an active decision before updating. If you are updating only rule values, deactivation is not required.
Place in the screenshot | Field/DTO |
---|---|
1 | DecisionDto.sourceType |
2 | DecisionDto.hitType |
3 | DecisionDto.executionFrequency |
4 | DecisionInputFieldDto.name |
5 | DecisionInputFieldDto.argument |
6 | DecisionInputFieldDto.operation |
7 | ActionDto.name |
8 | ActionValueDto.status |
9 | ActionValueDto.executionLimitType |
10 | DecisionOutputFieldDto.name |
11 | DecisionOutputValueDto.value |
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Decision ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Same as Create decision request body, with additional rules configuration.
Sample request
{
// === Decision Metadata ===
"id": "a41c8507-46ce-496f-ba0d-f7319aPNTEST",
"name": "API Metric Test Decision",
"description": "API Metric Test Decision Description",
"sourceId": "73a2de07-3df6-4d9b-9ff7-28c738PNTEST",
"sourceType": "METRIC",
"enabled": false,
"hitType": "MULTI",
"activeFrom": "2025-08-21T17:32:28.282Z",
"activeUntil": "2025-09-20T17:32:28.282Z",
"executeOnce": false,
"executionFrequency": 60,
// === Input Fields ===
show all 183 linesSample response
{
// === Decision Metadata ===
"id": "a41c8507-46ce-496f-ba0d-f7319aPNTEST",
"accountId": "123456",
"businessObjectId": "80812fcb-0ab9-4707-b768-2a16eePNTEST",
"sourceType": "METRIC",
"sourceId": "73a2de07-3df6-4d9b-9ff7-28c738PNTEST",
"name": "API Metric Test Decision",
"description": "API Metric Test Decision Description",
"hitType": "MULTI",
"enabled": false,
"activeFrom": "2025-08-21T17:32:28.282Z",
"activeUntil": "2025-09-20T17:32:28.282Z",
"executeOnce": false,
"executionFrequency": 60,
show all 212 linesDelete decision
Deletes a decision and removes its rules and actions permanently.
Endpoint: DELETE /decisions/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions/{id}
Permanent deletion
Deleting a decision permanently removes its rules and actions.
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Decision ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample request
curl --request DELETE \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/decisions/a41c8507-46ce-496f-ba0d-f7319aPNTEST' \
--header 'X-Session-Token: <token>'
Reset action limits
Resets action execution limits for debugging purposes.
Endpoint: POST /decisions/{id}/action-limit-reset
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions/{id}/action-limit-reset
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Decision ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample Request
{
"ruleActions": [
{
"ruleId": "86106f51-4461-4cd5-8a9e-930babPNTEST",
"actionId": "5f6afd68-1d3c-45a1-8a1a-3291faPNTEST"
}
]
}
Retrieve action log
Retrieves historical action execution logs for a given decision.
Defaults and limits
- Default results: 50 records if no date range is specified
- Max results with date range: 10,000 records
- Time zone: UTC; ISO 8601 timestamps without milliseconds
- Default sort:
timestamp:desc
Results can be returned in JSON or CSV format and filtered by various parameters.
Endpoint: GET /decisions/{id}/action-log
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/decisions/{id}/action-log
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your unique PubNub account number. |
decisionId *Type: string | Unique ID assigned to the Illuminate decision. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Query parameters
Parameter | Description |
---|---|
sort | The order in which to sort the data in the response. If sort order is not specified, the default sort order is timestamp descending (timestamp:desc) |
success | Request to return log entries with specified success status. Must either be true or false. If you only need success or failures, then success=true or success=false. If success is not specified, all statuses are returned |
startDate | Date range in UTC. Must be in ISO 8601 format and without milliseconds precision, e.g., 2024-12-02T14:06:25. If no date is provided, the most recent 50 records are returned |
endDate | Data range in UTC. Must be after startDate |
search | Additional search term by which to filter the results. Only action log entries containing this search term are returned in the results |
format | Either JSON or CSV data format. If this parameter is not specified, the data will be returned in JSON |
Query Parameter Validation
All query string parameters are optional and, if specified, are validated and handled as follows:
-
For the
search
parameter: The value must not be longer than 256 characters. Case-insensitive search is performed to only return log entries where ANY of the following fields contain the specified search term: actionName, errorMessage, triggeringConditions, and outputValues. -
The
sort
parameter is specified in the syntax<column>[:<direction>]
, e.g., sort=actionName:desc.- Direction is optional and, if specified, must be either "asc" or "desc", defaulting to "asc"; e.g., sort=actionName is equivalent to sort=actionName:asc
- Columns that can be sorted include: actionName, actionType, errorMessage, success, timestamp.
- The secondary sort is automatically applied on timestamp descending if the main sort is not on timestamp.
- For example, sort=actionName applies a primary sort on actionName ascending and a secondary sort on timestamp descending. That way any log entries that have the same value for the primary sort column are listed with the most recent ones first.
- If sort is not specified, the default sort order is timestamp descending (timestamp:desc), which returns the results with the most recent actions listed first.
Note: This endpoint returns HTTP 200 (Success) even if no records match the specified date range and/or filters.
- The
startDate
andendDate
parameters have additional validation:- Date values without a time component are allowed. For example, startDate=2024-12-02,endDate=2024-12-04 means return all records between those two dates, inclusive.
- The time zone is UTC, and this may optionally be indicated explicitly by including "Z" at the end of the time value; e.g., 2024-12-02T14:06:25Z.
- If endDate is specified, startDate must also be specified. In contrast, if only startDate is specified, all actions after that start date/time are returned without having to explicitly specify an endDate.
- endDate must not be before startDate.
- Depending on your volume, the recommended date range is less than an hour. Date range must not exceed 30 days. Note that if only startDate is specified then endDate is treated as the current date/time when performing this 30 days range check.
- If a date range is not specified, only 50 records are returned. Those 50 records still satisfy any optional filtering/sorting options.
- If a date range is specified, at most 10,000 records are returned in a single API call.
- If more than that many action log records are found for the specified date range (and any additional filter criteria, if specified), then a 422 (Unprocessable Entity) error status code is returned with the following message: "Response contains more records than the maximum allowed of 10000. Please narrow the date range or apply additional filters."
Sample Request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/decisions/5a99115a-0aee-463e-b672-5abdc7c9c2fc/action-log?startDate=2024-11-26T22%3A20%3A43Z&endDate=2024-11-27%3A23%3A59Z&format=json&sort=timestamp%3Adesc&search=John' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample Response
[
{
"decisionId": "5a99115a-0aee-463e-b672-5abdc7c9c2fc",
"ruleId": "ab4284e4-d9de-4c16-b265-d736d36a425a",
"actionId": "a6318683-b304-4393-985d-6bf152fae4c4",
"businessObjectId": "461644e6-3182-447c-af5a-1f2bbdc189d4",
"actionName": "award bonus kudos",
"actionType": "APPCONTEXT_SET_USER_METADATA",
"triggeringConditions": [
{
"inputFieldId": "ff32b716-e7bb-4b10-b093-d0963ca7de09",
"name": "uuid",
"inputValue": "student-01",
"operation": "ANY",
"thresholdValue": ""
show all 29 linesCSV sample response
decisionId,ruleId,actionId,businessObjectId,actionName,actionType,triggeringConditions,outputValues,success,timestamp,errorMessage
5a99115a-0aee-463e-b672-5abdc7c9c2fc,ab4284e4-d9de-4c16-b265-d736d36a425a,a6318683-b304-4393-985d-6bf152fae4c4,461644e6-3182-447c-af5a-1f2bbdc189d4,award bonus kudos,APPCONTEXT_SET_USER_METADATA,"[{""inputFieldId"":""ff32b716-e7bb-4b10-b093-d0963ca7de09"",""name"":""uuid"",""inputValue"":""student-01"",""operation"":""ANY"",""thresholdValue"":""""}]","[{""outputFieldId"":""bd6163b3-3898-4a42-89e0-31fbc1b5ce7d"",""name"":""grade"",""value"":""A+""}]",true,2024-11-27T17:08:02.000Z,
Response field descriptions
The data returned with every Action History API response includes the following:
Field | Description |
---|---|
decisionId | Unique ID PubNub assigns to each Illuminate Decision |
ruleId | Unique ID PubNub assigns to each Illuminate Decision rule |
actionId | Unique ID PubNub assigns to each Illuminate Decision action |
businessObjectId | Unique ID PubNub assigns to each Illuminate Business Object |
actionName | Name you assigned to the action |
actionType | Type of action executed: WEBHOOK_EXECUTION , PUBNUB_PUBLISH , APPCONTEXT_SET_USER_METADATA , APPCONTEXT_SET_CHANNEL_METADATA , APPCONTEXT_SET_MEMBERSHIP_METADATA |
triggeringConditions | List of conditions and values that triggered the action: inputFieldId - unique ID PubNub assigns to each condition, name - name you assigned to the condition, inputValue - actual value during runtime, operation - used together with the threshold value, thresholdValue |
outputValues | Parameters tied to the selected action type |
success | Success status. Indicates whether or not the action fired successfully. If the action was successful, "success": "true". If the action failed, "success": "false" |
timestamp | Date and time when the action fired, e.g., 2024-11-28T15:40:13.000 |
errorMessage | Reason for when an action failed to execute. Empty string if no error |
Dashboards
Dashboards visualize your metrics and optionally overlay decision triggers. Each chart displays one metric grouped by dimensions.
Operation | HTTP Method | Endpoint |
---|---|---|
Create a dashboard | POST | /dashboards |
List all dashboards | GET | /dashboards |
Get a specific dashboard | GET | /dashboards/{id} |
Update a dashboard | PUT | /dashboards/{id} |
Delete a dashboard | DELETE | /dashboards/{id} |
Create dashboard
Creates a new dashboard to visualize metrics with optional decision overlays.
Endpoint: POST /dashboards
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/dashboards
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Dashboard title (max 50 characters). |
charts | ChartDto[] | No | List of charts to display. |
dateRange | enum | Yes | 30 minutes , 1 hour , 24 hours , 3 days , 1 week , 30 days , 3 months , Custom date . |
startDate | datetime | Conditional | Required when dateRange is Custom date . |
endDate | datetime | Conditional | Required when dateRange is Custom date . |
customerIds | string[] | No | Customer IDs (requires Partner Portal). |
ChartDto
Field | Type | Required | Description |
---|---|---|---|
id | string | Conditional | Chart ID (required for updates). |
metricId | string | Yes | ID of the metric to display. |
viewType | enum | Yes | BAR , LINE , or STACKED . |
size | enum | Yes | FULL or HALF . |
showDecisions | boolean | No | Whether to display decision overlays. |
dimensionIds | string[] | No | Default selected dimensions. |
decisionIds | string[] | No | Decision IDs to overlay. |
Sample Request
{
"name": "Test Dashboard for API",
"charts": [
{
"name": "DEMO - Average Failure Count by Device Type",
"metric": {
"id": "21583568-cb7b-4413-8166-f56d0cPNTEST"
},
"viewDateRange": "24 hours",
"viewType": "STACKED",
"size": "HALF",
"dimensionIds": [
"5c4e98b4-f6d7-497a-956b-7605c7PNTEST"
],
"decisionIds": [
show all 23 linesSample Response
{
"id": "cb51d7c1-223b-4025-9ffa-0b5be4PNTEST",
"name": "Test Dashboard for API",
"accountId": "123456",
"dateRange": "1 hour",
"startDate": "2025-08-21T20:15:48.059Z",
"endDate": "2025-08-21T21:15:48.059Z",
"charts": [
{
"accountId": "622497",
"id": "a989023f-4add-4498-91f0-98d1c5PNTEST",
"name": "DEMO - Average Failure Count by Device Type",
"viewType": "STACKED",
"metricId": "21583568-cb7b-4413-8166-f56d0cPNTEST",
"size": "HALF",
show all 29 linesResponse field descriptions
Field | Description |
---|---|
id | Required in later requests to update, delete, or retrieve the dashboard. |
charts[].id | Optional; only required if updating that chart directly within the dashboard. |
charts[].metricId | Links to the metric displayed in the chart; required if you want to recreate or update this chart with the same metric. |
charts[].dimensionIds | Field IDs used for grouping in the chart; may be reused in other metrics or dashboards. |
charts[].showDecisions | Whether decision overlays are displayed on the chart. |
charts[].metric | Optional nested object with details of the metric referenced by metricId . |
charts[].accountId | Account ID associated with the chart. |
decisionIds | If decisions are overlaid on the chart, these IDs must match decisions in the system. |
accountId | Required for all API paths for your account. |
createdAt/updatedAt | Metadata only; not required in other requests. |
List dashboards
Returns a list of all dashboards for your account.
See also: Build your first dashboard → Create dashboard.
Endpoint: GET /dashboards
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/dashboards
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample Request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/dashboards' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample Response
Returns an array of dashboard objects as shown in the Create Dashboard sample response.
Get dashboard
Returns details for a specific dashboard.
Endpoint: GET /dashboards/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/dashboards/{id}
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Dashboard ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample Request
curl --request GET \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/dashboards/cb51d7c1-223b-4025-9ffa-0b5be4PNTEST' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>'
Sample Response
Returns the complete dashboard details as shown in the Create Dashboard sample response.
Update dashboard
Updates an existing dashboard configuration, time ranges, or decision overlays.
Endpoint: PUT /dashboards/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/dashboards/{id}
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Dashboard ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Request body
Same as Create Dashboard request body.
Sample Request
{
"name": "Updated Dashboard Name",
"dateRange": "24 hours"
}
Delete dashboard
Deletes a dashboard.
Endpoint: DELETE /dashboards/{id}
Example: https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/dashboards/{id}
Visualization only
Deleting a dashboard removes only the visualization. Metrics and decisions remain.
Parameters
Path parameters
Parameter | Description |
---|---|
accountId *Type: string | Your PubNub account ID. |
id *Type: string | Dashboard ID. |
Header parameters
Parameter | Description |
---|---|
X-Session-Token *Type: string | Your session authentication token. |
Sample Request
curl --request DELETE \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/123456/dashboards/cb51d7c1-223b-4025-9ffa-0b5be4PNTEST' \
--header 'X-Session-Token: <token>'
Response Definitions
Common Response Fields
All API responses include standard metadata fields:
Field | Type | Description |
---|---|---|
id | string | PubNub-generated unique identifier. |
accountId | string | Your PubNub account ID. |
createdAt | datetime | Creation timestamp (ISO 8601). |
updatedAt | datetime | Last update timestamp (ISO 8601). |
createdBy | string | Email of the creator. |
updatedBy | string | Email of the last updater. |
Action Types
The following action types are supported for decisions:
Action Type | Description |
---|---|
PUBNUB_PUBLISH | Publish a message to a PubNub channel. |
WEBHOOK_EXECUTION | Make an HTTP request to an external endpoint. |
APPCONTEXT_SET_USER_METADATA | Update PubNub App Context user metadata. |
APPCONTEXT_SET_CHANNEL_METADATA | Update PubNub App Context channel metadata. |
APPCONTEXT_SET_MEMBERSHIP_METADATA | Update PubNub App Context membership metadata. |
Evaluation Windows
Metrics support the following evaluation windows (in seconds):
Window | Duration |
---|---|
60 | 1 minute |
300 | 5 minutes |
600 | 10 minutes |
900 | 15 minutes |
1800 | 30 minutes |
3600 | 1 hour |
86400 | 1 day |
Error Codes
The Illuminate API returns standard HTTP status codes:
Code | Description |
---|---|
200 | Success |
201 | Created (successful resource creation) |
400 | Bad Request (invalid parameters) |
401 | Unauthorized (authentication required) |
403 | Forbidden (access denied) |
404 | Not Found (resource doesn't exist) |
422 | Unprocessable Entity (too many records found) |
500 | Internal Server Error |
Sample Error Response
{
"errors": [
{
"queryString": "format",
"message": "Invalid value for 'format' query string parameter. Value must be 'csv' or 'json'."
},
{
"queryString": "startDate",
"message": "Invalid value for 'startDate' query string parameter. Value must be a valid date in ISO 8601 format and without milliseconds precision."
}
]
}