Skip to main content

Telemetry schema and format

Documents the V2 NDJSON telemetry schema, file structure, 15-minute uploads, and JSON fields (event, policy, risk, intent, detections). Includes V1 legacy schema migration guide.

Updated over a week ago

Overview

SurePath AI seamlessly integrates with your preferred cloud file storage providers to deliver detailed User Activity logs. These logs are designed for easy integration with your SIEM or other log management and ingestion tools, enabling centralized monitoring and analysis.

The logs provide a comprehensive record of user interactions across various services, including policy enforcement outcomes, sensitive data handling events, user intents, service responses, and risk assessments. This rich data supports auditing, troubleshooting, and analysis, empowering your tools with insights for alerting, reporting, and incident response.

To configure where these logs are delivered, see Configuring telemetry destinations.

File information

Retention

SurePath AI does not manage file deletion from your cloud storage. Ensure your organization implements cleanup procedures according to its data retention policies.

Output frequency

User activity and related information are uploaded every 15 minutes into new files.

File naming convention and directory structure

Log files are organized in a hierarchical directory structure based on UTC timestamps and use clear naming to indicate the time range of the data they contain.

Directory structure: surepath-ai/user-events/v2/YYYY/MM/DD/HH/

Files are partitioned by UTC hour, making it easy to locate events from specific time periods. If your organization has configured a custom bucket key prefix, it will be prepended to this path.

File naming pattern: <start-timestamp>-<end-timestamp>-part-<number>.ndjson.gz

Each file name includes:

  • Start timestamp: The earliest event timestamp in the file

  • End timestamp: The latest event timestamp in the file

  • Part number: A zero-padded six-digit chunk identifier (e.g., part-000001)

Example path: surepath-ai/user-events/v2/2025/10/09/15/2025-10-09T15-07-57-875Z-2025-10-09T15-08-45-123Z-part-000001.ndjson.gz

File format and compression

Files are delivered in NDJSON (newline-delimited JSON) format, where each line represents a single JSON event object. This format enables efficient streaming and processing of large datasets.

All files are compressed using gzip compression to reduce storage costs and transfer times. Files are automatically chunked into parts of up to 10,000 lines each to maintain optimal file sizes for processing.

Format example

The log format consists of NDJSON, adhering to standard JSON syntax and conventions. Each line in the file represents a complete JSON object containing detailed logs of user activities and system interactions.

{  "event": {    "id": "evt-123",    "category": "user",    "type": "intercept",    "action": "allow",    "schema_version": "v2.0.1",    "timestamp": "2025-10-09T15:07:57.875Z",    "trace_id": "abc123"  },  "destination": {    "name": "ChatGPT"  },  "actor": {    "name": "Jane Doe",    "email": "[email protected]",    "type": "user"  },  "http": {    "url": "https://api.example.com/intercept",    "user_agent": "Mozilla/5.0"  },  "network": {    "remote_ip": "203.0.113.10",    "remote_port": "443",    "internal_ip": "10.0.0.5",    "x_forwarded_for": "203.0.113.10"  },  "policy": {    "decision": "allow",    "violations": {      "access": false,      "pii": false,      "intent": false,      "confidential_data": false,      "prompt_injection": false,      "toxicity": false,      "code": false,      "bias": false,      "risk": false    }  },  "conversation": {    "id": "conv-1"  },  "messages": {    "input": [      {        "role": "user",        "content": "Create a social media post about our new feature"      }    ],    "output": [      {        "role": "assistant",        "content": "Here's a draft post..."      }    ]  },  "intent": {    "domain": "Marketing",    "action": "create social media post"  },  "risk": {    "overall": "medium",    "destination": "low",    "input": {      "overall": "medium",      "intent": "low",      "data_sensitivity": "internal",      "data_exposure_impact": "medium",      "harmful_content": "low",      "prompt_injection": "low"    },    "output": {      "overall": "low",      "harmful_content": "low",      "bias": "low"    }  },  "detections": [    {      "type": "pii",      "name": "person_name",      "action": "mask"    }  ],  "gen_ai": {    "model_name": "gpt-4o",    "model_id": "gpt-4o-2024-06",    "assistant_name": "Analyst",    "token_count": {      "input": 125,      "output": 98    }  },  "timing": {    "downstream_start": "2025-10-09T15:07:57.900Z",    "downstream_end": "2025-10-09T15:07:58.100Z"  }}

JSON fields

The following tables describe the structure and fields available in the telemetry schema. Not all fields are present in every event.

Event metadata

Field

Type

