Telemetry

Package: agentrouter.telemetry.v1 Service: TelemetryService

Endpoints

Create a telemetry export config

What it does: Creates a new OTel export configuration.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id scopes the request path; used for path-level validation.
project_idyesproject_id scopes the request path; used for path-level validation.
telemetry_typenotelemetry_type partitions sinks; defaults to "traces" when empty.
endpointyesendpoint is the OTLP sink URL.
protocolnoprotocol defaults to "http/protobuf" when empty.
auth_typenoauth_type defaults to "none" when empty.
auth_valuenoauth_value is the plaintext credential to encrypt at rest.
api_key_headernoapi_key_header is the header name when auth_type is api_key.
headersnoheaders is sugar for the CLI: any of these are appended as basic headers on outbound exports. Currently advisory -- the backing configuration carries auth_type + auth_value.
enablednoenabled toggles the configuration; defaults to true when unset. Use the "yes"/"no"/"true"/"false" CLI form; absent is treated as true.

Response fields:

FieldRequiredDescription
idnoid is the server-assigned unique identifier for this config row.
user_idnouser_id is the owning (authenticated) caller; the row key.
telemetry_typenotelemetry_type partitions sinks for traces, metrics, logs.
sink_urlnosink_url is the destination OTLP endpoint.
protocolnoprotocol is one of: grpc, http/json, http/protobuf.
auth_typenoauth_type is one of: none, bearer, basic, api_key.
auth_valuenoauth_value is a secret reference. Returned on Get / Create. Empty on List (avoid leakage in bulk reads).
api_key_headernoapi_key_header is the header name for api_key auth (defaults to X-API-Key).
enablednoenabled indicates whether exports to this sink are active.
last_checked_atnolast_checked_at is when the sink's reachability was last probed.
statusnostatus is one of: connected, disconnected, error, testing.
created_atnocreated_at is when this config was first created.
updated_atnoupdated_at is when this config was last modified.
{"signatures":{"go":"func (t *TelemetryClient) Create(ctx context.Context, req *telemetryv1.CreateTelemetryConfigRequest) (*telemetryv1.TelemetryConfig, error)","python":"create(customer_id: str, project_id: str, endpoint: str, telemetry_type: str, protocol: str, auth_type: str, auth_value: str, api_key_header: str, enabled: bool) -\u003e TelemetryConfig","typescript":"create(req: { customerId: string projectId: string endpoint: string telemetryType?: string protocol?: string authType?: string authValue?: string apiKeyHeader?: string enabled?: boolean }): Promise\u003cTelemetryConfig\u003e","cli":"tare api telemetry create --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --endpoint $ENDPOINT","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"telemetry_type\": \"...\",\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"headers\": {},\n    \"enabled\": false\n  }'"},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n\ttelemetryv1 \"github.com/tetrateio/agentrouter-go/genapi/api/tars/telemetry/v1\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\t// Populate the request fields -- see the \"Request fields\" table above for\n\t// the available fields and which are required.\n\treq := \u0026telemetryv1.CreateTelemetryConfigRequest{}\n\n\tresp, err := client.Telemetry().Create(ctx, req)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", resp)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/telemetry/createtelemetryconfig\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ncustomer_id = \"cust_01H...\"\nproject_id = \"proj_01H...\"\nendpoint = \"...\"\ntelemetry_type = \"...\"\nprotocol = \"...\"\nauth_type = \"...\"\nauth_value = \"...\"\napi_key_header = \"...\"\nenabled = \"...\"\ntry:\n    result = client.telemetry.create(customer_id, project_id, endpoint, telemetry_type, protocol, auth_type, auth_value, api_key_header, enabled)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Populate the request fields -- see the \"Request fields\" table above\n// for the available fields and which are required.\nconst req = {}\ntry {\n  const result = await client.telemetry.create(req)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"telemetry\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api telemetry create --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --endpoint $ENDPOINT","curl":"curl -X POST \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"telemetry_type\": \"...\",\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"headers\": {},\n    \"enabled\": false\n  }'"},"persona":"Authenticated (API key or session token)","httpVerb":"POST","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry","slug":"create-a-telemetry-export-config"}

