cloudflare
Version:
The official TypeScript library for the Cloudflare API
1,604 lines • 61.7 kB
TypeScript
import { APIResource } from "../../../core/resource.js";
import { APIPromise } from "../../../core/api-promise.js";
import { RequestOptions } from "../../../internal/request-options.js";
export declare class BaseSharedQueries extends APIResource {
static readonly _key: readonly ['workers', 'observability', 'sharedQueries'];
/**
* Shared queries store the results of a previously run query, allowing you to
* share the results with others.
*
* @example
* ```ts
* const sharedQuery =
* await client.workers.observability.sharedQueries.create({
* account_id: 'account_id',
* queryId: 'queryId',
* timeframe: { from: 0, to: 0 },
* });
* ```
*/
create(params: SharedQueryCreateParams, options?: RequestOptions): APIPromise<SharedQueryCreateResponse>;
/**
* Shared queries store the results of a previously run query, allowing you to
* share the results with others.
*
* @example
* ```ts
* const sharedQuery =
* await client.workers.observability.sharedQueries.get(
* 'id',
* { account_id: 'account_id' },
* );
* ```
*/
get(id: string, params: SharedQueryGetParams, options?: RequestOptions): APIPromise<SharedQueryGetResponse>;
}
export declare class SharedQueries extends BaseSharedQueries {
}
export interface SharedQueryCreateResponse {
/**
* Specify the ID of the shared query.
*/
id: string;
}
/**
* Complete results of a query run. The populated fields depend on the requested
* view type (events, calculations, invocations, traces, or agents).
*/
export interface SharedQueryGetResponse {
/**
* Represents a single execution of a query against Workers Observability data,
* including the query definition, execution status, and performance statistics.
*/
run: SharedQueryGetResponse.Run;
/**
* Query performance statistics from the database. Includes execution time, rows
* scanned, and bytes read. Does not include network latency.
*/
statistics: SharedQueryGetResponse.Statistics;
/**
* Agent run summaries. Present when the query view is 'agents'. Each entry
* represents one trace containing at least one agent invocation.
*/
agents?: Array<SharedQueryGetResponse.Agent>;
/**
* Aggregated calculation results. Present when the query view is 'calculations'.
* Contains computed metrics (count, avg, p99, etc.) with optional group-by
* breakdowns and time-series data.
*/
calculations?: Array<SharedQueryGetResponse.Calculation>;
/**
* Comparison calculation results from the previous time period. Present when the
* compare option is enabled. Same structure as calculations.
*/
compare?: Array<SharedQueryGetResponse.Compare>;
/**
* Bucketed 2D histogram of a numeric field over time. Present when chartType is
* 'distribution'.
*/
distribution?: SharedQueryGetResponse.Distribution;
/**
* Individual event results. Present when the query view is 'events'. Contains the
* matching log lines and their metadata.
*/
events?: SharedQueryGetResponse.Events;
/**
* Events grouped by invocation (request ID). Present when the query view is
* 'invocations'. Each key is a request ID mapping to all events from that
* invocation.
*/
invocations?: {
[key: string]: Array<SharedQueryGetResponse.Invocation>;
};
/**
* Trace summaries matching the query. Present when the query view is 'traces'.
* Each entry represents a distributed trace with its spans, duration, and services
* involved.
*/
traces?: Array<SharedQueryGetResponse.Trace>;
}
export declare namespace SharedQueryGetResponse {
/**
* Represents a single execution of a query against Workers Observability data,
* including the query definition, execution status, and performance statistics.
*/
interface Run {
/**
* Unique identifier for this query run.
*/
id: string;
/**
* Cloudflare account ID that owns this query run.
*/
accountId: string;
/**
* Whether this was a dry run (results not persisted).
*/
dry: boolean;
/**
* Number of time-series buckets used for the query. Higher values produce more
* detailed series data.
*/
granularity: number;
/**
* A saved query definition with its parameters, metadata, and ownership
* information.
*/
query: Run.Query;
/**
* Current execution status of the query run.
*/
status: 'STARTED' | 'COMPLETED';
/**
* Time range for the query execution. 'from' must be earlier than 'to'. No
* fractional milliseconds.
*/
timeframe: Run.Timeframe;
/**
* ID of the user who initiated the query run.
*/
userId: string;
/**
* ISO-8601 timestamp when the query run was created.
*/
created?: string;
/**
* Query performance statistics from the database (does not include network
* latency).
*/
statistics?: Run.Statistics;
/**
* ISO-8601 timestamp when the query run was last updated.
*/
updated?: string;
}
namespace Run {
/**
* A saved query definition with its parameters, metadata, and ownership
* information.
*/
interface Query {
id: string;
/**
* If the query wasn't explcitly saved
*/
adhoc: boolean;
created: string | (string & {});
createdBy: string;
description: string | null;
/**
* Query name
*/
name: string;
parameters: Query.Parameters;
updated: string | (string & {});
updatedBy: string;
}
namespace Query {
interface Parameters {
/**
* Create Calculations to compute as part of the query.
*/
calculations?: Array<Parameters.CountCalculation | Parameters.KeyedCalculation>;
/**
* Set the Datasets to query. Leave it empty to query all the datasets.
*/
datasets?: Array<string>;
/**
* Set a Flag to describe how to combine the filters on the query.
*/
filterCombination?: 'and' | 'or' | 'AND' | 'OR';
/**
* Configure the Filters to apply to the query. Supports nested groups via kind:
* 'group'.
*/
filters?: Array<Parameters.UnionMember0 | Parameters.WorkersObservabilityFilterLeaf>;
/**
* Define how to group the results of the query.
*/
groupBys?: Array<Parameters.GroupBy>;
/**
* Configure the Having clauses that filter on calculations in the query result.
*/
havings?: Array<Parameters.Having>;
/**
* Set a limit on the number of results / records returned by the query
*/
limit?: number;
/**
* Define an expression to search using full-text search.
*/
needle?: Parameters.Needle;
/**
* Configure the order of the results returned by the query.
*/
orderBy?: Parameters.OrderBy;
}
namespace Parameters {
interface CountCalculation {
operator: 'count' | 'COUNT';
alias?: string;
key?: string;
keyType?: 'string' | 'number' | 'boolean';
}
interface KeyedCalculation {
key: string;
operator: 'uniq' | 'max' | 'min' | 'sum' | 'avg' | 'median' | 'p001' | 'p01' | 'p05' | 'p10' | 'p25' | 'p75' | 'p90' | 'p95' | 'p99' | 'p999' | 'stddev' | 'variance' | 'COUNT_DISTINCT' | 'MAX' | 'MIN' | 'SUM' | 'AVG' | 'MEDIAN' | 'P001' | 'P01' | 'P05' | 'P10' | 'P25' | 'P75' | 'P90' | 'P95' | 'P99' | 'P999' | 'STDDEV' | 'VARIANCE';
alias?: string;
keyType?: 'string' | 'number' | 'boolean';
}
interface UnionMember0 {
filterCombination: 'and' | 'or' | 'AND' | 'OR';
filters: Array<unknown>;
kind: 'group';
}
/**
* A filter condition applied to query results. Use the keys and values endpoints
* to discover available fields and their values before constructing filters.
*/
interface WorkersObservabilityFilterLeaf {
/**
* Filter field name. Use verified keys from previous query results or the keys
* endpoint. Common keys include $metadata.service, $metadata.origin,
* $metadata.trigger, $metadata.message, and $metadata.error.
*/
key: string;
/**
* Comparison operator. String operators: includes, not_includes, starts_with,
* ends_with, regex. Existence: exists, is_null. Set membership: in, not_in
* (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.
*/
operation: 'includes' | 'not_includes' | 'starts_with' | 'ends_with' | 'regex' | 'exists' | 'is_null' | 'in' | 'not_in' | 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'INCLUDES' | 'DOES_NOT_INCLUDE' | 'MATCH_REGEX' | 'EXISTS' | 'DOES_NOT_EXIST' | 'IN' | 'NOT_IN' | 'STARTS_WITH' | 'ENDS_WITH';
/**
* Data type of the filter field. Must match the actual type of the key being
* filtered.
*/
type: 'string' | 'number' | 'boolean';
/**
* Discriminator for leaf filter nodes. Always 'filter' when present; may be
* omitted.
*/
kind?: 'filter';
/**
* Comparison value. Must match actual values in your data — verify with the values
* endpoint. Ensure the value type (string/number/boolean) matches the field type.
* String comparisons are case-sensitive. Regex uses RE2 syntax (no
* lookaheads/lookbehinds).
*/
value?: string | number | boolean;
}
interface GroupBy {
type: 'string' | 'number' | 'boolean';
value: string;
}
interface Having {
key: string;
operation: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
value: number;
}
/**
* Define an expression to search using full-text search.
*/
interface Needle {
value: Needle.Value;
isRegex?: boolean;
matchCase?: boolean;
}
namespace Needle {
interface Value {
}
}
/**
* Configure the order of the results returned by the query.
*/
interface OrderBy {
/**
* Configure which Calculation to order the results by.
*/
value: string;
/**
* Set the order of the results
*/
order?: 'asc' | 'desc';
}
}
}
/**
* Time range for the query execution. 'from' must be earlier than 'to'. No
* fractional milliseconds.
*/
interface Timeframe {
/**
* Start timestamp for the query timeframe. Unix timestamp in milliseconds
*/
from: number;
/**
* End timestamp for the query timeframe. Unix timestamp in milliseconds
*/
to: number;
}
/**
* Query performance statistics from the database (does not include network
* latency).
*/
interface Statistics {
/**
* Number of uncompressed bytes read from the table.
*/
bytes_read: number;
/**
* Time in seconds for the query to run.
*/
elapsed: number;
/**
* Number of rows scanned from the table.
*/
rows_read: number;
/**
* The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the
* ABR level is 1
*/
abr_level?: number;
}
}
/**
* Query performance statistics from the database. Includes execution time, rows
* scanned, and bytes read. Does not include network latency.
*/
interface Statistics {
/**
* Number of uncompressed bytes read from the table.
*/
bytes_read: number;
/**
* Time in seconds for the query to run.
*/
elapsed: number;
/**
* Number of rows scanned from the table.
*/
rows_read: number;
/**
* The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the
* ABR level is 1
*/
abr_level?: number;
}
interface Agent {
/**
* Stable pagination cursor for this agent run.
*/
id: string;
/**
* Distinct errors reported by spans in the run.
*/
errors: Array<string>;
/**
* Distinct models reported by chat spans across the run's trace.
*/
models: Array<string>;
/**
* Distinct GenAI providers reported by chat spans in the run.
*/
providers: Array<string>;
/**
* Worker services represented in the run's trace.
*/
services: Array<string>;
/**
* Number of spans in the run's trace.
*/
spans: number;
/**
* Observed run status.
*/
status: 'completed' | 'error';
/**
* Total trace duration in milliseconds.
*/
traceDurationMs: number;
/**
* End of the run's trace as a Unix epoch in milliseconds.
*/
traceEndMs: number;
/**
* Trace identifier for this agent run.
*/
traceId: string;
/**
* Start of the run's trace as a Unix epoch in milliseconds.
*/
traceStartMs: number;
/**
* ID from the earliest agent invocation that provides one.
*/
agentId?: string;
/**
* Name from the earliest agent invocation that provides one.
*/
agentName?: string;
/**
* Conversation ID from the earliest invocation that provides one.
*/
conversationId?: string;
/**
* Input tokens summed across chat spans in the run's trace; informational, not
* billing data.
*/
inputTokens?: number;
/**
* Output tokens summed across chat spans in the run's trace; informational, not
* billing data.
*/
outputTokens?: number;
}
interface Calculation {
aggregates: Array<Calculation.Aggregate>;
calculation: string;
series: Array<Calculation.Series>;
alias?: string;
}
namespace Calculation {
interface Aggregate {
/**
* Estimated number of matching events: the sum of the sample intervals of the
* stored events. It equals the number of stored events when sampleInterval is 1.
*/
count: number;
/**
* @deprecated Deprecated alias of sampleInterval. Always has the same value; use
* sampleInterval instead.
*/
interval: number;
/**
* Average sample interval of the matched events. Each stored event has a sample
* interval of 1 / (the sampling rate applied when it was ingested): the Worker's
* head_sampling_rate multiplied by any platform sampling applied to the account or
* script. A value of 1 means none of the matched events were sampled. A value
* above 1 means count and value are estimated from sampled data, not exact. This
* is independent of statistics.abr_level.
*/
sampleInterval: number;
/**
* Result of the calculation. count, sum, avg, median, and percentiles are weighted
* by each event's sample interval
*/
value: number;
groups?: Array<Aggregate.Group>;
}
namespace Aggregate {
interface Group {
key: string;
value: string | number | boolean;
}
}
interface Series {
data: Array<Series.Data>;
time: string;
}
namespace Series {
interface Data {
/**
* Estimated number of matching events: the sum of the sample intervals of the
* stored events. It equals the number of stored events when sampleInterval is 1.
*/
count: number;
/**
* @deprecated Deprecated alias of sampleInterval. Always has the same value; use
* sampleInterval instead.
*/
interval: number;
/**
* Average sample interval of the matched events. Each stored event has a sample
* interval of 1 / (the sampling rate applied when it was ingested): the Worker's
* head_sampling_rate multiplied by any platform sampling applied to the account or
* script. A value of 1 means none of the matched events were sampled. A value
* above 1 means count and value are estimated from sampled data, not exact. This
* is independent of statistics.abr_level.
*/
sampleInterval: number;
/**
* Result of the calculation. count, sum, avg, median, and percentiles are weighted
* by each event's sample interval
*/
value: number;
firstSeen?: string;
groups?: Array<Data.Group>;
lastSeen?: string;
}
namespace Data {
interface Group {
key: string;
value: string | number | boolean;
}
}
}
}
interface Compare {
aggregates: Array<Compare.Aggregate>;
calculation: string;
series: Array<Compare.Series>;
alias?: string;
}
namespace Compare {
interface Aggregate {
/**
* Estimated number of matching events: the sum of the sample intervals of the
* stored events. It equals the number of stored events when sampleInterval is 1.
*/
count: number;
/**
* @deprecated Deprecated alias of sampleInterval. Always has the same value; use
* sampleInterval instead.
*/
interval: number;
/**
* Average sample interval of the matched events. Each stored event has a sample
* interval of 1 / (the sampling rate applied when it was ingested): the Worker's
* head_sampling_rate multiplied by any platform sampling applied to the account or
* script. A value of 1 means none of the matched events were sampled. A value
* above 1 means count and value are estimated from sampled data, not exact. This
* is independent of statistics.abr_level.
*/
sampleInterval: number;
/**
* Result of the calculation. count, sum, avg, median, and percentiles are weighted
* by each event's sample interval
*/
value: number;
groups?: Array<Aggregate.Group>;
}
namespace Aggregate {
interface Group {
key: string;
value: string | number | boolean;
}
}
interface Series {
data: Array<Series.Data>;
time: string;
}
namespace Series {
interface Data {
/**
* Estimated number of matching events: the sum of the sample intervals of the
* stored events. It equals the number of stored events when sampleInterval is 1.
*/
count: number;
/**
* @deprecated Deprecated alias of sampleInterval. Always has the same value; use
* sampleInterval instead.
*/
interval: number;
/**
* Average sample interval of the matched events. Each stored event has a sample
* interval of 1 / (the sampling rate applied when it was ingested): the Worker's
* head_sampling_rate multiplied by any platform sampling applied to the account or
* script. A value of 1 means none of the matched events were sampled. A value
* above 1 means count and value are estimated from sampled data, not exact. This
* is independent of statistics.abr_level.
*/
sampleInterval: number;
/**
* Result of the calculation. count, sum, avg, median, and percentiles are weighted
* by each event's sample interval
*/
value: number;
firstSeen?: string;
groups?: Array<Data.Group>;
lastSeen?: string;
}
namespace Data {
interface Group {
key: string;
value: string | number | boolean;
}
}
}
}
/**
* Bucketed 2D histogram of a numeric field over time. Present when chartType is
* 'distribution'.
*/
interface Distribution {
/**
* Time-bucket labels (ISO-8601 strings), one per matrix column.
*/
bins: Array<string>;
/**
* Raw bucket edges in the value's native unit, length buckets.length + 1. Used for
* the colour scale and percentile mapping.
*/
bucketBoundaries: Array<number>;
/**
* Bucketing scheme used to derive the boundaries. 'log' produces geometric edges;
* 'linear' produces fixed-width edges.
*/
bucketMode: 'log' | 'linear';
/**
* Value-range labels, one per matrix row (e.g. '50–100ms').
*/
buckets: Array<string>;
/**
* Sampling-corrected counts. matrix[bucketIdx][binIdx] is the estimated number of
* events in value-bucket 'bucketIdx' during time-bin 'binIdx'.
*/
matrix: Array<Array<number>>;
}
/**
* Individual event results. Present when the query view is 'events'. Contains the
* matching log lines and their metadata.
*/
interface Events {
/**
* Total number of events matching the query (may exceed the number returned due to
* limits).
*/
count?: number;
/**
* List of individual telemetry events matching the query.
*/
events?: Array<Events.Event>;
/**
* List of fields discovered in the matched events. Useful for building dynamic
* UIs.
*/
fields?: Array<Events.Field>;
/**
* Time-series data for the matched events, bucketed by the query granularity.
*/
series?: Array<Events.Series>;
}
namespace Events {
/**
* A single telemetry event representing a log line, span, or metric data point
* emitted by a Worker.
*/
interface Event {
/**
* Structured metadata extracted from the event. These fields are indexed and
* available for filtering and aggregation.
*/
$metadata: Event.Metadata;
/**
* The dataset this event belongs to (e.g. cloudflare-workers).
*/
dataset: string;
/**
* Raw log payload. May be a string or a structured object depending on how the log
* was emitted.
*/
source: string | {
[key: string]: unknown;
};
/**
* Event timestamp as a Unix epoch in milliseconds.
*/
timestamp: number;
/**
* Cloudflare Containers event information that enriches your logs for identifying
* and debugging issues.
*/
$containers?: {
[key: string]: unknown;
};
/**
* Cloudflare Workers event information that enriches your logs for identifying and
* debugging issues.
*/
$workers?: Event.UnionMember0 | Event.UnionMember1;
}
namespace Event {
/**
* Structured metadata extracted from the event. These fields are indexed and
* available for filtering and aggregation.
*/
interface Metadata {
/**
* Unique event ID. Use as the cursor value for offset-based pagination.
*/
id: string;
/**
* Cloudflare account identifier.
*/
account?: string;
/**
* Cloudflare product that generated this event (e.g. workers, pages).
*/
cloudService?: string;
coldStart?: number;
/**
* Estimated cost units for this invocation.
*/
cost?: number;
/**
* Span duration in milliseconds.
*/
duration?: number;
/**
* Span end time as a Unix epoch in milliseconds.
*/
endTime?: number;
/**
* Error message, present when the log represents an error.
*/
error?: string;
/**
* Templatized version of the error message used for grouping similar errors.
*/
errorTemplate?: string;
/**
* Content-based fingerprint used to group similar events.
*/
fingerprint?: string;
/**
* Log level (e.g. log, debug, info, warn, error).
*/
level?: string;
/**
* Log message text.
*/
message?: string;
/**
* Templatized version of the log message used for grouping similar messages.
*/
messageTemplate?: string;
/**
* Metric name when the event represents a metric data point.
*/
metricName?: string;
/**
* Origin of the event (e.g. fetch, scheduled, queue).
*/
origin?: string;
/**
* Span ID of the parent span in the trace hierarchy.
*/
parentSpanId?: string;
/**
* Infrastructure provider identifier.
*/
provider?: string;
/**
* Cloudflare Ray ID from the `cf-ray` header of the request that triggered the
* invocation.
*/
rayId?: string;
/**
* Cloudflare data center / region that handled the request.
*/
region?: string;
/**
* Cloudflare request ID that ties all logs from a single invocation together.
*/
requestId?: string;
/**
* Worker script name that produced this event.
*/
service?: string;
/**
* Span ID for this individual unit of work within a trace.
*/
spanId?: string;
/**
* Human-readable name for this span.
*/
spanName?: string;
/**
* Stack / deployment identifier.
*/
stackId?: string;
/**
* Span start time as a Unix epoch in milliseconds.
*/
startTime?: number;
/**
* HTTP response status code returned by the Worker.
*/
statusCode?: number;
/**
* Total duration of the entire trace in milliseconds.
*/
traceDuration?: number;
/**
* Distributed trace ID linking spans across services.
*/
traceId?: string;
/**
* Logical transaction name for this request.
*/
transactionName?: string;
/**
* What triggered the invocation (e.g. GET /users, POST /orders, queue message).
*/
trigger?: string;
/**
* Event type classifier (e.g. cf-worker-event, cf-worker-log).
*/
type?: string;
/**
* Request URL that triggered the Worker invocation.
*/
url?: string;
}
interface UnionMember0 {
eventType: 'fetch' | 'scheduled' | 'alarm' | 'cron' | 'queue' | 'email' | 'tail' | 'rpc' | 'jsrpc' | 'websocket' | 'workflow' | 'unknown';
scriptName: string;
durableObjectId?: string;
entrypoint?: string;
event?: {
[key: string]: unknown;
};
executionModel?: 'durableObject' | 'stateless';
outcome?: string;
preview?: UnionMember0.Preview;
requestId?: string;
scriptVersion?: UnionMember0.ScriptVersion;
spanId?: string;
traceId?: string;
truncated?: boolean;
}
namespace UnionMember0 {
interface Preview {
id?: string;
name?: string;
slug?: string;
}
interface ScriptVersion {
id?: string;
message?: string;
tag?: string;
}
}
interface UnionMember1 {
cpuTimeMs: number;
eventType: 'fetch' | 'scheduled' | 'alarm' | 'cron' | 'queue' | 'email' | 'tail' | 'rpc' | 'jsrpc' | 'websocket' | 'workflow' | 'unknown';
outcome: string;
scriptName: string;
wallTimeMs: number;
diagnosticsChannelEvents?: Array<UnionMember1.DiagnosticsChannelEvent>;
dispatchNamespace?: string;
durableObjectId?: string;
entrypoint?: string;
event?: {
[key: string]: unknown;
};
executionModel?: 'durableObject' | 'stateless';
preview?: UnionMember1.Preview;
requestId?: string;
scriptVersion?: UnionMember1.ScriptVersion;
spanId?: string;
traceId?: string;
truncated?: boolean;
}
namespace UnionMember1 {
interface DiagnosticsChannelEvent {
channel: string;
message: string;
timestamp: number;
}
interface Preview {
id?: string;
name?: string;
slug?: string;
}
interface ScriptVersion {
id?: string;
message?: string;
tag?: string;
}
}
}
interface Field {
/**
* Field name present in the matched events.
*/
key: string;
/**
* Data type of the field (string, number, or boolean).
*/
type: string;
}
interface Series {
data: Array<Series.Data>;
time: string;
}
namespace Series {
interface Data {
aggregates: Data.Aggregates;
/**
* Estimated number of matching events: the sum of the sample intervals of the
* stored events. It equals the number of stored events when sampleInterval is 1.
*/
count: number;
/**
* @deprecated Deprecated alias of sampleInterval. Always has the same value; use
* sampleInterval instead.
*/
interval: number;
/**
* Average sample interval of the matched events. Each stored event has a sample
* interval of 1 / (the sampling rate applied when it was ingested): the Worker's
* head_sampling_rate multiplied by any platform sampling applied to the account or
* script. A value of 1 means none of the matched events were sampled. A value
* above 1 means count and value are estimated from sampled data, not exact. This
* is independent of statistics.abr_level.
*/
sampleInterval: number;
errors?: number;
/**
* Groups in the query results.
*/
groups?: {
[key: string]: string | number | boolean;
};
}
namespace Data {
interface Aggregates {
/**
* @deprecated
*/
_count: number;
/**
* @deprecated
*/
_interval: number;
/**
* @deprecated
*/
_firstSeen?: string;
/**
* @deprecated
*/
_lastSeen?: string;
/**
* @deprecated
*/
bin?: unknown;
}
}
}
}
/**
* A single telemetry event representing a log line, span, or metric data point
* emitted by a Worker.
*/
interface Invocation {
/**
* Structured metadata extracted from the event. These fields are indexed and
* available for filtering and aggregation.
*/
$metadata: Invocation.Metadata;
/**
* The dataset this event belongs to (e.g. cloudflare-workers).
*/
dataset: string;
/**
* Raw log payload. May be a string or a structured object depending on how the log
* was emitted.
*/
source: string | {
[key: string]: unknown;
};
/**
* Event timestamp as a Unix epoch in milliseconds.
*/
timestamp: number;
/**
* Cloudflare Containers event information that enriches your logs for identifying
* and debugging issues.
*/
$containers?: {
[key: string]: unknown;
};
/**
* Cloudflare Workers event information that enriches your logs for identifying and
* debugging issues.
*/
$workers?: Invocation.UnionMember0 | Invocation.UnionMember1;
}
namespace Invocation {
/**
* Structured metadata extracted from the event. These fields are indexed and
* available for filtering and aggregation.
*/
interface Metadata {
/**
* Unique event ID. Use as the cursor value for offset-based pagination.
*/
id: string;
/**
* Cloudflare account identifier.
*/
account?: string;
/**
* Cloudflare product that generated this event (e.g. workers, pages).
*/
cloudService?: string;
coldStart?: number;
/**
* Estimated cost units for this invocation.
*/
cost?: number;
/**
* Span duration in milliseconds.
*/
duration?: number;
/**
* Span end time as a Unix epoch in milliseconds.
*/
endTime?: number;
/**
* Error message, present when the log represents an error.
*/
error?: string;
/**
* Templatized version of the error message used for grouping similar errors.
*/
errorTemplate?: string;
/**
* Content-based fingerprint used to group similar events.
*/
fingerprint?: string;
/**
* Log level (e.g. log, debug, info, warn, error).
*/
level?: string;
/**
* Log message text.
*/
message?: string;
/**
* Templatized version of the log message used for grouping similar messages.
*/
messageTemplate?: string;
/**
* Metric name when the event represents a metric data point.
*/
metricName?: string;
/**
* Origin of the event (e.g. fetch, scheduled, queue).
*/
origin?: string;
/**
* Span ID of the parent span in the trace hierarchy.
*/
parentSpanId?: string;
/**
* Infrastructure provider identifier.
*/
provider?: string;
/**
* Cloudflare Ray ID from the `cf-ray` header of the request that triggered the
* invocation.
*/
rayId?: string;
/**
* Cloudflare data center / region that handled the request.
*/
region?: string;
/**
* Cloudflare request ID that ties all logs from a single invocation together.
*/
requestId?: string;
/**
* Worker script name that produced this event.
*/
service?: string;
/**
* Span ID for this individual unit of work within a trace.
*/
spanId?: string;
/**
* Human-readable name for this span.
*/
spanName?: string;
/**
* Stack / deployment identifier.
*/
stackId?: string;
/**
* Span start time as a Unix epoch in milliseconds.
*/
startTime?: number;
/**
* HTTP response status code returned by the Worker.
*/
statusCode?: number;
/**
* Total duration of the entire trace in milliseconds.
*/
traceDuration?: number;
/**
* Distributed trace ID linking spans across services.
*/
traceId?: string;
/**
* Logical transaction name for this request.
*/
transactionName?: string;
/**
* What triggered the invocation (e.g. GET /users, POST /orders, queue message).
*/
trigger?: string;
/**
* Event type classifier (e.g. cf-worker-event, cf-worker-log).
*/
type?: string;
/**
* Request URL that triggered the Worker invocation.
*/
url?: string;
}
interface UnionMember0 {
eventType: 'fetch' | 'scheduled' | 'alarm' | 'cron' | 'queue' | 'email' | 'tail' | 'rpc' | 'jsrpc' | 'websocket' | 'workflow' | 'unknown';
scriptName: string;
durableObjectId?: string;
entrypoint?: string;
event?: {
[key: string]: unknown;
};
executionModel?: 'durableObject' | 'stateless';
outcome?: string;
preview?: UnionMember0.Preview;
requestId?: string;
scriptVersion?: UnionMember0.ScriptVersion;
spanId?: string;
traceId?: string;
truncated?: boolean;
}
namespace UnionMember0 {
interface Preview {
id?: string;
name?: string;
slug?: string;
}
interface ScriptVersion {
id?: string;
message?: string;
tag?: string;
}
}
interface UnionMember1 {
cpuTimeMs: number;
eventType: 'fetch' | 'scheduled' | 'alarm' | 'cron' | 'queue' | 'email' | 'tail' | 'rpc' | 'jsrpc' | 'websocket' | 'workflow' | 'unknown';
outcome: string;
scriptName: string;
wallTimeMs: number;
diagnosticsChannelEvents?: Array<UnionMember1.DiagnosticsChannelEvent>;
dispatchNamespace?: string;
durableObjectId?: string;
entrypoint?: string;
event?: {
[key: string]: unknown;
};
executionModel?: 'durableObject' | 'stateless';
preview?: UnionMember1.Preview;
requestId?: string;
scriptVersion?: UnionMember1.ScriptVersion;
spanId?: string;
traceId?: string;
truncated?: boolean;
}
namespace UnionMember1 {
interface DiagnosticsChannelEvent {
channel: string;
message: string;
timestamp: number;
}
interface Preview {
id?: string;
name?: string;
slug?: string;
}
interface ScriptVersion {
id?: string;
message?: string;
tag?: string;
}
}
}
interface Trace {
/**
* Name of the root span that initiated the trace.
*/
rootSpanName: string;
/**
* Logical transaction name for the root span.
*/
rootTransactionName: string;
/**
* List of Worker services involved in the trace.
*/
service: Array<string>;
/**
* Total number of spans in the trace.
*/
spans: number;
/**
* Total duration of the trace in milliseconds.
*/
traceDurationMs: number;
/**
* Trace end time as a Unix epoch in milliseconds.
*/
traceEndMs: number;
/**
* Unique identifier for the distributed trace.
*/
traceId: string;
/**
* Trace start time as a Unix epoch in milliseconds.
*/
traceStartMs: number;
/**
* Error messages encountered during the trace, if any.
*/
errors?: Array<string>;
}
}
export interface SharedQueryCreateParams {
/**
* Path param: Your Cloudflare account ID.
*/
account_id: string;
/**
* Body param: Identifier for the query. When parameters are omitted, this ID is
* used to load a previously saved query's parameters. When providing parameters
* inline, pass any identifier (e.g. an ad-hoc ID).
*/
queryId: string;
/**
* Body param: Timeframe for the query using Unix timestamps in milliseconds.
* 'from' must be earlier than 'to'. Narrower timeframes produce faster responses
* and more specific results.
*/
timeframe: SharedQueryCreateParams.Timeframe;
/**
* Body param: When true, includes time-series data in the response.
*/
chart?: boolean;
/**
* Body param: Controls the SQL shape and response payload for the 'calculations'
* view. Omitted or 'timeseries_and_aggregate': current behaviour — both the
* time-series and aggregate queries. 'timeseries': time-series only. 'aggregate':
* aggregate only. 'distribution': a bucketed 2D histogram (time × value buckets)
* returned in 'distribution' instead of 'calculations'. 'distribution' is not
* compatible with 'compare' — combining them returns a 400.
*/
chartType?: 'timeseries_and_aggregate' | 'timeseries' | 'aggregate' | 'distribution';
/**
* Body param: When true, includes a comparison dataset from the previous time
* period of equal length.
*/
compare?: boolean;
/**
* Body param: Value-axis bucketing for chartType 'distribution'. Omitted or 'log':
* geometric buckets, best for heavy-tailed latency. 'linear': fixed-width buckets,
* clearer for narrow or additive ranges. Ignored for other chartTypes. The
* response echoes the scheme used in distribution.bucketMode.
*/
distributionScale?: 'log' | 'linear';
/**
* Body param: When true, executes the query without persisting the results. Useful
* for validation or previewing.
*/
dry?: boolean;
/**
* Body param: Number of time-series buckets. Only used when view is
* 'calculations'. Omit to let the system auto-detect an appropriate granularity.
*/
granularity?: number;
/**
* Body param: When true, omits time-series data from the response and returns only
* aggregated values. Reduces response size when series are not needed.
*/
ignoreSeries?: boolean;
/**
* Body param: Maximum number of events to return when view is 'events'. Also
* controls the number of group-by rows when view is 'calculations'.
*/
limit?: number;
/**
* Body param: Cursor for pagination in event, trace, invocation, and agent views.
* Pass the $metadata.id of the last event, the trace cursor, or AgentRun.id to
* fetch the next page.
*/
offset?: string;
/**
* Body param: Numeric offset for paginating grouped/pattern results (top-N lists).
* Use together with limit. Not used by cursor-based pagination.
*/
offsetBy?: number;
/**
* Body param: Pagination direction: 'next' for forward, 'prev' for backward.
*/
offsetDirection?: string;
/**
* Body param: Query parameters defining what data to retrieve — filters,
* calculations, group-bys, and ordering. In practice this should always be
* provided for ad-hoc queries. Only omit when executing a previously saved query
* by queryId. Use the keys and values endpoints to discover available fields
* before building filters.
*/
parameters?: SharedQueryCreateParams.Parameters;
/**
* Body param: Controls the shape of the response. 'events': individual log lines
* matching the query. 'calculations': aggregated metrics (count, avg, p99, etc.)
* with optional group-by breakdowns and time-series. 'invocations': events grouped
* by request ID. 'traces': distributed trace summaries. 'agents': agent-specific
* trace summaries.
*/
view?: 'traces' | 'events' | 'calculations' | 'invocations' | 'requests' | 'agents';
}
export declare namespace SharedQueryCreateParams {
/**
* Timeframe for the query using Unix timestamps in milliseconds. 'from' must be
* earlier than 'to'. Narrower timeframes produce faster responses and more
* specific results.
*/
interface Timeframe {
/**
* Start timestamp for the query timeframe. Unix timestamp in milliseconds
*/
from: number;
/**
* End timestamp for the query timeframe. Unix timestamp in milliseconds
*/
to: number;
}
/**
* Query parameters defining what data to retrieve — filters, calculations,
* group-bys, and ordering. In practice this should always be provided for ad-hoc
* queries. Only omit when executing a previously saved query by queryId. Use the
* keys and values endpoints to discover available fields before building filters.
*/
interface Parameters {
/**
* Aggregation calculations to compute (e.g. count, avg, p99). Each calculation
* produces aggregate values and optional time-series data.
*/
calculations?: Array<Parameters.CountCalculation | Parameters.KeyedCalculation>;
/**
* Datasets to query. Leave empty to query all available datasets.
*/
datasets?: Array<string>;
/**
* Logical operator for combining top-level filters: 'and' (all must match) or 'or'
* (any must match). Defaults to 'and'.
*/
filterCombination?: 'and' | 'or' | 'AND' | 'OR';
/**
* Filters to narrow query results. Use the keys and values endpoints to discover
* available fields before building filters. Supports nested groups via kind:
* 'group'. Maximum nesting depth is 4.
*/
filters?: Array<Parameters.UnionMember0 | Parameters.WorkersObservabilityFilterLeaf>;
/**
* Fields to group calculation results by. Only applicable when the query view is
* 'calculations'. Produces per-group aggregate values.
*/
groupBys?: Array<Parameters.GroupBy>;
/**
* Post-aggregation filters applied to calculation results. Use to filter groups
* after aggregation (e.g. only groups where count > 100).
*/
havings?: Array<Parameters.Having>;
/**
* Maximum number of group-by rows to return in calculation results. A value of 10
* is a sensible default for most use cases.
*/
limit?: number;
/**
* Full-text search expression applied across all event fields. Matches events
* containing the specified text.
*/
needle?: Parameters.Needle;
/**
* Ordering for grouped calculation results. Only effective when a group-by is
* present.
*/
orderBy?: Parameters.OrderBy;
}
namespace Parameters {
interface CountCalculation {
/**
* Aggregation operator to apply. Examples: count, avg, sum, min, max, median, p90,
* p95, p99, uniq, stddev, variance.
*/
operator: 'count' | 'COUNT';
/**
* Custom label for this calculation in the results. Useful for distinguishing
* multiple calculations.
*/
alias?: string;
/**
* Field name to calculate over. Must exist in the data. Verify with the keys
* endpoint. Required for every operator except `count`, which aggregates whole
* rows and may omit it.
*/
key?: string;
/**
* Data type of the key. Required when key is provided to ensure correct
* aggregation.
*/
keyType?: 'string' | 'number' | 'boolean';
}
interface KeyedCalculation {
/**
* Field name to calculate over. Must exist in the data. Verify with the keys
* endpoint. Required for every operator except `count`, which aggregates whole
* rows and may omit it.
*/
key: string;
/**
* Aggregation operator to apply. Examples: count, avg, sum, min, max, median, p90,
* p95, p99, uniq, stddev, variance.
*/
operator: 'uniq' | 'max' | 'min' | 'sum' | 'avg' | 'median' | 'p001' | 'p01' | 'p05' | 'p10' | 'p25' | 'p75' | 'p90' | 'p95' | 'p99' | 'p999' | 'stddev' | 'variance' | 'COUNT_DISTINCT' | 'MAX' | 'MIN' | 'SUM' | 'AVG' | 'MEDIAN' | 'P001' | 'P01' | 'P05' | 'P10' | 'P25' | 'P75' | 'P90' | 'P95' | 'P99' | 'P999' | 'STDDEV' | 'VARIANCE';
/**
* Custom label for this calculation in the results. Useful for distinguishing
* multiple calculations.
*/
alias?: string;
/**
* Data type of the key. Required when key is provided to ensure correct
* aggregation.
*/
keyType?: 'string' | 'number' | 'boolean';
}
interface UnionMember0 {
filterCombination: 'and' | 'or' | 'AND' | 'OR';
filters: Array<UnionMember0.UnionMember0 | UnionMember0.WorkersObservabilityFilterLeaf>;
kind: 'group';
}
namespace UnionMember0 {
interface UnionMember0 {
filterCombination: 'and' | 'or' | 'AND' | 'OR';
filters: Array<unknown>;
kind: 'group';
}
/**
* A filter condition applied to query results. Use the keys and values endpoints
* to discover available fields and their values before constructing filters.
*/
interface WorkersObservabilityFilterLeaf {
/**
* Filter field name. Use verified keys from previous query results or the keys
* endpoint. Common keys include $metadata.service, $metadata.origin,
* $metadata.trigger, $metadata.message, and $metadata.error.
*/
key: string;
/**
* Comparison operator. String operators: includes, not_includes, starts_with,
* ends_with, regex. Existence: exists, is_null. Set membership: in, not_in
* (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.
*/
operation: 'includes' | 'not_includes' | 'starts_with' | 'ends_with' | 'regex' | 'exists' | 'is_null' | 'in' | 'not_in' | 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'INCLUDES' | 'DOES_NOT_INCLUDE' | 'MATCH_REGEX' | 'EXISTS' | 'DOES_NOT_EXIST' | 'IN' | 'NOT_IN' | 'STARTS_WITH' | 'ENDS_WITH';
/**
* Data type of the filter field. Must match the actual type of the key being
* filtered.
*/
type: 'string' | 'number' | 'boolean';
/**
* Discriminator for leaf filter nodes. Always 'filter' when present; may be
* omitted.
*/
kind?: 'filter';
/**
* Comparison value. Must match actual values in your data — verify with the values
* endpoint. Ensure the value type (string/number/boolean) matches the field type.
* String comparisons are case-sensitive. Regex uses RE2 syntax (no
* lookaheads/lookbehinds).
*/
value?: string | number | boolean;
}
}
/**
* A filter condition applied to query results. Use the keys and values endpoints
* to discover available fields and their values before constructing filters.
*/
interface WorkersObservabilityFilterLeaf {
/**
* Filter field name. Use verified keys from previous query results or the keys
* endpoint. Common keys include $metadata.service, $metadata.origin,
* $metadata.trigger, $metadata.message, and $metadata.error.
*/
key: string;
/**
* Comparison operator. String operators: includes, not_includes, starts_with,
* ends_with, regex. Existence: exists, is_null. Set membership: in, not_in
* (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.
*/
operation: 'includes' | 'not_includes' | 'starts_with' | 'ends_with' | 'regex' | 'exists' | 'is_null' | 'in' | 'not_in' | 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'INCLUDES' | 'DOES_NOT_INCLUDE' | 'MATCH_REGEX' | 'EXISTS' | 'DOES_NOT_EXIST' | 'IN' | 'NOT_IN' | 'STARTS_WITH' | 'ENDS_WITH';
/**
* Data type of the filter field. Must match the actual type of the key being
* filtered.
*/
type: 'string' | 'number' | 'boolean';
/**
* Discriminator for leaf filter nodes. Always 'filter' when present; may be
* omitted.
*/
kind?: 'filter';
/**
* Comparison value. Must match actual values in your data — verify with the values
* endpoint. Ensure the value type (string/number/boolean) matches the field type.
* String comparisons are case-sensitive. Regex uses RE2 syntax (no
* lookaheads/lookbehinds).
*/
value?: string | number | boolean;
}
interface GroupBy {
/**
* Data type of the group-by field.
*/
type: 'string' | 'number' | 'boolean';
/**
* Field name to group results by (e.g. $metadata.service, $metadata.statusCode).
*/
value: string;
}
interface Having {
/**
* Calculation alias or operator to filter on after aggregation.
*/
key: string;
/**
* Numeric comparison operator: eq, neq, gt, gte, lt, lte.
*/
operation: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
/**
* Threshold value to compare the calculation result against.
*/
value: number;
}
/**
* Full-text search expression applied across all event fields. Matches events
* containing the specified text.
*/
interface Needle {
/**
* The text or pattern to search for.
*/
value: string | number | boolean;
/**
* When true, treats the value as a regular expression (RE2 syntax).
*/
isRegex?: boolean;
/**
* When true, performs a case-sensitive search. Defaults to case-insensitive.
*/
matchCase?: boolean;
}
/**
* Ordering for grouped calculation results. Only effective when a group-by is
* present.
*/
interface OrderBy {
/**
* Alias of the calculation to order results by. Must match the alias (or operator)
* of a calculation in the query.
*/
value: string;
/**
* Sort direction: 'asc' for ascending, 'desc' for descending.
*/
order?: 'asc' | 'desc';
}
}
}
export interface SharedQueryGetParams {
/**
* Path param: Your Cloudflare account ID.
*/
account_id: string;
/**
* Query param: Select the view of the query result to return, defaults to events.
*/
view?: 'events' | 'invocations' | 'calculations';
}
export declare namespace SharedQueries {
export { type SharedQueryCreateResponse as SharedQueryCreateResponse, type SharedQueryGetResponse as SharedQueryGetResponse, type SharedQueryCreateParams as SharedQueryCreateParams, type SharedQueryGetParams as SharedQueryGetParams, };
}
//# sourceMappingURL=shared-queries.d.ts.map