Description

event

object

Event identity, classification, and timing

event.id

string

Unique event identifier

event.category

string

Event category (e.g., user, audit, network)

event.type

string

Event type (e.g., intercept, access, internal)

event.action

string

Event action (e.g., allow, block, redirect, redact, login, error)

event.schema_version

string

Full schema version string (e.g., v2.0.1)

event.schema_url

string

URL where the schema can be referenced

event.timestamp

string

ISO 8601 UTC timestamp

event.trace_id

string (uuid)

Correlation identifier for the event that can be provided to SurePath AI support for investigation

Destination

Field

Type

Description

destination

object

Information about the destination service

destination.name

string

Destination service name from the Public Service Catalog

Actor

Field

Type

Description

actor

object

Actor (user or app) associated with the event

actor.name

string

Actor name

actor.email

string

Actor email address

actor.type

string

Actor type (e.g., user, app)

HTTP and network

Field

Type

Description

http

object

HTTP request information

http.url

string

Request URL

http.user_agent

string

User agent string

network

object

Network connection information

network.remote_ip

string

Remote address IP

network.remote_port

string

Remote address port

network.internal_ip

string

Internal IP address

network.x_forwarded_for

string

X-Forwarded-For header value indicating IP addresses from which a client has been forwarded through proxies

Policy decision

Field

Type

Description

policy

object

Policy decision and violation information

policy.decision

string

Policy decision (e.g., allow, block, redirect, redact)

policy.violations

object

Violation flags

policy.violations.access

boolean

Access violation detected

policy.violations.pii

boolean

PII violation detected

policy.violations.intent

boolean

Intent violation detected

policy.violations.confidential_data

boolean

Confidential data violation detected

policy.violations.prompt_injection

boolean

Prompt injection violation detected

policy.violations.toxicity

boolean

Toxicity violation detected

policy.violations.code

boolean

Code-sharing violation detected

policy.violations.bias

boolean

Bias violation detected

policy.violations.risk

boolean

Risk policy violation detected

Conversation and messages

Field

Type

Description

conversation

object

Conversation context

conversation.id

string

Conversation identifier

messages

object

Input/output message content captured for the event

messages.input[]

array

Array of input message items

messages.input[].role

string

Message role (e.g., user, assistant, system)

messages.input[].content

string

Message text content. Detected PII data may be replaced with tags (e.g., [PERSON], [US_SSN])

messages.output[]

array

Array of output message items with the same shape as input

Intent classification

Field

Type

Description

intent

object

High-level domain and action classification

intent.domain

string

Domain classification (e.g., Human Resources, IT, Finance, Marketing)

intent.action

string

Action classification (e.g., generate, execute, analyze, create)

Risk assessment

Field

Type

Description

risk

object

Risk assessment across overall, input, output, and destination

risk.overall

string

Overall risk rating (low, medium, high)

risk.destination

string

Destination-specific risk rating (low, medium, high)

risk.input

object

Input risk assessment

risk.input.overall

string

Overall input risk rating (low, medium, high)

risk.input.intent

string

Input intent risk (low, medium, high)

risk.input.data_sensitivity

string

Data sensitivity level (unknown, public, internal, confidential, critical)

risk.input.data_exposure_impact

string

Potential impact if data were exposed (low, medium, high)

risk.input.harmful_content

string

Harmful content risk (low, medium, high)

risk.input.prompt_injection

string

Prompt injection risk (low, medium, high)

risk.output

object

Output risk assessment

risk.output.overall

string

Overall output risk rating (low, medium, high)

risk.output.harmful_content

string

Harmful content risk (low, medium, high)

risk.output.bias

string

Bias risk (low, medium, high)

Detections

Field

Type

Description

detections[]

array

Detection results associated with the event

detections[].type

string

Detection type (e.g., pii, code, intent)

detections[].name

string

Detection name (e.g., person_name, code_block, custom intent)

detections[].action

string

Detection action taken (e.g., mask, delete, block)

Generative AI metadata

Field

Type

Description

gen_ai

object

Generative AI metadata for the event

gen_ai.model_name

string

Model name

gen_ai.model_id

string

Model identifier

gen_ai.assistant_name

string

Assistant name

gen_ai.token_count

object

Token usage information

gen_ai.token_count.input

integer

Input token count

gen_ai.token_count.output

integer

Output token count

Timing and errors

Field

Type

Description

timing

object

The start and end timestamps for request processing

timing.downstream_start

string

Downstream processing start timestamp (ISO 8601 UTC)

timing.downstream_end

