naftiko: 1.0.0-alpha2 info: label: openobserve — Traces description: 'openobserve — Traces. 6 operations. Lead operation: Get current service graph topology. Self-contained Naftiko capability covering one Openobserve business surface.' tags: - Openobserve - Traces created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: OPENOBSERVE_API_KEY: OPENOBSERVE_API_KEY capability: consumes: - type: http namespace: openobserve-traces baseUri: '' description: openobserve — Traces business capability. Self-contained, no shared references. resources: - name: api-org_id-traces-service_graph-topology-current path: /api/{org_id}/traces/service_graph/topology/current operations: - name: getcurrentservicegraphtopology method: GET description: Get current service graph topology outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string description: Organization name required: true - name: stream_name in: query type: string description: Optional stream name to filter service graph topology - name: api-org_id-v1-traces path: /api/{org_id}/v1/traces operations: - name: posttraces method: POST description: Ingest trace data outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: api-org_id-stream_name-traces-latest path: /api/{org_id}/{stream_name}/traces/latest operations: - name: getlatesttraces method: GET description: Get recent trace data outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string description: Organization name required: true - name: stream_name in: path type: string description: Stream name required: true - name: filter in: query type: string description: 'filter, eg: a=b AND c=d' - name: from in: query type: integer description: from required: true - name: size in: query type: integer description: size required: true - name: start_time in: query type: integer description: start time required: true - name: end_time in: query type: integer description: end time required: true - name: timeout in: query type: integer description: timeout, seconds - name: sort_by in: query type: string description: 'sort by field: start_time, duration (default: start_time)' - name: sort_order in: query type: string description: 'sort order: asc, desc (default: desc)' - name: api-org_id-stream_name-traces-session path: /api/{org_id}/{stream_name}/traces/session operations: - name: getlatestsessions method: GET description: Get recent session data outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string description: Organization name required: true - name: stream_name in: path type: string description: Stream name required: true - name: filter in: query type: string description: 'filter, eg: a=b AND c=d' - name: from in: query type: integer description: from required: true - name: size in: query type: integer description: size required: true - name: start_time in: query type: integer description: start time required: true - name: end_time in: query type: integer description: end time required: true - name: timeout in: query type: integer description: timeout, seconds - name: api-org_id-stream_name-traces-user path: /api/{org_id}/{stream_name}/traces/user operations: - name: getlatestusers method: GET description: Get recent user data outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string description: Organization name required: true - name: stream_name in: path type: string description: Stream name required: true - name: filter in: query type: string description: 'filter, eg: a=b AND c=d' - name: from in: query type: integer description: from required: true - name: size in: query type: integer description: size required: true - name: start_time in: query type: integer description: start time required: true - name: end_time in: query type: integer description: end time required: true - name: timeout in: query type: integer description: timeout, seconds - name: api-org_id-stream_name-traces-trace_id-dag path: /api/{org_id}/{stream_name}/traces/{trace_id}/dag operations: - name: gettracedag method: GET description: Get trace DAG structure outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: string description: Organization name required: true - name: stream_name in: path type: string description: Stream name required: true - name: trace_id in: path type: string description: Trace ID required: true - name: start_time in: query type: integer description: start time in microseconds required: true - name: end_time in: query type: integer description: end time in microseconds required: true - name: timeout in: query type: integer description: timeout, seconds authentication: type: apikey key: Authorization value: '{{env.OPENOBSERVE_API_KEY}}' placement: header exposes: - type: rest namespace: openobserve-traces-rest port: 8080 description: REST adapter for openobserve — Traces. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/{org-id}/traces/service-graph/topology/current name: api-org-id-traces-service-graph-topology-current description: REST surface for api-org_id-traces-service_graph-topology-current. operations: - method: GET name: getcurrentservicegraphtopology description: Get current service graph topology call: openobserve-traces.getcurrentservicegraphtopology with: org_id: rest.org_id stream_name: rest.stream_name outputParameters: - type: object mapping: $. - path: /v1/api/{org-id}/v1/traces name: api-org-id-v1-traces description: REST surface for api-org_id-v1-traces. operations: - method: POST name: posttraces description: Ingest trace data call: openobserve-traces.posttraces with: org_id: rest.org_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/{org-id}/{stream-name}/traces/latest name: api-org-id-stream-name-traces-latest description: REST surface for api-org_id-stream_name-traces-latest. operations: - method: GET name: getlatesttraces description: Get recent trace data call: openobserve-traces.getlatesttraces with: org_id: rest.org_id stream_name: rest.stream_name filter: rest.filter from: rest.from size: rest.size start_time: rest.start_time end_time: rest.end_time timeout: rest.timeout sort_by: rest.sort_by sort_order: rest.sort_order outputParameters: - type: object mapping: $. - path: /v1/api/{org-id}/{stream-name}/traces/session name: api-org-id-stream-name-traces-session description: REST surface for api-org_id-stream_name-traces-session. operations: - method: GET name: getlatestsessions description: Get recent session data call: openobserve-traces.getlatestsessions with: org_id: rest.org_id stream_name: rest.stream_name filter: rest.filter from: rest.from size: rest.size start_time: rest.start_time end_time: rest.end_time timeout: rest.timeout outputParameters: - type: object mapping: $. - path: /v1/api/{org-id}/{stream-name}/traces/user name: api-org-id-stream-name-traces-user description: REST surface for api-org_id-stream_name-traces-user. operations: - method: GET name: getlatestusers description: Get recent user data call: openobserve-traces.getlatestusers with: org_id: rest.org_id stream_name: rest.stream_name filter: rest.filter from: rest.from size: rest.size start_time: rest.start_time end_time: rest.end_time timeout: rest.timeout outputParameters: - type: object mapping: $. - path: /v1/api/{org-id}/{stream-name}/traces/{trace-id}/dag name: api-org-id-stream-name-traces-trace-id-dag description: REST surface for api-org_id-stream_name-traces-trace_id-dag. operations: - method: GET name: gettracedag description: Get trace DAG structure call: openobserve-traces.gettracedag with: org_id: rest.org_id stream_name: rest.stream_name trace_id: rest.trace_id start_time: rest.start_time end_time: rest.end_time timeout: rest.timeout outputParameters: - type: object mapping: $. - type: mcp namespace: openobserve-traces-mcp port: 9090 transport: http description: MCP adapter for openobserve — Traces. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-current-service-graph-topology description: Get current service graph topology hints: readOnly: true destructive: false idempotent: true call: openobserve-traces.getcurrentservicegraphtopology with: org_id: tools.org_id stream_name: tools.stream_name outputParameters: - type: object mapping: $. - name: ingest-trace-data description: Ingest trace data hints: readOnly: false destructive: false idempotent: false call: openobserve-traces.posttraces with: org_id: tools.org_id body: tools.body outputParameters: - type: object mapping: $. - name: get-recent-trace-data description: Get recent trace data hints: readOnly: true destructive: false idempotent: true call: openobserve-traces.getlatesttraces with: org_id: tools.org_id stream_name: tools.stream_name filter: tools.filter from: tools.from size: tools.size start_time: tools.start_time end_time: tools.end_time timeout: tools.timeout sort_by: tools.sort_by sort_order: tools.sort_order outputParameters: - type: object mapping: $. - name: get-recent-session-data description: Get recent session data hints: readOnly: true destructive: false idempotent: true call: openobserve-traces.getlatestsessions with: org_id: tools.org_id stream_name: tools.stream_name filter: tools.filter from: tools.from size: tools.size start_time: tools.start_time end_time: tools.end_time timeout: tools.timeout outputParameters: - type: object mapping: $. - name: get-recent-user-data description: Get recent user data hints: readOnly: true destructive: false idempotent: true call: openobserve-traces.getlatestusers with: org_id: tools.org_id stream_name: tools.stream_name filter: tools.filter from: tools.from size: tools.size start_time: tools.start_time end_time: tools.end_time timeout: tools.timeout outputParameters: - type: object mapping: $. - name: get-trace-dag-structure description: Get trace DAG structure hints: readOnly: true destructive: false idempotent: true call: openobserve-traces.gettracedag with: org_id: tools.org_id stream_name: tools.stream_name trace_id: tools.trace_id start_time: tools.start_time end_time: tools.end_time timeout: tools.timeout outputParameters: - type: object mapping: $.