Event payloads
Notifications deliver context data in a consistent JSON format, mirroring the structure of our API responses. Use this data to:
- Apply filters using MongoDB-style queries.
- Enrich third-party systems with entity metadata.
Below are some examples of typical JSON event payloads.
Approvals
The context data you receive follows the same structure as responses from our public API’s read endpoints. That also means you can expect each entity to include any associated metadata, if available.
The details
object in the payload contains entities relevant to the specific approval request.
For more information about entity schemas, refer to our API reference.
Deployment
In a deployment approval, details.deployment
matches the structure of a GET request to our deployments endpoint.
Payload example - Deployment
{
"approval_id": 1,
"approve_url": "https://api.nullplatform.com/approval/1/approve?token=xxx",
"deny_url": "https://api.nullplatform.com/approval/1/deny?token=yyy",
"requested_by": {
"user_id": 1,
"email": "alex.doe.developer@domain.com",
"first_name": "alex",
"last_name": "doe",
"avatar": null
},
"action": "deployment:create",
"details": {
"deployment": {
"id": 6,
"scope_id": 6,
"release_id": 7,
"status": "creating_approval",
"status_in_scope": "candidate",
"messages": [],
"parameters": [],
"strategy": "initial",
"strategy_data": {},
"created_at": "2025-03-18T14:09:33.412Z",
"updated_at": "2025-05-10T08:47:19.983Z",
"expires_at": "2025-05-18T08:47:19.984Z",
"created_by": 444,
"updated_by": null,
"deployment_token": "abc-3f9cb741-77ea-4c62-bd1a-58d9c2a1ef34",
"deployment_group_id": null,
"status_started_at": {
"creating_approval": "2025-03-24T19:15:38.298Z"
},
"nrn": "organization=1:account=2:namespace=3:application=4:scope=5:deployment=6",
"metadata": {}
},
"scope": {
"id": 6,
"name": "Production Argentina",
"metadata": {},
"type": "web_pool",
"asset_name": "main",
"application_id": 4,
"status": "active",
"slug": "production-argentina",
"domain": "kong-namespace-acme-test-app-production-argentina-ghebf.acme-corp-main.apps.io",
"requested_spec": {
"cpu_profile": "standard",
"memory_in_gb": 0.125,
"local_storage_in_gb": 8
},
"tier": "important",
"external_created": false,
"provider": "AWS:WEB_POOL:EC2INSTANCES",
"instance_id": null,
"updated_at": "2025-03-24T19:15:38.293Z",
"messages": [],
"profiles": [],
"capabilities": {
"continuous_delivery": {
"enabled": false
},
"logs": {
"throttling": {
"unit": "line_seconds",
"value": 1000,
"enabled": false
},
"provider": "cloudwatch_logs"
},
"metrics": {
"custom_metrics_provider": "cloudwatch_metrics",
"performance_metrics_provider": "cloudwatch_metrics"
},
"spot_instances": {
"target_percentage": 80,
"enabled": false
},
"auto_scaling": {
"cpu": {
"max_percentage": 40,
"min_percentage": 40
},
"instances": {
"max_amount": 10,
"min_amount": 2,
"amount": 1
},
"enabled": false
},
"memory": {
"memory_in_gb": 0.125
},
"storage": {
"storage_in_gb": 8
},
"processor": {
"instance": "",
"type": "cpu"
},
"visibility": {
"reachability": "account"
},
"health_check": {
"type": "http",
"path": "/health",
"configuration": {
"timeout": 2,
"interval": 5
}
},
"scheduled_stop": {
"timer": "3600",
"enabled": true
}
},
"tags": ["test", "stopped", "parameters_changes"],
"dimensions": {
"environment": "production",
"country": "argentina"
},
"runtime_configurations": [11, 22],
"domains": [],
"nrn": "organization=1:account=2:namespace=3:application=4:scope=5"
},
"release": {
"id": 7,
"semver": "0.0.1",
"build_id": 8,
"status": "active",
"application_id": 4,
"created_at": "2025-03-18T14:09:33.412Z",
"updated_at": "2025-05-10T08:47:19.983Z",
"nrn": "organization=1:account=2:namespace=3:application=4:scope=5:release=8",
"metadata": {}
},
"build": {
"id": 8,
"application_id": 4,
"commit": {
"id": "a93f1e6bd4c8fa705b2dcb197a3e4d8615c9ab32",
"permalink": "https://github.com/acme-corp/kong-namespace-acme-test-app/commit/a93f1e6bd4c8fa705b2dcb197a3e4d8615c9ab32"
},
"status": "successful",
"description": "wip",
"branch": "main",
"created_at": "2025-03-18T14:09:33.412Z",
"updated_at": "2025-05-10T08:47:19.983Z",
"nrn": "organization=1:account=2:namespace=3:application=4:build=8",
"metadata": {}
},
"application": {
"id": 4,
"name": "Acme Test App",
"status": "active",
"namespace_id": 3,
"repository_url": "https://github.com/acme-corp/kong-namespace-acme-test-app",
"slug": "acme-test-app",
"template_id": 9,
"auto_deploy_on_creation": false,
"repository_app_path": null,
"is_mono_repo": false,
"tags": {},
"nrn": "organization=1:account=2:namespace=3:application=4",
"metadata": {}
},
"namespace": {
"id": 3,
"name": "Kong namespace",
"account_id": 2,
"slug": "kong-namespace",
"status": "active",
"nrn": "organization=1:account=2:namespace=3",
"metadata": {}
},
"account": {
"id": 2,
"name": "main",
"organization_id": 1,
"repository_prefix": "acme-corp",
"repository_provider": "github",
"status": "active",
"slug": "acme-corp-main",
"nrn": "organization=1:account=2",
"metadata": {}
},
"organization": {
"id": 1,
"name": "acme corp",
"slug": "acme-corp",
"logo": null,
"short_logo": null,
"logo_dark": null,
"short_logo_dark": null,
"nrn": "organization=1",
"metadata": {}
}
},
"policy_details": null
}
Parameter
In a parameter approval, details.parameter
matches the structure of a GET request to our parameter endpoint.
Payload example - Parameter
{
"approval_id": 1,
"approve_url": "https://api.nullplatform.com/approval/1/approve?token=xxx",
"deny_url": "https://api.nullplatform.com/approval/1/deny?token=yyy",
"requested_by": {
"user_id": 1,
"email": "alex.doe.developer@domain.com",
"first_name": "alex",
"last_name": "doe",
"avatar": null
},
"action": "parameter:read-secrets",
"details": {
"user": {
"id": 123,
"email": "alex.doe.developer@domain.com",
"status": "active",
"firstName": "alex",
"lastName": "doe",
"organizationId": 1,
"avatar": null,
"type": "person",
"provider": "cognito",
"nrn": "organization=1",
"metadata": {}
},
"parameter": {
"id": 11,
"name": "my secret",
"nrn": "organization=1:account=2:namespace=3:application=4",
"type": "environment",
"encoding": "plaintext",
"variable": "MY_SECRET",
"secret": true,
"values": [],
"version_id": 11,
"read_only": false
},
"application": {
"id": 4,
"name": "Acme parameters app",
"status": "active",
"namespace_id": 3,
"repository_url": "https://github.com/acme-corp/kong-namespace-acme-parameters-app",
"slug": "acme-parameters-app",
"template_id": 9,
"auto_deploy_on_creation": false,
"repository_app_path": null,
"is_mono_repo": false,
"tags": {},
"nrn": "organization=1:account=2:namespace=3:application=4",
"metadata": {}
},
"namespace": {
"id": 3,
"name": "Kong namespace",
"account_id": 2,
"slug": "kong-namespace",
"status": "active",
"nrn": "organization=1:account=2:namespace=3",
"metadata": {}
},
"account": {
"id": 2,
"name": "main",
"organization_id": 1,
"repository_prefix": "acme-corp",
"repository_provider": "github",
"status": "active",
"slug": "acme-corp-main",
"nrn": "organization=1:account=2",
"metadata": {}
},
"organization": {
"id": 1,
"name": "acme corp",
"slug": "acme-corp",
"logo": null,
"short_logo": null,
"logo_dark": null,
"short_logo_dark": null,
"nrn": "organization=1",
"metadata": {}
}
},
"policy_details": null,
"expires_at": "2025-02-17T20:30:35.563Z",
"time_to_reply": "259200000",
"allowed_time_to_execute": "86400000"
}
Services
This is the payload you receive when a service action is created. It matches the structure of a GET request to our service action spec endpoint.
Payload example - Service
{
"action": "service:action:create",
"id": "6f3d91ba-4e2c-41f8-9c0a-bb1e2d44a7fc",
"name": "create-testing",
"slug": "create-testing",
"status": "pending",
"created_at": "2025-03-18T14:09:33.412Z",
"updated_at": "2025-05-10T08:47:19.983Z",
"parameters": {
"fifo": false,
"dead_letter": false
},
"results": {},
"type": "create",
"specification": {
"id": "f4ce298b-9d7e-4564-8a12-7e0dcb11f5a6",
"slug": "create-sqs-queue"
},
"service": {
"id": "73bda6f0-2c91-4fa7-bf3a-dccf8c4e7e1d",
"slug": "testing",
"attributes": {
"visibility_timeout": 30
},
"specification": {
"id": "8c1a3f92-b7e0-4d13-a98f-21f56ae0c4bb",
"slug": "sqs-queue"
},
"dimensions": {}
},
"link": null,
"tags": {
"organization_id": "1",
"organization": "acme-corp",
"application_id": "4",
"application": "acme-services-action-app",
"account_id": "2",
"account": "main",
"namespace_id": "3",
"namespace": "Kong namespace"
},
"entity_nrn": "organization=1:account=2:namespace=3:application=4"
}
Audit
This is a payload example with entity context you receive when a audit is created.
Payload example - audit
{
"entity_context":
{
"organization_id": 1,
"organization_name": "acme corp",
"organization_slug": "acme-corp",
"account_id": 2,
"account_name": "main",
"account_slug": "acme-corp-main",
"namespace_id": 3,
"namespace_name": "Kong namespace",
"namespace_slug": "kong-namespace",
"application_name": "Acme Test App",
"application_slug": "acme-test-app"
},
"user_email": "alex.doe.developer@domain.com",
"user_type": "person",
"entity_data":
{
"version": "12",
"id": 4,
"name": "Acme Test App",
"status": "active",
"namespace_id": 3,
"repository_url": "https://github.com/acme-corp/kong-namespace-acme-test-app",
"slug": "acme-test-app",
"template_id": 9,
"auto_deploy_on_creation": false,
"repository_app_path": null,
"is_mono_repo": false,
"tags":
{},
"nrn": "organization=1:account=2:namespace=3:application=4",
"metadata":
{}
},
"entity": "application",
"entity_id": "4",
"method": "PATCH",
"status": 204,
"url": "/application/4",
"ips": "",
"headers":
{
"connection": "close",
"host": "api.nullplatform.io",
"x_forwarded_for": "11.2.33.444, 22.3.44.555",
"x_real_ip": "22.3.44.555",
"content_length": "12",
"x_forwarded_proto": "https",
"x_forwarded_port": "443",
"x_amzn_trace_id": "Root=1-123bbccd-456a7b8901234cde5f67f890",
"accept": "application/json, text/plain, */*",
"content_type": "application/json",
"np_user_id": "123",
"np_organization_id": "1",
"authorization": "[REDACTED]",
"user_agent": "axios/1.1.1",
"accept_encoding": "gzip, compress, deflate, br",
"x_datadog_trace_id": "99",
"x_datadog_parent_id": "88",
"x_datadog_sampling_priority": "-1",
"x_datadog_tags": "_dd.p.tid=89f7cd21a1b2c3d4",
"traceparent": "00-89f7cd21a1b24e3a9f0b7c8d6e5a4c3b2d1",
"tracestate": "dd=t.tid:89f7cd21a1b2c3d4;t.dm:-3;s:-1;p:a4c3b2d1"
},
"request_body":
{
"name": "Acme Test App"
},
"organization_id": 1,
"user_id": 123,
"application": "acme-test-app",
"scope": "production-argentina",
"organization_name": "acme corp",
"organization_slug": "acme-corp",
"name": "Acme Test App",
"slug": "acme-test-app",
"date": "2025-05-18T08:47:19.984Z",
"messageId": "abc-7d2fe831-a3b9-495c-9f17-3a8a123bfc6c"
}