string

Downstream processing end timestamp (ISO 8601 UTC)

error

object

Error context for the event

error.type

string

Error type (e.g., service-error, subscription-expired, maintenance)

Migrating to a newer version of the schema

To migrate to a newer version of the schema a new Telemetry Destination must be added. Previous Telemetry Destinations with older versions of the schema will continue to function while customers integrate the new schema into their telemetry destination.

For AWS S3 Buckets customers can use the same connector and bucket name in the new Telemetry Destination as newer schemas contain different prefixes allowing two versions of schema to be written to the same location. Other telemetry connectors' functionality may differ.

When the newer schema integration is validated, the previous Telemetry Destination can be disabled and then eventually deleted.

Legacy schema (V1)

The information below describes the legacy V1 schema format. New telemetry destinations automatically use the latest V2 schema described above. Existing destinations using V1 continue to operate with their configured version.

V1 file information

Directory structure: user-events/

V1 uses a flat directory structure without hierarchical date-based partitioning. If your organization has configured a custom bucket key prefix, it will be prepended to this path.

File naming pattern: <start-timestamp>-<end-timestamp>.json

Each file name includes the earliest and latest event timestamps in the file using ISO 8601 UTC format.

Example path: user-events/2024-12-10T16-48-29-028Z-2024-12-10T16-48-45-354Z.json

V1 file format

Files are delivered as a single JSON array containing multiple event objects. V1 files are not compressed and do not use chunking. Each file contains a complete JSON array with all events from the 15-minute export window.

V1 format example

[  {    "traceId": "d1a2b3c4",    "serviceName": "ChatGPT",    "messages": {      "request": [{ "role": "user", "content": "Summarize quarterly results" }],      "response": [{ "role": "assistant", "content": "Here is a summary..." }]    },    "intent": {      "request": [{ "action": "Create social media post", "role": "Marketing" }]    },    "sensitiveData": { "request": { "action": "mask" } },    "policyDecision": {       "action": "allow",       "code": "P200",       "violations": { "sensitiveData": false, "access": false }     },    "firewallDecision": { "target": { "name": "Engineering (gpt-4o)" } },    "user": { "name": "Jane Doe", "email": "[email protected]" },    "userAgent": "Mozilla/5.0",    "clientIp": {       "remoteIp": "203.0.113.10",       "remotePort": "443",       "xForwardedFor": "203.0.113.10"     },    "startTime": 1733246296533,    "endTime": 1733246335420,    "duration": "00:00:39.887",    "requestUrl": "https://api.example.com/analyze"  }]

V1 JSON fields

Field

Type

Description

traceId

string (uuid)

Correlation identifier for the event used to trace requests across systems that can be provided to SurePath AI support for investigation

serviceName

string

Name of the destination service name from the Public Service Catalog

messages

object

Input/output message content for the event

messages.request[]

array

Array of message items

messages.request[].role

string

Message role (e.g., user, assistant, system)

messages.request[].content

string

Message text content

messages.response[]

array

Array of message items with the same shape as request

intent

object

Detected user intent information

intent.request[]

array

Array of intent entries

intent.request[].action

string

Intent action label

intent.request[].role

string

Role associated with the intent

sensitiveData

object

Sensitive data handling outcome for the request

sensitiveData.request

object

Sensitive data request details

sensitiveData.request.action

string

Sensitive data action taken (e.g., delete, mask, synthesize, tag)

policyDecision

object

Decision and metadata from the policy engine

policyDecision.action

string

Policy decision action (e.g., allow)

policyDecision.code

string

Policy decision code for categorization that can be provided to SurePath AI support for investigation

policyDecision.violations

object

Violation flags

policyDecision.violations.sensitiveData

boolean

Indicates a sensitive data violation

policyDecision.violations.access

boolean

Indicates an access violation

firewallDecision

object

Model routing decision details

firewallDecision.target

object

Target model information

firewallDecision.target.name

string

Selected target/model name as defined by admins in the SurePath AI console

user

object

Actor identifiers

user.name

string

End-user display name

user.email

string

End-user email address

userAgent

string

Client user agent string

clientIp

object

Client network identifiers

clientIp.remoteIp

string

Remote address IP

clientIp.remotePort

string

Remote address port

clientIp.xForwardedFor

string

X-Forwarded-For header value

startTime

integer

Millisecond epoch when processing started

endTime

integer

Millisecond epoch when processing ended

duration

string

Duration of processing (formatted as HH:MM:SS.mmm)

requestUrl

string

Full request URL

Did this answer your question?