# Observability # Telemetry ## List keys `workers.observability.telemetry.keys(TelemetryKeysParams**kwargs) -> SyncSinglePage[TelemetryKeysResponse]` **post** `/accounts/{account_id}/workers/observability/telemetry/keys` List all the keys in your telemetry events. ### Parameters - `account_id: str` - `datasets: Optional[SequenceNotStr[str]]` Leave this empty to use the default datasets - `filters: Optional[Iterable[Filter]]` Apply filters to narrow key discovery. Supports nested groups via kind: 'group'. Maximum nesting depth is 4. - `class FilterUnionMember0: …` - `filter_combination: Literal["and", "or", "AND", "OR"]` - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Iterable[object]` - `kind: Literal["group"]` - `"group"` - `class FilterWorkersObservabilityFilterLeaf: …` Filtering best practices: use observability_keys and observability_values to confirm available fields and values. If searching for errors, filter for $metadata.error exists. - `key: str` Filter field name. IMPORTANT: do not guess keys. Always use verified keys from previous query results or the observability_keys response. Preferred keys: $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, $metadata.error. - `operation: Literal["includes", "not_includes", "starts_with", 25 more]` - `"includes"` - `"not_includes"` - `"starts_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"` - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `kind: Optional[Literal["filter"]]` - `"filter"` - `value: Optional[Union[str, float, bool]]` Filter comparison value. IMPORTANT: must match actual values in your logs. Verify using previous query results or the /values endpoint. Ensure value type matches the field type. String comparisons are case-sensitive unless using specific operations. Regex uses ClickHouse RE2 syntax (no lookaheads/lookbehinds); examples: ^5\d{2}$ for HTTP 5xx, \bERROR\b for word boundary. - `str` - `float` - `bool` - `from_: Optional[float]` - `key_needle: Optional[KeyNeedle]` If the user suggests a key, use this to narrow down the list of keys returned. Make sure matchCase is false to avoid case sensitivity issues. - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` - `limit: Optional[float]` Advanced usage: set limit=1000+ to retrieve comprehensive key options without needing additional filtering. - `needle: Optional[Needle]` Search for a specific substring in any of the events - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` - `to: Optional[float]` ### Returns - `class TelemetryKeysResponse: …` - `key: str` - `last_seen_at: float` - `type: Literal["string", "boolean", "number"]` - `"string"` - `"boolean"` - `"number"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.workers.observability.telemetry.keys( account_id="account_id", ) page = page.result[0] print(page.key) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "result": [ { "key": "key", "lastSeenAt": 0, "type": "string" } ], "success": true } ``` ## Run a query `workers.observability.telemetry.query(TelemetryQueryParams**kwargs) -> TelemetryQueryResponse` **post** `/accounts/{account_id}/workers/observability/telemetry/query` Run a temporary or saved query. ### Parameters - `account_id: str` - `query_id: str` Unique identifier for the query to execute - `timeframe: Timeframe` Timeframe for your query using Unix timestamps in milliseconds. Provide from/to epoch ms; narrower timeframes provide faster responses and more specific results. - `from_: float` Start timestamp for the query timeframe (Unix timestamp in milliseconds) - `to: float` End timestamp for the query timeframe (Unix timestamp in milliseconds) - `chart: Optional[bool]` Whether to include timeseties data in the response - `compare: Optional[bool]` Whether to include comparison data with previous time periods - `dry: Optional[bool]` Whether to perform a dry run without saving the results of the query. Useful for validation - `granularity: Optional[float]` This is only used when the view is calculations. Leaving it empty lets Workers Observability detect the correct granularity. - `ignore_series: Optional[bool]` Whether to ignore time-series data in the results and return only aggregated values - `limit: Optional[float]` Use this limit to cap the number of events returned when the view is events. - `offset: Optional[str]` Cursor pagination for event/trace/invocation views. Pass the last item's $metadata.id as the next offset. - `offset_by: Optional[float]` Numeric offset for pattern results (top-N list). Use with limit to page pattern groups; not used by cursor pagination. - `offset_direction: Optional[str]` Direction for offset-based pagination (e.g., 'next', 'prev') - `parameters: Optional[Parameters]` Optional parameters to pass to the query execution - `calculations: Optional[Iterable[ParametersCalculation]]` Create Calculations to compute as part of the query. - `operator: Literal["uniq", "count", "max", 35 more]` - `"uniq"` - `"count"` - `"max"` - `"min"` - `"sum"` - `"avg"` - `"median"` - `"p001"` - `"p01"` - `"p05"` - `"p10"` - `"p25"` - `"p75"` - `"p90"` - `"p95"` - `"p99"` - `"p999"` - `"stddev"` - `"variance"` - `"COUNT_DISTINCT"` - `"COUNT"` - `"MAX"` - `"MIN"` - `"SUM"` - `"AVG"` - `"MEDIAN"` - `"P001"` - `"P01"` - `"P05"` - `"P10"` - `"P25"` - `"P75"` - `"P90"` - `"P95"` - `"P99"` - `"P999"` - `"STDDEV"` - `"VARIANCE"` - `alias: Optional[str]` - `key: Optional[str]` The key to use for the calculation. This key must exist in the logs. Use the observability_keys response to confirm. Do not guess keys. - `key_type: Optional[Literal["string", "number", "boolean"]]` - `"string"` - `"number"` - `"boolean"` - `datasets: Optional[SequenceNotStr[str]]` Set the Datasets to query. Leave it empty to query all the datasets. - `filter_combination: Optional[Literal["and", "or", "AND", "OR"]]` Set a Flag to describe how to combine the filters on the query. - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Optional[Iterable[ParametersFilter]]` Configure the Filters to apply to the query. Supports nested groups via kind: 'group'. Maximum nesting depth is 4. - `class ParametersFilterUnionMember0: …` - `filter_combination: Literal["and", "or", "AND", "OR"]` - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Iterable[object]` - `kind: Literal["group"]` - `"group"` - `class ParametersFilterWorkersObservabilityFilterLeaf: …` Filtering best practices: use observability_keys and observability_values to confirm available fields and values. If searching for errors, filter for $metadata.error exists. - `key: str` Filter field name. IMPORTANT: do not guess keys. Always use verified keys from previous query results or the observability_keys response. Preferred keys: $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, $metadata.error. - `operation: Literal["includes", "not_includes", "starts_with", 25 more]` - `"includes"` - `"not_includes"` - `"starts_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"` - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `kind: Optional[Literal["filter"]]` - `"filter"` - `value: Optional[Union[str, float, bool]]` Filter comparison value. IMPORTANT: must match actual values in your logs. Verify using previous query results or the /values endpoint. Ensure value type matches the field type. String comparisons are case-sensitive unless using specific operations. Regex uses ClickHouse RE2 syntax (no lookaheads/lookbehinds); examples: ^5\d{2}$ for HTTP 5xx, \bERROR\b for word boundary. - `str` - `float` - `bool` - `group_bys: Optional[Iterable[ParametersGroupBy]]` Define how to group the results of the query. - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `value: str` - `havings: Optional[Iterable[ParametersHaving]]` Configure the Having clauses that filter on calculations in the query result. - `key: str` - `operation: Literal["eq", "neq", "gt", 3 more]` - `"eq"` - `"neq"` - `"gt"` - `"gte"` - `"lt"` - `"lte"` - `value: float` - `limit: Optional[int]` Set a limit on the number of results / records returned by the query - `needle: Optional[ParametersNeedle]` Define an expression to search using full-text search. - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` - `order_by: Optional[ParametersOrderBy]` Configure the order of the results returned by the query. - `value: str` Configure which Calculation to order the results by. - `order: Optional[Literal["asc", "desc"]]` Set the order of the results - `"asc"` - `"desc"` - `view: Optional[Literal["traces", "events", "calculations", 3 more]]` Examples by view type. Events: show errors for a worker in the last 30 minutes. Calculations: p99 of wall time or count by status code. Invocations: find a specific request that resulted in a 500. - `"traces"` - `"events"` - `"calculations"` - `"invocations"` - `"requests"` - `"agents"` ### Returns - `class TelemetryQueryResponse: …` - `run: Run` A Workers Observability Query Object - `id: str` - `account_id: str` - `dry: bool` - `granularity: float` - `query: RunQuery` - `id: str` - `adhoc: bool` If the query wasn't explcitly saved - `created: str` - `created_by: str` - `description: Optional[str]` - `name: str` Query name - `parameters: RunQueryParameters` - `calculations: Optional[List[RunQueryParametersCalculation]]` Create Calculations to compute as part of the query. - `operator: Literal["uniq", "count", "max", 35 more]` - `"uniq"` - `"count"` - `"max"` - `"min"` - `"sum"` - `"avg"` - `"median"` - `"p001"` - `"p01"` - `"p05"` - `"p10"` - `"p25"` - `"p75"` - `"p90"` - `"p95"` - `"p99"` - `"p999"` - `"stddev"` - `"variance"` - `"COUNT_DISTINCT"` - `"COUNT"` - `"MAX"` - `"MIN"` - `"SUM"` - `"AVG"` - `"MEDIAN"` - `"P001"` - `"P01"` - `"P05"` - `"P10"` - `"P25"` - `"P75"` - `"P90"` - `"P95"` - `"P99"` - `"P999"` - `"STDDEV"` - `"VARIANCE"` - `alias: Optional[str]` - `key: Optional[str]` - `key_type: Optional[Literal["string", "number", "boolean"]]` - `"string"` - `"number"` - `"boolean"` - `datasets: Optional[List[str]]` Set the Datasets to query. Leave it empty to query all the datasets. - `filter_combination: Optional[Literal["and", "or", "AND", "OR"]]` Set a Flag to describe how to combine the filters on the query. - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Optional[List[RunQueryParametersFilter]]` Configure the Filters to apply to the query. Supports nested groups via kind: 'group'. - `class RunQueryParametersFilterUnionMember0: …` - `filter_combination: Literal["and", "or", "AND", "OR"]` - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: List[object]` - `kind: Literal["group"]` - `"group"` - `class RunQueryParametersFilterWorkersObservabilityFilterLeaf: …` Filtering best practices: use observability_keys and observability_values to confirm available fields and values. If searching for errors, filter for $metadata.error exists. - `key: str` Filter field name. IMPORTANT: do not guess keys. Always use verified keys from previous query results or the observability_keys response. Preferred keys: $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, $metadata.error. - `operation: Literal["includes", "not_includes", "starts_with", 25 more]` - `"includes"` - `"not_includes"` - `"starts_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"` - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `kind: Optional[Literal["filter"]]` - `"filter"` - `value: Optional[Union[str, float, bool, null]]` Filter comparison value. IMPORTANT: must match actual values in your logs. Verify using previous query results or the /values endpoint. Ensure value type matches the field type. String comparisons are case-sensitive unless using specific operations. Regex uses ClickHouse RE2 syntax (no lookaheads/lookbehinds); examples: ^5\d{2}$ for HTTP 5xx, \bERROR\b for word boundary. - `str` - `float` - `bool` - `group_bys: Optional[List[RunQueryParametersGroupBy]]` Define how to group the results of the query. - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `value: str` - `havings: Optional[List[RunQueryParametersHaving]]` Configure the Having clauses that filter on calculations in the query result. - `key: str` - `operation: Literal["eq", "neq", "gt", 3 more]` - `"eq"` - `"neq"` - `"gt"` - `"gte"` - `"lt"` - `"lte"` - `value: float` - `limit: Optional[int]` Set a limit on the number of results / records returned by the query - `needle: Optional[RunQueryParametersNeedle]` Define an expression to search using full-text search. - `value: RunQueryParametersNeedleValue` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` - `order_by: Optional[RunQueryParametersOrderBy]` Configure the order of the results returned by the query. - `value: str` Configure which Calculation to order the results by. - `order: Optional[Literal["asc", "desc"]]` Set the order of the results - `"asc"` - `"desc"` - `updated: str` - `updated_by: str` - `status: Literal["STARTED", "COMPLETED"]` - `"STARTED"` - `"COMPLETED"` - `timeframe: RunTimeframe` Time range for the query execution - `from_: float` Start timestamp for the query timeframe (Unix timestamp in milliseconds) - `to: float` End timestamp for the query timeframe (Unix timestamp in milliseconds) - `user_id: str` - `created: Optional[str]` - `statistics: Optional[RunStatistics]` - `bytes_read: float` Number of uncompressed bytes read from the table. - `elapsed: float` Time in seconds for the query to run. - `rows_read: float` Number of rows scanned from the table. - `abr_level: Optional[float]` The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1 - `updated: Optional[str]` - `statistics: Statistics` The statistics object contains information about query performance from the database, it does not include any network latency - `bytes_read: float` Number of uncompressed bytes read from the table. - `elapsed: float` Time in seconds for the query to run. - `rows_read: float` Number of rows scanned from the table. - `abr_level: Optional[float]` The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1 - `agents: Optional[List[Agent]]` - `agent_class: str` - `event_type_counts: Dict[str, float]` - `first_event_ms: float` - `has_errors: bool` - `last_event_ms: float` - `namespace: str` - `service: str` - `total_events: float` - `calculations: Optional[List[Calculation]]` - `aggregates: List[CalculationAggregate]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `groups: Optional[List[CalculationAggregateGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `calculation: str` - `series: List[CalculationSeries]` - `data: List[CalculationSeriesData]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `first_seen: Optional[str]` - `groups: Optional[List[CalculationSeriesDataGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `last_seen: Optional[str]` - `time: str` - `alias: Optional[str]` - `compare: Optional[List[Compare]]` - `aggregates: List[CompareAggregate]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `groups: Optional[List[CompareAggregateGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `calculation: str` - `series: List[CompareSeries]` - `data: List[CompareSeriesData]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `first_seen: Optional[str]` - `groups: Optional[List[CompareSeriesDataGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `last_seen: Optional[str]` - `time: str` - `alias: Optional[str]` - `events: Optional[Events]` - `count: Optional[float]` - `events: Optional[List[EventsEvent]]` - `metadata: EventsEventMetadata` - `id: str` Unique event ID. Use as the cursor for offset-based pagination. - `account: Optional[str]` - `cloud_service: Optional[str]` - `cold_start: Optional[int]` - `cost: Optional[int]` - `duration: Optional[int]` - `end_time: Optional[int]` - `error: Optional[str]` - `error_template: Optional[str]` - `fingerprint: Optional[str]` - `level: Optional[str]` - `message: Optional[str]` - `message_template: Optional[str]` - `metric_name: Optional[str]` - `origin: Optional[str]` - `parent_span_id: Optional[str]` - `provider: Optional[str]` - `region: Optional[str]` - `request_id: Optional[str]` - `service: Optional[str]` - `span_id: Optional[str]` - `span_name: Optional[str]` - `stack_id: Optional[str]` - `start_time: Optional[int]` - `status_code: Optional[int]` - `trace_duration: Optional[int]` - `trace_id: Optional[str]` - `transaction_name: Optional[str]` - `trigger: Optional[str]` - `type: Optional[str]` - `url: Optional[str]` - `dataset: str` - `source: Union[str, object]` - `str` - `object` - `timestamp: int` - `containers: Optional[object]` Cloudflare Containers event information enriches your logs so you can easily identify and debug issues. - `workers: Optional[EventsEventWorkers]` Cloudflare Workers event information enriches your logs so you can easily identify and debug issues. - `class EventsEventWorkersUnionMember0: …` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `request_id: str` - `script_name: str` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `outcome: Optional[str]` - `script_version: Optional[EventsEventWorkersUnionMember0ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `class EventsEventWorkersUnionMember1: …` - `cpu_time_ms: float` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `outcome: str` - `request_id: str` - `script_name: str` - `wall_time_ms: float` - `diagnostics_channel_events: Optional[List[EventsEventWorkersUnionMember1DiagnosticsChannelEvent]]` - `channel: str` - `message: str` - `timestamp: float` - `dispatch_namespace: Optional[str]` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `script_version: Optional[EventsEventWorkersUnionMember1ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `fields: Optional[List[EventsField]]` - `key: str` - `type: str` - `series: Optional[List[EventsSeries]]` - `data: List[EventsSeriesData]` - `aggregates: EventsSeriesDataAggregates` - `_count: int` - `_interval: float` - `_first_seen: Optional[str]` - `_last_seen: Optional[str]` - `bin: Optional[object]` - `count: float` - `interval: float` - `sample_interval: float` - `errors: Optional[float]` - `groups: Optional[Dict[str, Union[str, float, bool]]]` Groups in the query results. - `str` - `float` - `bool` - `time: str` - `invocations: Optional[Dict[str, List[Invocation]]]` - `metadata: InvocationMetadata` - `id: str` Unique event ID. Use as the cursor for offset-based pagination. - `account: Optional[str]` - `cloud_service: Optional[str]` - `cold_start: Optional[int]` - `cost: Optional[int]` - `duration: Optional[int]` - `end_time: Optional[int]` - `error: Optional[str]` - `error_template: Optional[str]` - `fingerprint: Optional[str]` - `level: Optional[str]` - `message: Optional[str]` - `message_template: Optional[str]` - `metric_name: Optional[str]` - `origin: Optional[str]` - `parent_span_id: Optional[str]` - `provider: Optional[str]` - `region: Optional[str]` - `request_id: Optional[str]` - `service: Optional[str]` - `span_id: Optional[str]` - `span_name: Optional[str]` - `stack_id: Optional[str]` - `start_time: Optional[int]` - `status_code: Optional[int]` - `trace_duration: Optional[int]` - `trace_id: Optional[str]` - `transaction_name: Optional[str]` - `trigger: Optional[str]` - `type: Optional[str]` - `url: Optional[str]` - `dataset: str` - `source: Union[str, object]` - `str` - `object` - `timestamp: int` - `containers: Optional[object]` Cloudflare Containers event information enriches your logs so you can easily identify and debug issues. - `workers: Optional[InvocationWorkers]` Cloudflare Workers event information enriches your logs so you can easily identify and debug issues. - `class InvocationWorkersUnionMember0: …` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `request_id: str` - `script_name: str` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `outcome: Optional[str]` - `script_version: Optional[InvocationWorkersUnionMember0ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `class InvocationWorkersUnionMember1: …` - `cpu_time_ms: float` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `outcome: str` - `request_id: str` - `script_name: str` - `wall_time_ms: float` - `diagnostics_channel_events: Optional[List[InvocationWorkersUnionMember1DiagnosticsChannelEvent]]` - `channel: str` - `message: str` - `timestamp: float` - `dispatch_namespace: Optional[str]` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `script_version: Optional[InvocationWorkersUnionMember1ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `traces: Optional[List[Trace]]` - `root_span_name: str` - `root_transaction_name: str` - `service: List[str]` - `spans: float` - `trace_duration_ms: float` - `trace_end_ms: float` - `trace_id: str` - `trace_start_ms: float` - `errors: Optional[List[str]]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) response = client.workers.observability.telemetry.query( account_id="account_id", query_id="queryId", timeframe={ "from": 0, "to": 0, }, ) print(response.run) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "result": { "run": { "id": "id", "accountId": "accountId", "dry": true, "granularity": 0, "query": { "id": "id", "adhoc": true, "created": "created", "createdBy": "createdBy", "description": "Query description", "name": "x", "parameters": { "calculations": [ { "operator": "uniq", "alias": "alias", "key": "key", "keyType": "string" } ], "datasets": [ "string" ], "filterCombination": "and", "filters": [ { "filterCombination": "and", "filters": [ {} ], "kind": "group" } ], "groupBys": [ { "type": "string", "value": "value" } ], "havings": [ { "key": "key", "operation": "eq", "value": 0 } ], "limit": 0, "needle": { "value": { "0": "s", "1": "t", "2": "r", "3": "i", "4": "n", "5": "g" }, "isRegex": true, "matchCase": true }, "orderBy": { "value": "value", "order": "asc" } }, "updated": "updated", "updatedBy": "updatedBy" }, "status": "STARTED", "timeframe": { "from": 0, "to": 0 }, "userId": "userId", "created": "created", "statistics": { "bytes_read": 0, "elapsed": 0, "rows_read": 0, "abr_level": 0 }, "updated": "updated" }, "statistics": { "bytes_read": 0, "elapsed": 0, "rows_read": 0, "abr_level": 0 }, "agents": [ { "agentClass": "agentClass", "eventTypeCounts": { "foo": 0 }, "firstEventMs": 0, "hasErrors": true, "lastEventMs": 0, "namespace": "namespace", "service": "service", "totalEvents": 0 } ], "calculations": [ { "aggregates": [ { "count": 0, "interval": 0, "sampleInterval": 0, "value": 0, "groups": [ { "key": "key", "value": "string" } ] } ], "calculation": "calculation", "series": [ { "data": [ { "count": 0, "interval": 0, "sampleInterval": 0, "value": 0, "firstSeen": "firstSeen", "groups": [ { "key": "key", "value": "string" } ], "lastSeen": "lastSeen" } ], "time": "time" } ], "alias": "alias" } ], "compare": [ { "aggregates": [ { "count": 0, "interval": 0, "sampleInterval": 0, "value": 0, "groups": [ { "key": "key", "value": "string" } ] } ], "calculation": "calculation", "series": [ { "data": [ { "count": 0, "interval": 0, "sampleInterval": 0, "value": 0, "firstSeen": "firstSeen", "groups": [ { "key": "key", "value": "string" } ], "lastSeen": "lastSeen" } ], "time": "time" } ], "alias": "alias" } ], "events": { "count": 0, "events": [ { "$metadata": { "id": "id", "account": "account", "cloudService": "cloudService", "coldStart": 1, "cost": 1, "duration": 1, "endTime": 0, "error": "error", "errorTemplate": "errorTemplate", "fingerprint": "fingerprint", "level": "level", "message": "message", "messageTemplate": "messageTemplate", "metricName": "metricName", "origin": "origin", "parentSpanId": "parentSpanId", "provider": "provider", "region": "region", "requestId": "requestId", "service": "service", "spanId": "spanId", "spanName": "spanName", "stackId": "stackId", "startTime": 0, "statusCode": 1, "traceDuration": 1, "traceId": "traceId", "transactionName": "transactionName", "trigger": "trigger", "type": "type", "url": "url" }, "dataset": "dataset", "source": "string", "timestamp": 0, "$containers": {}, "$workers": { "eventType": "fetch", "requestId": "requestId", "scriptName": "scriptName", "durableObjectId": "durableObjectId", "entrypoint": "entrypoint", "event": { "foo": "bar" }, "executionModel": "durableObject", "outcome": "outcome", "scriptVersion": { "id": "id", "message": "message", "tag": "tag" }, "truncated": true } } ], "fields": [ { "key": "key", "type": "type" } ], "series": [ { "data": [ { "aggregates": { "_count": 1, "_interval": 1, "_firstSeen": "_firstSeen", "_lastSeen": "_lastSeen", "bin": {} }, "count": 0, "interval": 0, "sampleInterval": 0, "errors": 0, "groups": { "foo": "string" } } ], "time": "time" } ] }, "invocations": { "foo": [ { "$metadata": { "id": "id", "account": "account", "cloudService": "cloudService", "coldStart": 1, "cost": 1, "duration": 1, "endTime": 0, "error": "error", "errorTemplate": "errorTemplate", "fingerprint": "fingerprint", "level": "level", "message": "message", "messageTemplate": "messageTemplate", "metricName": "metricName", "origin": "origin", "parentSpanId": "parentSpanId", "provider": "provider", "region": "region", "requestId": "requestId", "service": "service", "spanId": "spanId", "spanName": "spanName", "stackId": "stackId", "startTime": 0, "statusCode": 1, "traceDuration": 1, "traceId": "traceId", "transactionName": "transactionName", "trigger": "trigger", "type": "type", "url": "url" }, "dataset": "dataset", "source": "string", "timestamp": 0, "$containers": {}, "$workers": { "eventType": "fetch", "requestId": "requestId", "scriptName": "scriptName", "durableObjectId": "durableObjectId", "entrypoint": "entrypoint", "event": { "foo": "bar" }, "executionModel": "durableObject", "outcome": "outcome", "scriptVersion": { "id": "id", "message": "message", "tag": "tag" }, "truncated": true } } ] }, "traces": [ { "rootSpanName": "rootSpanName", "rootTransactionName": "rootTransactionName", "service": [ "string" ], "spans": 0, "traceDurationMs": 0, "traceEndMs": 0, "traceId": "traceId", "traceStartMs": 0, "errors": [ "string" ] } ] }, "success": true } ``` ## List values `workers.observability.telemetry.values(TelemetryValuesParams**kwargs) -> SyncSinglePage[TelemetryValuesResponse]` **post** `/accounts/{account_id}/workers/observability/telemetry/values` List unique values found in your events. ### Parameters - `account_id: str` - `datasets: SequenceNotStr[str]` Leave this empty to use the default datasets - `key: str` - `timeframe: Timeframe` - `from_: float` - `to: float` - `type: Literal["string", "boolean", "number"]` - `"string"` - `"boolean"` - `"number"` - `filters: Optional[Iterable[Filter]]` Apply filters before listing values. Supports nested groups via kind: 'group'. Maximum nesting depth is 4. - `class FilterUnionMember0: …` - `filter_combination: Literal["and", "or", "AND", "OR"]` - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Iterable[object]` - `kind: Literal["group"]` - `"group"` - `class FilterWorkersObservabilityFilterLeaf: …` Filtering best practices: use observability_keys and observability_values to confirm available fields and values. If searching for errors, filter for $metadata.error exists. - `key: str` Filter field name. IMPORTANT: do not guess keys. Always use verified keys from previous query results or the observability_keys response. Preferred keys: $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, $metadata.error. - `operation: Literal["includes", "not_includes", "starts_with", 25 more]` - `"includes"` - `"not_includes"` - `"starts_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"` - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `kind: Optional[Literal["filter"]]` - `"filter"` - `value: Optional[Union[str, float, bool]]` Filter comparison value. IMPORTANT: must match actual values in your logs. Verify using previous query results or the /values endpoint. Ensure value type matches the field type. String comparisons are case-sensitive unless using specific operations. Regex uses ClickHouse RE2 syntax (no lookaheads/lookbehinds); examples: ^5\d{2}$ for HTTP 5xx, \bERROR\b for word boundary. - `str` - `float` - `bool` - `limit: Optional[float]` - `needle: Optional[Needle]` Search for a specific substring in the event. - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` ### Returns - `class TelemetryValuesResponse: …` - `dataset: str` - `key: str` - `type: Literal["string", "boolean", "number"]` - `"string"` - `"boolean"` - `"number"` - `value: Union[str, float, bool]` - `str` - `float` - `bool` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.workers.observability.telemetry.values( account_id="account_id", datasets=["string"], key="key", timeframe={ "from": 0, "to": 0, }, type="string", ) page = page.result[0] print(page.dataset) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "result": [ { "dataset": "dataset", "key": "key", "type": "string", "value": "string" } ], "success": true } ``` ## Domain Types ### Telemetry Keys Response - `class TelemetryKeysResponse: …` - `key: str` - `last_seen_at: float` - `type: Literal["string", "boolean", "number"]` - `"string"` - `"boolean"` - `"number"` ### Telemetry Query Response - `class TelemetryQueryResponse: …` - `run: Run` A Workers Observability Query Object - `id: str` - `account_id: str` - `dry: bool` - `granularity: float` - `query: RunQuery` - `id: str` - `adhoc: bool` If the query wasn't explcitly saved - `created: str` - `created_by: str` - `description: Optional[str]` - `name: str` Query name - `parameters: RunQueryParameters` - `calculations: Optional[List[RunQueryParametersCalculation]]` Create Calculations to compute as part of the query. - `operator: Literal["uniq", "count", "max", 35 more]` - `"uniq"` - `"count"` - `"max"` - `"min"` - `"sum"` - `"avg"` - `"median"` - `"p001"` - `"p01"` - `"p05"` - `"p10"` - `"p25"` - `"p75"` - `"p90"` - `"p95"` - `"p99"` - `"p999"` - `"stddev"` - `"variance"` - `"COUNT_DISTINCT"` - `"COUNT"` - `"MAX"` - `"MIN"` - `"SUM"` - `"AVG"` - `"MEDIAN"` - `"P001"` - `"P01"` - `"P05"` - `"P10"` - `"P25"` - `"P75"` - `"P90"` - `"P95"` - `"P99"` - `"P999"` - `"STDDEV"` - `"VARIANCE"` - `alias: Optional[str]` - `key: Optional[str]` - `key_type: Optional[Literal["string", "number", "boolean"]]` - `"string"` - `"number"` - `"boolean"` - `datasets: Optional[List[str]]` Set the Datasets to query. Leave it empty to query all the datasets. - `filter_combination: Optional[Literal["and", "or", "AND", "OR"]]` Set a Flag to describe how to combine the filters on the query. - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: Optional[List[RunQueryParametersFilter]]` Configure the Filters to apply to the query. Supports nested groups via kind: 'group'. - `class RunQueryParametersFilterUnionMember0: …` - `filter_combination: Literal["and", "or", "AND", "OR"]` - `"and"` - `"or"` - `"AND"` - `"OR"` - `filters: List[object]` - `kind: Literal["group"]` - `"group"` - `class RunQueryParametersFilterWorkersObservabilityFilterLeaf: …` Filtering best practices: use observability_keys and observability_values to confirm available fields and values. If searching for errors, filter for $metadata.error exists. - `key: str` Filter field name. IMPORTANT: do not guess keys. Always use verified keys from previous query results or the observability_keys response. Preferred keys: $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, $metadata.error. - `operation: Literal["includes", "not_includes", "starts_with", 25 more]` - `"includes"` - `"not_includes"` - `"starts_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"` - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `kind: Optional[Literal["filter"]]` - `"filter"` - `value: Optional[Union[str, float, bool, null]]` Filter comparison value. IMPORTANT: must match actual values in your logs. Verify using previous query results or the /values endpoint. Ensure value type matches the field type. String comparisons are case-sensitive unless using specific operations. Regex uses ClickHouse RE2 syntax (no lookaheads/lookbehinds); examples: ^5\d{2}$ for HTTP 5xx, \bERROR\b for word boundary. - `str` - `float` - `bool` - `group_bys: Optional[List[RunQueryParametersGroupBy]]` Define how to group the results of the query. - `type: Literal["string", "number", "boolean"]` - `"string"` - `"number"` - `"boolean"` - `value: str` - `havings: Optional[List[RunQueryParametersHaving]]` Configure the Having clauses that filter on calculations in the query result. - `key: str` - `operation: Literal["eq", "neq", "gt", 3 more]` - `"eq"` - `"neq"` - `"gt"` - `"gte"` - `"lt"` - `"lte"` - `value: float` - `limit: Optional[int]` Set a limit on the number of results / records returned by the query - `needle: Optional[RunQueryParametersNeedle]` Define an expression to search using full-text search. - `value: RunQueryParametersNeedleValue` - `is_regex: Optional[bool]` - `match_case: Optional[bool]` - `order_by: Optional[RunQueryParametersOrderBy]` Configure the order of the results returned by the query. - `value: str` Configure which Calculation to order the results by. - `order: Optional[Literal["asc", "desc"]]` Set the order of the results - `"asc"` - `"desc"` - `updated: str` - `updated_by: str` - `status: Literal["STARTED", "COMPLETED"]` - `"STARTED"` - `"COMPLETED"` - `timeframe: RunTimeframe` Time range for the query execution - `from_: float` Start timestamp for the query timeframe (Unix timestamp in milliseconds) - `to: float` End timestamp for the query timeframe (Unix timestamp in milliseconds) - `user_id: str` - `created: Optional[str]` - `statistics: Optional[RunStatistics]` - `bytes_read: float` Number of uncompressed bytes read from the table. - `elapsed: float` Time in seconds for the query to run. - `rows_read: float` Number of rows scanned from the table. - `abr_level: Optional[float]` The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1 - `updated: Optional[str]` - `statistics: Statistics` The statistics object contains information about query performance from the database, it does not include any network latency - `bytes_read: float` Number of uncompressed bytes read from the table. - `elapsed: float` Time in seconds for the query to run. - `rows_read: float` Number of rows scanned from the table. - `abr_level: Optional[float]` The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1 - `agents: Optional[List[Agent]]` - `agent_class: str` - `event_type_counts: Dict[str, float]` - `first_event_ms: float` - `has_errors: bool` - `last_event_ms: float` - `namespace: str` - `service: str` - `total_events: float` - `calculations: Optional[List[Calculation]]` - `aggregates: List[CalculationAggregate]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `groups: Optional[List[CalculationAggregateGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `calculation: str` - `series: List[CalculationSeries]` - `data: List[CalculationSeriesData]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `first_seen: Optional[str]` - `groups: Optional[List[CalculationSeriesDataGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `last_seen: Optional[str]` - `time: str` - `alias: Optional[str]` - `compare: Optional[List[Compare]]` - `aggregates: List[CompareAggregate]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `groups: Optional[List[CompareAggregateGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `calculation: str` - `series: List[CompareSeries]` - `data: List[CompareSeriesData]` - `count: float` - `interval: float` - `sample_interval: float` - `value: float` - `first_seen: Optional[str]` - `groups: Optional[List[CompareSeriesDataGroup]]` - `key: str` - `value: Union[str, float, bool]` - `str` - `float` - `bool` - `last_seen: Optional[str]` - `time: str` - `alias: Optional[str]` - `events: Optional[Events]` - `count: Optional[float]` - `events: Optional[List[EventsEvent]]` - `metadata: EventsEventMetadata` - `id: str` Unique event ID. Use as the cursor for offset-based pagination. - `account: Optional[str]` - `cloud_service: Optional[str]` - `cold_start: Optional[int]` - `cost: Optional[int]` - `duration: Optional[int]` - `end_time: Optional[int]` - `error: Optional[str]` - `error_template: Optional[str]` - `fingerprint: Optional[str]` - `level: Optional[str]` - `message: Optional[str]` - `message_template: Optional[str]` - `metric_name: Optional[str]` - `origin: Optional[str]` - `parent_span_id: Optional[str]` - `provider: Optional[str]` - `region: Optional[str]` - `request_id: Optional[str]` - `service: Optional[str]` - `span_id: Optional[str]` - `span_name: Optional[str]` - `stack_id: Optional[str]` - `start_time: Optional[int]` - `status_code: Optional[int]` - `trace_duration: Optional[int]` - `trace_id: Optional[str]` - `transaction_name: Optional[str]` - `trigger: Optional[str]` - `type: Optional[str]` - `url: Optional[str]` - `dataset: str` - `source: Union[str, object]` - `str` - `object` - `timestamp: int` - `containers: Optional[object]` Cloudflare Containers event information enriches your logs so you can easily identify and debug issues. - `workers: Optional[EventsEventWorkers]` Cloudflare Workers event information enriches your logs so you can easily identify and debug issues. - `class EventsEventWorkersUnionMember0: …` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `request_id: str` - `script_name: str` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `outcome: Optional[str]` - `script_version: Optional[EventsEventWorkersUnionMember0ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `class EventsEventWorkersUnionMember1: …` - `cpu_time_ms: float` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `outcome: str` - `request_id: str` - `script_name: str` - `wall_time_ms: float` - `diagnostics_channel_events: Optional[List[EventsEventWorkersUnionMember1DiagnosticsChannelEvent]]` - `channel: str` - `message: str` - `timestamp: float` - `dispatch_namespace: Optional[str]` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `script_version: Optional[EventsEventWorkersUnionMember1ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `fields: Optional[List[EventsField]]` - `key: str` - `type: str` - `series: Optional[List[EventsSeries]]` - `data: List[EventsSeriesData]` - `aggregates: EventsSeriesDataAggregates` - `_count: int` - `_interval: float` - `_first_seen: Optional[str]` - `_last_seen: Optional[str]` - `bin: Optional[object]` - `count: float` - `interval: float` - `sample_interval: float` - `errors: Optional[float]` - `groups: Optional[Dict[str, Union[str, float, bool]]]` Groups in the query results. - `str` - `float` - `bool` - `time: str` - `invocations: Optional[Dict[str, List[Invocation]]]` - `metadata: InvocationMetadata` - `id: str` Unique event ID. Use as the cursor for offset-based pagination. - `account: Optional[str]` - `cloud_service: Optional[str]` - `cold_start: Optional[int]` - `cost: Optional[int]` - `duration: Optional[int]` - `end_time: Optional[int]` - `error: Optional[str]` - `error_template: Optional[str]` - `fingerprint: Optional[str]` - `level: Optional[str]` - `message: Optional[str]` - `message_template: Optional[str]` - `metric_name: Optional[str]` - `origin: Optional[str]` - `parent_span_id: Optional[str]` - `provider: Optional[str]` - `region: Optional[str]` - `request_id: Optional[str]` - `service: Optional[str]` - `span_id: Optional[str]` - `span_name: Optional[str]` - `stack_id: Optional[str]` - `start_time: Optional[int]` - `status_code: Optional[int]` - `trace_duration: Optional[int]` - `trace_id: Optional[str]` - `transaction_name: Optional[str]` - `trigger: Optional[str]` - `type: Optional[str]` - `url: Optional[str]` - `dataset: str` - `source: Union[str, object]` - `str` - `object` - `timestamp: int` - `containers: Optional[object]` Cloudflare Containers event information enriches your logs so you can easily identify and debug issues. - `workers: Optional[InvocationWorkers]` Cloudflare Workers event information enriches your logs so you can easily identify and debug issues. - `class InvocationWorkersUnionMember0: …` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `request_id: str` - `script_name: str` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `outcome: Optional[str]` - `script_version: Optional[InvocationWorkersUnionMember0ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `class InvocationWorkersUnionMember1: …` - `cpu_time_ms: float` - `event_type: Literal["fetch", "scheduled", "alarm", 8 more]` - `"fetch"` - `"scheduled"` - `"alarm"` - `"cron"` - `"queue"` - `"email"` - `"tail"` - `"rpc"` - `"websocket"` - `"workflow"` - `"unknown"` - `outcome: str` - `request_id: str` - `script_name: str` - `wall_time_ms: float` - `diagnostics_channel_events: Optional[List[InvocationWorkersUnionMember1DiagnosticsChannelEvent]]` - `channel: str` - `message: str` - `timestamp: float` - `dispatch_namespace: Optional[str]` - `durable_object_id: Optional[str]` - `entrypoint: Optional[str]` - `event: Optional[Dict[str, object]]` - `execution_model: Optional[Literal["durableObject", "stateless"]]` - `"durableObject"` - `"stateless"` - `script_version: Optional[InvocationWorkersUnionMember1ScriptVersion]` - `id: Optional[str]` - `message: Optional[str]` - `tag: Optional[str]` - `truncated: Optional[bool]` - `traces: Optional[List[Trace]]` - `root_span_name: str` - `root_transaction_name: str` - `service: List[str]` - `spans: float` - `trace_duration_ms: float` - `trace_end_ms: float` - `trace_id: str` - `trace_start_ms: float` - `errors: Optional[List[str]]` ### Telemetry Values Response - `class TelemetryValuesResponse: …` - `dataset: str` - `key: str` - `type: Literal["string", "boolean", "number"]` - `"string"` - `"boolean"` - `"number"` - `value: Union[str, float, bool]` - `str` - `float` - `bool` # Destinations ## Get Destinations `workers.observability.destinations.list(DestinationListParams**kwargs) -> SyncSinglePage[DestinationListResponse]` **get** `/accounts/{account_id}/workers/observability/destinations` List your Workers Observability Telemetry Destinations. ### Parameters - `account_id: str` - `order: Optional[Literal["asc", "desc"]]` - `"asc"` - `"desc"` - `order_by: Optional[Literal["created", "updated"]]` - `"created"` - `"updated"` - `page: Optional[float]` - `per_page: Optional[float]` ### Returns - `class DestinationListResponse: …` - `configuration: Configuration` - `destination_conf: str` - `headers: Dict[str, str]` - `job_status: ConfigurationJobStatus` - `error_message: str` - `last_complete: str` - `last_error: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.workers.observability.destinations.list( account_id="account_id", ) page = page.result[0] print(page.configuration) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "result": [ { "configuration": { "destination_conf": "destination_conf", "headers": { "foo": "string" }, "jobStatus": { "error_message": "error_message", "last_complete": "last_complete", "last_error": "last_error" }, "logpushDataset": "opentelemetry-traces", "type": "logpush", "url": "url" }, "enabled": true, "name": "name", "scripts": [ "string" ], "slug": "slug" } ], "success": true } ``` ## Create Destination `workers.observability.destinations.create(DestinationCreateParams**kwargs) -> DestinationCreateResponse` **post** `/accounts/{account_id}/workers/observability/destinations` Create a new Workers Observability Telemetry Destination. ### Parameters - `account_id: str` - `configuration: Configuration` - `headers: Dict[str, str]` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `skip_preflight_check: Optional[bool]` ### Returns - `class DestinationCreateResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) destination = client.workers.observability.destinations.create( account_id="account_id", configuration={ "headers": { "foo": "string" }, "logpush_dataset": "opentelemetry-traces", "type": "logpush", "url": "url", }, enabled=True, name="name", ) print(destination.configuration) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Resource created" } ], "result": { "configuration": { "destination_conf": "destination_conf", "logpushDataset": "opentelemetry-traces", "logpushJob": 0, "type": "logpush", "url": "url" }, "enabled": true, "name": "name", "scripts": [ "string" ], "slug": "slug" }, "success": true } ``` ## Update Destination `workers.observability.destinations.update(strslug, DestinationUpdateParams**kwargs) -> DestinationUpdateResponse` **patch** `/accounts/{account_id}/workers/observability/destinations/{slug}` Update an existing Workers Observability Telemetry Destination. ### Parameters - `account_id: str` - `slug: str` - `configuration: Configuration` - `headers: Dict[str, str]` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` ### Returns - `class DestinationUpdateResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) destination = client.workers.observability.destinations.update( slug="slug", account_id="account_id", configuration={ "headers": { "foo": "string" }, "type": "logpush", "url": "url", }, enabled=True, ) print(destination.configuration) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "result": { "configuration": { "destination_conf": "destination_conf", "logpushDataset": "opentelemetry-traces", "logpushJob": 0, "type": "logpush", "url": "url" }, "enabled": true, "name": "name", "scripts": [ "string" ], "slug": "slug" }, "success": true } ``` ## Delete Destination `workers.observability.destinations.delete(strslug, DestinationDeleteParams**kwargs) -> DestinationDeleteResponse` **delete** `/accounts/{account_id}/workers/observability/destinations/{slug}` Delete a Workers Observability Telemetry Destination. ### Parameters - `account_id: str` - `slug: str` ### Returns - `class DestinationDeleteResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) destination = client.workers.observability.destinations.delete( slug="slug", account_id="account_id", ) print(destination.configuration) ``` #### Response ```json { "errors": [ { "message": "message" } ], "messages": [ { "message": "Successful request" } ], "success": true, "result": { "configuration": { "destination_conf": "destination_conf", "logpushDataset": "opentelemetry-traces", "logpushJob": 0, "type": "logpush", "url": "url" }, "enabled": true, "name": "name", "scripts": [ "string" ], "slug": "slug" } } ``` ## Domain Types ### Destination List Response - `class DestinationListResponse: …` - `configuration: Configuration` - `destination_conf: str` - `headers: Dict[str, str]` - `job_status: ConfigurationJobStatus` - `error_message: str` - `last_complete: str` - `last_error: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Destination Create Response - `class DestinationCreateResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Destination Update Response - `class DestinationUpdateResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str` ### Destination Delete Response - `class DestinationDeleteResponse: …` - `configuration: Configuration` - `destination_conf: str` - `logpush_dataset: Literal["opentelemetry-traces", "opentelemetry-logs"]` - `"opentelemetry-traces"` - `"opentelemetry-logs"` - `logpush_job: float` - `type: Literal["logpush"]` - `"logpush"` - `url: str` - `enabled: bool` - `name: str` - `scripts: List[str]` - `slug: str`