List telemetry export configs

What it does: Lists every configuration owned by the caller within the (customer, project) scope.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id scopes the request path; used for path-level validation.
project_idyesproject_id scopes the request path; used for path-level validation.
telemetry_typenoOptional telemetry_type filter.
enablednoenabled is a tri-state encoded as a string: "" (no filter), "true", "false". Avoids optional bool because the CLI generator does not yet emit pointer assignments.

Response fields:

FieldRequiredDescription
configsnoconfigs is the matching set of configs owned by the caller.
totalnototal is the count of returned configs.
{"signatures":{"go":"func (t *TelemetryClient) List(ctx context.Context, customerID, projectID, telemetryType, enabled string) (*telemetryv1.ListTelemetryConfigsResponse, error)","python":"list(customer_id: str, project_id: str, telemetry_type: str, enabled: str) -\u003e ListTelemetryConfigsResponse","typescript":"list(customerId: string, projectId: string, telemetryType, enabled): Promise\u003cListTelemetryConfigsResponse\u003e","cli":"tare api telemetry list --customer-id $CUSTOMER_ID --project-id $PROJECT_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tCustomerID    string\n\tProjectID     string\n\tTelemetryType string\n\tEnabled       string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tCustomerID:    \"cust_01H...\",\n\t\tProjectID:     \"proj_01H...\",\n\t\tTelemetryType: \"...\",\n\t\tEnabled:       \"...\",\n\t}\n\n\tcustomerID := in.CustomerID\n\tprojectID := in.ProjectID\n\ttelemetryType := in.TelemetryType\n\tenabled := in.Enabled\n\tresult, err := client.Telemetry().List(ctx, customerID, projectID, telemetryType, enabled)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/telemetry/listtelemetryconfigs\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ncustomer_id = \"cust_01H...\"\nproject_id = \"proj_01H...\"\ntelemetry_type = \"...\"\nenabled = \"...\"\ntry:\n    result = client.telemetry.list(customer_id, project_id, telemetry_type, enabled)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst customerId = \"cust_01H...\"\nconst projectId = \"proj_01H...\"\nconst telemetryType = \"...\"\nconst enabled = \"...\"\ntry {\n  const result = await client.telemetry.list(customerId, projectId, telemetryType, enabled)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"telemetry\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api telemetry list --customer-id $CUSTOMER_ID --project-id $PROJECT_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Authenticated (API key or session token)","httpVerb":"GET","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry","slug":"list-telemetry-export-configs"}

Get a telemetry export config

What it does: Returns a single configuration by id.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id scopes the request path; used for path-level validation.
project_idyesproject_id scopes the request path; used for path-level validation.
config_idyesconfig_id is the id of the config to fetch.

Response fields:

FieldRequiredDescription
idnoid is the server-assigned unique identifier for this config row.
user_idnouser_id is the owning (authenticated) caller; the row key.
telemetry_typenotelemetry_type partitions sinks for traces, metrics, logs.
sink_urlnosink_url is the destination OTLP endpoint.
protocolnoprotocol is one of: grpc, http/json, http/protobuf.
auth_typenoauth_type is one of: none, bearer, basic, api_key.
auth_valuenoauth_value is a secret reference. Returned on Get / Create. Empty on List (avoid leakage in bulk reads).
api_key_headernoapi_key_header is the header name for api_key auth (defaults to X-API-Key).
enablednoenabled indicates whether exports to this sink are active.
last_checked_atnolast_checked_at is when the sink's reachability was last probed.
statusnostatus is one of: connected, disconnected, error, testing.
created_atnocreated_at is when this config was first created.
updated_atnoupdated_at is when this config was last modified.
{"signatures":{"go":"func (t *TelemetryClient) Get(ctx context.Context, customerID, projectID, configID string) (*telemetryv1.TelemetryConfig, error)","python":"get(customer_id: str, project_id: str, config_id: str) -\u003e TelemetryConfig","typescript":"get(customerId: string, projectId: string, configId: string): Promise\u003cTelemetryConfig\u003e","cli":"tare api telemetry get --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tCustomerID string\n\tProjectID  string\n\tConfigID   string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tCustomerID: \"cust_01H...\",\n\t\tProjectID:  \"proj_01H...\",\n\t\tConfigID:   \"...\",\n\t}\n\n\tcustomerID := in.CustomerID\n\tprojectID := in.ProjectID\n\tconfigID := in.ConfigID\n\tresult, err := client.Telemetry().Get(ctx, customerID, projectID, configID)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/telemetry/gettelemetryconfig\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ncustomer_id = \"cust_01H...\"\nproject_id = \"proj_01H...\"\nconfig_id = \"...\"\ntry:\n    result = client.telemetry.get(customer_id, project_id, config_id)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst customerId = \"cust_01H...\"\nconst projectId = \"proj_01H...\"\nconst configId = \"...\"\ntry {\n  const result = await client.telemetry.get(customerId, projectId, configId)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"telemetry\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api telemetry get --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Authenticated (API key or session token)","httpVerb":"GET","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry/{config_id}","slug":"get-a-telemetry-export-config"}

Update a telemetry export config

What it does: Updates a configuration's mutable fields.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id scopes the request path; used for path-level validation.
project_idyesproject_id scopes the request path; used for path-level validation.
config_idyesconfig_id is the id of the config to update.
endpointnoEmpty string means "leave unchanged".
protocolnoprotocol -- empty leaves unchanged; otherwise grpc, http/json, http/protobuf.
auth_typenoauth_type -- empty leaves unchanged; otherwise none, bearer, basic, api_key.
auth_valuenoauth_value -- new plaintext credential to encrypt; empty leaves unchanged.
api_key_headernoapi_key_header -- header name for api_key auth; empty leaves unchanged.
enablednoenabled tri-state encoded as "" (unchanged), "true", "false".
statusnostatus -- reported connection state; empty leaves unchanged.

Response fields:

FieldRequiredDescription
idnoid is the server-assigned unique identifier for this config row.
user_idnouser_id is the owning (authenticated) caller; the row key.
telemetry_typenotelemetry_type partitions sinks for traces, metrics, logs.
sink_urlnosink_url is the destination OTLP endpoint.
protocolnoprotocol is one of: grpc, http/json, http/protobuf.
auth_typenoauth_type is one of: none, bearer, basic, api_key.
auth_valuenoauth_value is a secret reference. Returned on Get / Create. Empty on List (avoid leakage in bulk reads).
api_key_headernoapi_key_header is the header name for api_key auth (defaults to X-API-Key).
enablednoenabled indicates whether exports to this sink are active.
last_checked_atnolast_checked_at is when the sink's reachability was last probed.
statusnostatus is one of: connected, disconnected, error, testing.
created_atnocreated_at is when this config was first created.
updated_atnoupdated_at is when this config was last modified.
{"signatures":{"go":"func (t *TelemetryClient) Update(ctx context.Context, req *telemetryv1.UpdateTelemetryConfigRequest) (*telemetryv1.TelemetryConfig, error)","python":"update(customer_id: str, project_id: str, config_id: str, endpoint: str, protocol: str, auth_type: str, auth_value: str, api_key_header: str, enabled: str, status: str) -\u003e TelemetryConfig","typescript":"update(req: { customerId: string projectId: string configId: string endpoint?: string protocol?: string authType?: string authValue?: string apiKeyHeader?: string enabled?: string status?: string }): Promise\u003cTelemetryConfig\u003e","cli":"tare api telemetry update --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl -X PATCH \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"enabled\": \"...\",\n    \"status\": \"...\"\n  }'"},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n\ttelemetryv1 \"github.com/tetrateio/agentrouter-go/genapi/api/tars/telemetry/v1\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\t// Populate the request fields -- see the \"Request fields\" table above for\n\t// the available fields and which are required.\n\treq := \u0026telemetryv1.UpdateTelemetryConfigRequest{}\n\n\tresp, err := client.Telemetry().Update(ctx, req)\n\tif err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Printf(\"%+v\\n\", resp)\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/telemetry/updatetelemetryconfig\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ncustomer_id = \"cust_01H...\"\nproject_id = \"proj_01H...\"\nconfig_id = \"...\"\nendpoint = \"...\"\nprotocol = \"...\"\nauth_type = \"...\"\nauth_value = \"...\"\napi_key_header = \"...\"\nenabled = \"...\"\nstatus = \"...\"\ntry:\n    result = client.telemetry.update(customer_id, project_id, config_id, endpoint, protocol, auth_type, auth_value, api_key_header, enabled, status)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Populate the request fields -- see the \"Request fields\" table above\n// for the available fields and which are required.\nconst req = {}\ntry {\n  const result = await client.telemetry.update(req)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"telemetry\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api telemetry update --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl -X PATCH \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"enabled\": \"...\",\n    \"status\": \"...\"\n  }'"},"persona":"Authenticated (API key or session token)","httpVerb":"PATCH","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry/{config_id}","slug":"update-a-telemetry-export-config"}

Delete a telemetry export config

What it does: Removes a configuration.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id scopes the request path; used for path-level validation.
project_idyesproject_id scopes the request path; used for path-level validation.
config_idyesconfig_id is the id of the config to delete.
{"signatures":{"go":"func (t *TelemetryClient) Delete(ctx context.Context, customerID, projectID, configID string) error","python":"delete(customer_id: str, project_id: str, config_id: str) -\u003e None","typescript":"delete(customerId: string, projectId: string, configId: string): Promise\u003cvoid\u003e","cli":"tare api telemetry delete --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl -X DELETE \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":{"files":[{"name":"main.go","content":"// Command example is a runnable example for the AgentRouter Go SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then `go run .`.\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tagentrouter \"github.com/tetrateio/agentrouter-go\"\n)\n\n// input holds the request fields. Replace the placeholder values below.\ntype input struct {\n\tCustomerID string\n\tProjectID  string\n\tConfigID   string\n}\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := agentrouter.New(ctx,\n\t\tagentrouter.WithBaseURL(os.Getenv(\"AGENTROUTER_BASE_URL\")),\n\t\tagentrouter.WithAPIKey(os.Getenv(\"AGENTROUTER_API_KEY\")),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"client: %v\", err)\n\t}\n\n\tin := input{\n\t\tCustomerID: \"cust_01H...\",\n\t\tProjectID:  \"proj_01H...\",\n\t\tConfigID:   \"...\",\n\t}\n\n\tcustomerID := in.CustomerID\n\tprojectID := in.ProjectID\n\tconfigID := in.ConfigID\n\tif err := client.Telemetry().Delete(ctx, customerID, projectID, configID); err != nil {\n\t\tlog.Fatalf(\"call: %v\", err)\n\t}\n\n\tfmt.Println(\"ok\")\n}\n"},{"name":"go.mod","content":"module github.com/tetrateio/agentrouter-go-examples/telemetry/deletetelemetryconfig\n\ngo 1.26\n\nrequire github.com/tetrateio/agentrouter-go v0.1.1\n\n// Point this at the directory you extracted the downloaded Go SDK tarball into.\n// The directory name matches the tarball stem on the Download SDK page.\nreplace github.com/tetrateio/agentrouter-go =\u003e ./third_party/agentrouter-go-0.1.1\n"}]},"python":{"files":[{"name":"main.py","content":"\"\"\"Runnable example for the AgentRouter Python SDK.\n\nSet AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `python main.py`.\n\"\"\"\nimport os\n\nfrom agentrouter_sdk import Client\n\nclient = Client(\n    base_url=os.environ[\"AGENTROUTER_BASE_URL\"],\n    api_key=os.environ[\"AGENTROUTER_API_KEY\"],\n)\n\n# Replace the placeholder values below.\ncustomer_id = \"cust_01H...\"\nproject_id = \"proj_01H...\"\nconfig_id = \"...\"\ntry:\n    result = client.telemetry.delete(customer_id, project_id, config_id)\n    print(result)\nexcept Exception as err:\n    print(\"Error:\", err)\n"},{"name":"requirements.txt","content":"# Point this at the directory you extracted the downloaded Python SDK tarball\n# into. The directory name matches the tarball stem on the Download SDK page.\n# To install instead from PyPI once published, replace the line below with:\n#   agentrouter-sdk\u003e=0.1.0\nagentrouter-sdk @ file:./third_party/agentrouter-python-0.1.1\n"}]},"typescript":{"files":[{"name":"index.ts","content":"// Runnable example for the AgentRouter TypeScript SDK.\n// Set AGENTROUTER_BASE_URL and AGENTROUTER_API_KEY in the environment, then run `npm install \u0026\u0026 npx tsx index.ts`.\nimport { Client } from '@tetrate/agentrouter-sdk'\n\nconst client = new Client({\n  baseUrl: process.env.AGENTROUTER_BASE_URL,\n  apiKey: process.env.AGENTROUTER_API_KEY,\n})\n\n// Replace the placeholder values below.\nconst customerId = \"cust_01H...\"\nconst projectId = \"proj_01H...\"\nconst configId = \"...\"\ntry {\n  const result = await client.telemetry.delete(customerId, projectId, configId)\n  console.log(result)\n} catch (err) {\n  console.error('Error:', err)\n}\n"},{"name":"package.json","content":"{\n  \"name\": \"telemetry\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@tetrate/agentrouter-sdk\": \"file:./third_party/agentrouter-typescript-0.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.0.0\",\n    \"typescript\": \"^5.4.0\"\n  }\n}\n"},{"name":"tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n"}]},"cli":"tare api telemetry delete --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --config-id $CONFIG_ID","curl":"curl -X DELETE \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/01H...\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Authenticated (API key or session token)","httpVerb":"DELETE","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry/{config_id}","slug":"delete-a-telemetry-export-config"}

Set the project telemetry export config

What it does: Upserts the PROJECT-level telemetry export config (the shared default applied to project members who have no config of their own). Project-owner-tier: only the project's owner may set it. A user's own per-user config OVERRIDES this at emit time.

Request fields:

FieldRequiredDescription
customer_idyescustomer_id identifies the project's customer.
project_idyesproject_id identifies the project whose shared config is being set.
telemetry_typenotelemetry_type partitions sinks; defaults to "traces" when empty.
endpointyesendpoint is the OTLP sink URL.
protocolnoprotocol defaults to "http/protobuf" when empty.
auth_typenoauth_type defaults to "none" when empty.
auth_valuenoauth_value is the plaintext credential to encrypt at rest.
api_key_headernoapi_key_header is the header name when auth_type is api_key.
enablednoenabled toggles the configuration; defaults to true when unset.

Response fields:

FieldRequiredDescription
idnoid is the server-assigned unique identifier for this config row.
user_idnouser_id is the owning (authenticated) caller; the row key.
telemetry_typenotelemetry_type partitions sinks for traces, metrics, logs.
sink_urlnosink_url is the destination OTLP endpoint.
protocolnoprotocol is one of: grpc, http/json, http/protobuf.
auth_typenoauth_type is one of: none, bearer, basic, api_key.
auth_valuenoauth_value is a secret reference. Returned on Get / Create. Empty on List (avoid leakage in bulk reads).
api_key_headernoapi_key_header is the header name for api_key auth (defaults to X-API-Key).
enablednoenabled indicates whether exports to this sink are active.
last_checked_atnolast_checked_at is when the sink's reachability was last probed.
statusnostatus is one of: connected, disconnected, error, testing.
created_atnocreated_at is when this config was first created.
updated_atnoupdated_at is when this config was last modified.
{"signatures":{"go":"c.Telemetry().SetProjectTelemetryConfig(ctx, \u0026telemetryv1.SetProjectTelemetryConfigRequest{...})","python":"client.telemetry.setprojecttelemetryconfig(...)","typescript":"client.telemetry.setprojecttelemetryconfig({...})","cli":"tare api telemetry set-project --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --endpoint $ENDPOINT","curl":"curl -X PUT \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/project\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"telemetry_type\": \"...\",\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"enabled\": false\n  }'"},"examples":{"go":"// No Go SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","python":"# No Python SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","typescript":"// No TypeScript SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","cli":"tare api telemetry set-project --customer-id $CUSTOMER_ID --project-id $PROJECT_ID --endpoint $ENDPOINT","curl":"curl -X PUT \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/project\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"telemetry_type\": \"...\",\n    \"endpoint\": \"...\",\n    \"protocol\": \"...\",\n    \"auth_type\": \"...\",\n    \"auth_value\": \"...\",\n    \"api_key_header\": \"...\",\n    \"enabled\": false\n  }'"},"persona":"Authenticated (API key or session token)","httpVerb":"PUT","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry/project","slug":"set-the-project-telemetry-export-config"}

Get the project telemetry export config

What it does: Returns the PROJECT-level telemetry config. Project-owner-tier (the shared project default is managed by owners).

Request fields:

FieldRequiredDescription
customer_idyescustomer_id identifies the project's customer.
project_idyesproject_id identifies the project whose shared config is requested.
telemetry_typenotelemetry_type partitions sinks; defaults to "traces" when empty.

Response fields:

FieldRequiredDescription
idnoid is the server-assigned unique identifier for this config row.
user_idnouser_id is the owning (authenticated) caller; the row key.
telemetry_typenotelemetry_type partitions sinks for traces, metrics, logs.
sink_urlnosink_url is the destination OTLP endpoint.
protocolnoprotocol is one of: grpc, http/json, http/protobuf.
auth_typenoauth_type is one of: none, bearer, basic, api_key.
auth_valuenoauth_value is a secret reference. Returned on Get / Create. Empty on List (avoid leakage in bulk reads).
api_key_headernoapi_key_header is the header name for api_key auth (defaults to X-API-Key).
enablednoenabled indicates whether exports to this sink are active.
last_checked_atnolast_checked_at is when the sink's reachability was last probed.
statusnostatus is one of: connected, disconnected, error, testing.
created_atnocreated_at is when this config was first created.
updated_atnoupdated_at is when this config was last modified.
{"signatures":{"go":"c.Telemetry().GetProjectTelemetryConfig(ctx, \u0026telemetryv1.GetProjectTelemetryConfigRequest{...})","python":"client.telemetry.getprojecttelemetryconfig(...)","typescript":"client.telemetry.getprojecttelemetryconfig({...})","cli":"tare api telemetry get-project --customer-id $CUSTOMER_ID --project-id $PROJECT_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/project\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"examples":{"go":"// No Go SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","python":"# No Python SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","typescript":"// No TypeScript SDK wrapper for TelemetryService yet -- use the CLI or curl example below.","cli":"tare api telemetry get-project --customer-id $CUSTOMER_ID --project-id $PROJECT_ID","curl":"curl \"${AGENTROUTER_BASE_URL}/v1/customers/cust_01H.../projects/proj_01H.../telemetry/project\" \\\n  -H \"Authorization: Bearer ${AGENTROUTER_API_KEY}\""},"persona":"Authenticated (API key or session token)","httpVerb":"GET","httpPath":"/v1/customers/{customer_id}/projects/{project_id}/telemetry/project","slug":"get-the-project-telemetry-export-config"}