Saves the given log parsing pipelines as the new config version for the…
Saves the given log parsing pipelines as the new config version for the caller's org and starts deploying it.
POST /v1/o11y/logs/pipelines
| Address | https://api.hanzo.ai/v1/o11y/logs/pipelines |
| Method | POST |
| Operation | post_o11y_logs_pipelines |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Saves the given log parsing pipelines as the new config version for the caller's org and starts deploying it. The set REPLACES the current one: a pipeline left out of the request is dropped from the new version, and an empty set drops them all.
Callers need the editor role; the runtime's own gate enforces it.
Request
55 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
pipelines | body | o11y.O11yLogPostablePipeline[] | — | Pipelines are the pipelines the new version holds, in order. |
pipelines[].alias | body | string | — | Alias is the pipeline's short name. |
pipelines[].config | body | o11y.O11yLogPipelineOperator[] | — | Config is the pipeline's processors, in order. |
pipelines[].config[].default | body | string | — | Default is the id of the processor a router falls through to. |
pipelines[].config[].enable_flattening | body | boolean | — | EnableFlattening flattens parsed JSON one level when true. |
pipelines[].config[].enable_paths | body | boolean | — | EnablePaths keeps the JSON path in flattened keys when true. |
pipelines[].config[].enabled | body | boolean | — | Enabled turns the processor on. |
pipelines[].config[].expr | body | string | — | Expr is a router route's expression. |
pipelines[].config[].field | body | string | — | Field is the field an add/remove processor works on. |
pipelines[].config[].fields | body | string[] | — | Fields are the fields a retain processor keeps. |
pipelines[].config[].from | body | string | — | From is the source field of a move or copy. |
pipelines[].config[].id | body | string | — | ID is the processor's id, unique within the pipeline. |
pipelines[].config[].if | body | string | — | If gates the processor on an expression. |
pipelines[].config[].layout | body | string | — | Layout is a time parser's layout. |
pipelines[].config[].layout_type | body | string | — | LayoutType is the layout's kind, e.g. |
pipelines[].config[].mapping | body | object | — | Mapping maps severity levels (or flattened keys) to the values that mean them. |
pipelines[].config[].mapping.* | body | string[] | — | |
pipelines[].config[].name | body | string | — | Name is the processor's display name. |
pipelines[].config[].on_error | body | string | — | OnError says what to do when the processor fails, e.g. |
pipelines[].config[].orderId | body | integer | — | OrderID is the processor's 1-based position in the pipeline. |
pipelines[].config[].output | body | string | — | Output is the id of the processor that runs next. |
pipelines[].config[].overwrite_text | body | boolean | — | OverwriteSeverityText rewrites the severity text alongside the number when true. |
pipelines[].config[].parse_from | body | string | — | ParseFrom is where a parser reads from. |
pipelines[].config[].parse_to | body | string | — | ParseTo is where a parser writes its result. |
pipelines[].config[].path_prefix | body | string | — | PathPrefix prefixes flattened keys. |
pipelines[].config[].pattern | body | string | — | Pattern is a grok parser's pattern. |
pipelines[].config[].regex | body | string | — | Regex is a regex parser's expression. |
pipelines[].config[].routes | body | o11y.O11yLogPipelineRoute[] | — | Routes are a router processor's routes. |
pipelines[].config[].routes[].expr | body | string | — | Expr is the expression that selects the route. |
pipelines[].config[].routes[].output | body | string | — | Output is the id of the processor the route sends to. |
pipelines[].config[].span_id | body | o11y.O11yLogParseFrom | — | |
pipelines[].config[].span_id.parse_from | body | string | — | ParseFrom is the field to read. |
pipelines[].config[].to | body | string | — | To is the destination field of a move or copy. |
pipelines[].config[].trace_flags | body | o11y.O11yLogParseFrom | — | |
pipelines[].config[].trace_flags.parse_from | body | string | — | ParseFrom is the field to read. |
pipelines[].config[].trace_id | body | o11y.O11yLogParseFrom | — | |
pipelines[].config[].trace_id.parse_from | body | string | — | ParseFrom is the field to read. |
pipelines[].config[].type | body | string | — | Type is the processor type, e.g. |
pipelines[].config[].value | body | string | — | Value is the value an add processor writes. |
pipelines[].description | body | string | — | Description says what the pipeline is for. |
pipelines[].enabled | body | boolean | — | Enabled turns the pipeline on. |
pipelines[].filter | body | o11y.O11yLogFilter | — | |
pipelines[].filter.items | body | o11y.O11yLogFilterItem[] | — | Items are the predicates. |
pipelines[].filter.items[].key | body | o11y.O11yLogFilterKey | — | |
pipelines[].filter.items[].key.dataType | body | string | — | DataType is the field's data type, e.g. |
pipelines[].filter.items[].key.isColumn | body | boolean | — | IsColumn marks a field materialized as its own column. |
pipelines[].filter.items[].key.isJSON | body | boolean | — | IsJSON marks a path into the record's JSON body. |
pipelines[].filter.items[].key.key | body | string | — | Key is the field's name. |
pipelines[].filter.items[].key.type | body | string | — | Type is where the field lives: tag or resource. |
pipelines[].filter.items[].op | body | string | — | Op is the comparison, e.g. |
pipelines[].filter.items[].value | body | any | — | Value is what it tests against, in the value's own JSON type. |
pipelines[].filter.op | body | string | — | Op combines the items: AND or OR. |
pipelines[].id | body | string | — | ID is the pipeline's id. |
pipelines[].name | body | string | — | Name is the pipeline's display name. |
pipelines[].orderId | body | integer | — | OrderID is the pipeline's 1-based position in the set. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | o11y.O11yLogPipelinesOut | ok |
200 body — 90 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
data | body | o11y.O11yLogPipelines | — | |
data.config | body | string | — | Config is the rendered collector config the version deployed. |
data.createdAt | body | string (date-time) | — | CreatedAt is when the version was created. |
data.createdBy | body | string | — | CreatedBy is the id of who created the version. |
data.createdByName | body | string | — | CreatedByName is the display name of who created the version. |
data.deployResult | body | string | — | DeployResult is the deployment's outcome message. |
data.deploySequence | body | integer | — | DeploySequence orders this deployment among the version's deployments. |
data.deployStatus | body | string | — | DeployStatus is where the deployment stands, e.g. |
data.elementType | body | string | — | ElementType is the config element this version carries — log_pipelines. |
data.history | body | o11y.O11yLogConfigVersion[] | — | History is the recent version history, newest first. |
data.history[].config | body | string | — | Config is the rendered collector config the version deployed. |
data.history[].createdAt | body | string (date-time) | — | CreatedAt is when the version was created. |
data.history[].createdBy | body | string | — | CreatedBy is the id of who created the version. |
data.history[].createdByName | body | string | — | CreatedByName is the display name of who created the version. |
data.history[].deployResult | body | string | — | DeployResult is the deployment's outcome message. |
data.history[].deploySequence | body | integer | — | DeploySequence orders this deployment among the version's deployments. |
data.history[].deployStatus | body | string | — | DeployStatus is where the deployment stands, e.g. |
data.history[].elementType | body | string | — | ElementType is the config element the version carries — log_pipelines. |
data.history[].id | body | string | — | ID is the version record's id. |
data.history[].lastHash | body | string | — | LastHash is the deployed config's hash. |
data.history[].orgId | body | string | — | OrgID is the org the version belongs to. |
data.history[].updatedAt | body | string (date-time) | — | UpdatedAt is when the version last changed. |
data.history[].updatedBy | body | string | — | UpdatedBy is the id of who last changed it. |
data.history[].version | body | integer | — | Version is the config version number. |
data.id | body | string | — | ID is the version record's id. |
data.lastHash | body | string | — | LastHash is the deployed config's hash. |
data.orgId | body | string | — | OrgID is the org the version belongs to. |
data.pipelines | body | o11y.O11yLogPipeline[] | — | Pipelines are the version's pipelines, in order. |
data.pipelines[].alias | body | string | — | Alias is the pipeline's short name. |
data.pipelines[].config | body | o11y.O11yLogPipelineOperator[] | — | Config is the pipeline's processors, in order. |
data.pipelines[].config[].default | body | string | — | Default is the id of the processor a router falls through to. |
data.pipelines[].config[].enable_flattening | body | boolean | — | EnableFlattening flattens parsed JSON one level when true. |
data.pipelines[].config[].enable_paths | body | boolean | — | EnablePaths keeps the JSON path in flattened keys when true. |
data.pipelines[].config[].enabled | body | boolean | — | Enabled turns the processor on. |
data.pipelines[].config[].expr | body | string | — | Expr is a router route's expression. |
data.pipelines[].config[].field | body | string | — | Field is the field an add/remove processor works on. |
data.pipelines[].config[].fields | body | string[] | — | Fields are the fields a retain processor keeps. |
data.pipelines[].config[].from | body | string | — | From is the source field of a move or copy. |
data.pipelines[].config[].id | body | string | — | ID is the processor's id, unique within the pipeline. |
data.pipelines[].config[].if | body | string | — | If gates the processor on an expression. |
data.pipelines[].config[].layout | body | string | — | Layout is a time parser's layout. |
data.pipelines[].config[].layout_type | body | string | — | LayoutType is the layout's kind, e.g. |
data.pipelines[].config[].mapping | body | object | — | Mapping maps severity levels (or flattened keys) to the values that mean them. |
data.pipelines[].config[].mapping.* | body | string[] | — | |
data.pipelines[].config[].name | body | string | — | Name is the processor's display name. |
data.pipelines[].config[].on_error | body | string | — | OnError says what to do when the processor fails, e.g. |
data.pipelines[].config[].orderId | body | integer | — | OrderID is the processor's 1-based position in the pipeline. |
data.pipelines[].config[].output | body | string | — | Output is the id of the processor that runs next. |
data.pipelines[].config[].overwrite_text | body | boolean | — | OverwriteSeverityText rewrites the severity text alongside the number when true. |
data.pipelines[].config[].parse_from | body | string | — | ParseFrom is where a parser reads from. |
data.pipelines[].config[].parse_to | body | string | — | ParseTo is where a parser writes its result. |
data.pipelines[].config[].path_prefix | body | string | — | PathPrefix prefixes flattened keys. |
data.pipelines[].config[].pattern | body | string | — | Pattern is a grok parser's pattern. |
data.pipelines[].config[].regex | body | string | — | Regex is a regex parser's expression. |
data.pipelines[].config[].routes | body | o11y.O11yLogPipelineRoute[] | — | Routes are a router processor's routes. |
data.pipelines[].config[].routes[].expr | body | string | — | Expr is the expression that selects the route. |
data.pipelines[].config[].routes[].output | body | string | — | Output is the id of the processor the route sends to. |
data.pipelines[].config[].span_id | body | o11y.O11yLogParseFrom | — | |
data.pipelines[].config[].span_id.parse_from | body | string | — | ParseFrom is the field to read. |
data.pipelines[].config[].to | body | string | — | To is the destination field of a move or copy. |
data.pipelines[].config[].trace_flags | body | o11y.O11yLogParseFrom | — | |
data.pipelines[].config[].trace_flags.parse_from | body | string | — | ParseFrom is the field to read. |
data.pipelines[].config[].trace_id | body | o11y.O11yLogParseFrom | — | |
data.pipelines[].config[].trace_id.parse_from | body | string | — | ParseFrom is the field to read. |
data.pipelines[].config[].type | body | string | — | Type is the processor type, e.g. |
data.pipelines[].config[].value | body | string | — | Value is the value an add processor writes. |
data.pipelines[].createdAt | body | string (date-time) | — | CreatedAt is when the pipeline was created. |
data.pipelines[].createdBy | body | string | — | CreatedBy is the id of who created the pipeline. |
data.pipelines[].description | body | string | — | Description says what the pipeline is for. |
data.pipelines[].enabled | body | boolean | — | Enabled says whether the pipeline is on. |
data.pipelines[].filter | body | o11y.O11yLogFilter | — | |
data.pipelines[].filter.items | body | o11y.O11yLogFilterItem[] | — | Items are the predicates. |
data.pipelines[].filter.items[].key | body | o11y.O11yLogFilterKey | — | |
data.pipelines[].filter.items[].key.dataType | body | string | — | DataType is the field's data type, e.g. |
data.pipelines[].filter.items[].key.isColumn | body | boolean | — | IsColumn marks a field materialized as its own column. |
data.pipelines[].filter.items[].key.isJSON | body | boolean | — | IsJSON marks a path into the record's JSON body. |
data.pipelines[].filter.items[].key.key | body | string | — | Key is the field's name. |
data.pipelines[].filter.items[].key.type | body | string | — | Type is where the field lives: tag or resource. |
data.pipelines[].filter.items[].op | body | string | — | Op is the comparison, e.g. |
data.pipelines[].filter.items[].value | body | any | — | Value is what it tests against, in the value's own JSON type. |
data.pipelines[].filter.op | body | string | — | Op combines the items: AND or OR. |
data.pipelines[].id | body | string | — | ID is the pipeline's id. |
data.pipelines[].name | body | string | — | Name is the pipeline's display name. |
data.pipelines[].orderId | body | integer | — | OrderID is the pipeline's 1-based position in the set. |
data.pipelines[].updatedAt | body | string (date-time) | — | UpdatedAt is when the pipeline last changed. |
data.pipelines[].updatedBy | body | string | — | UpdatedBy is the id of who last changed it. |
data.updatedAt | body | string (date-time) | — | UpdatedAt is when the version last changed. |
data.updatedBy | body | string | — | UpdatedBy is the id of who last changed it. |
data.version | body | integer | — | Version is the config version number. |
status | body | string | — | Status is "success". |
Failure carries the platform error shape — see Errors.
Examples
hanzo o11y logs pipelines createimport { Configuration, O11yApi } from 'hanzoai';
const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postO11yLogsPipelines({ pipelines: [{"alias":"<alias>","config":[{"default":null,"enable_flattening":null,"enable_paths":null,"enabled":null}],"description":"<description>","enabled":false}] });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).post_o11y_logs_pipelines(pipelines=[{"alias":"<alias>","config":[{"default":null,"enable_flattening":null,"enable_paths":null,"enabled":null}],"description":"<description>","enabled":false}])cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.O11yAPI.PostO11yLogsPipelines(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, o11y_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = o11y_api::post_o11y_logs_pipelines(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new O11yApi(client).postO11yLogsPipelines();curl -X POST https://api.hanzo.ai/v1/o11y/logs/pipelines \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pipelines": [
{
"alias": "<alias>",
"config": [
{
"default": null,
"enable_flattening": null,
"enable_paths": null,
"enabled": null
}
],
"description": "<description>",
"enabled": false
}
]
}'The door reaches o11y through the o11y tool, which names its 340 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_o11y_alert_last"
}
}
}'How is this guide?