openapi: 3.1.0 info: title: Kuma Dataplane MeshTrace API description: Kuma API version: v1alpha1 x-ref-schema-name: DataplaneOverview security: - BasicAuth: [] - BearerAuth: [] - {} tags: - name: MeshTrace paths: /meshes/{mesh}/meshtraces/{name}: get: operationId: getMeshTrace summary: Returns MeshTrace entity tags: - MeshTrace parameters: - in: path name: mesh schema: type: string required: true description: name of the mesh - in: path name: name schema: type: string required: true description: name of the MeshTrace responses: '200': $ref: '#/components/responses/MeshTraceItem' '404': $ref: '#/components/responses/NotFound' put: operationId: putMeshTrace summary: Creates or Updates MeshTrace entity tags: - MeshTrace parameters: - in: path name: mesh schema: type: string required: true description: name of the mesh - in: path name: name schema: type: string required: true description: name of the MeshTrace requestBody: description: Put request required: true content: application/json: schema: $ref: '#/components/schemas/MeshTraceItem' responses: '200': $ref: '#/components/responses/MeshTraceCreateOrUpdateSuccessResponse' '201': $ref: '#/components/responses/MeshTraceCreateOrUpdateSuccessResponse' delete: operationId: deleteMeshTrace summary: Deletes MeshTrace entity tags: - MeshTrace parameters: - in: path name: mesh schema: type: string required: true description: name of the mesh - in: path name: name schema: type: string required: true description: name of the MeshTrace responses: '200': $ref: '#/components/responses/MeshTraceDeleteSuccessResponse' '404': $ref: '#/components/responses/NotFound' /meshes/{mesh}/meshtraces: get: operationId: getMeshTraceList summary: Returns a list of MeshTrace in the mesh. tags: - MeshTrace parameters: - in: query name: offset description: offset in the list of entities required: false schema: type: integer example: 0 - in: query name: size description: the number of items per page required: false schema: type: integer default: 100 maximum: 1000 minimum: 1 - in: query name: filter description: filter by labels when multiple filters are present, they are ANDed required: false schema: type: object properties: key: type: string value: type: string example: label.k8s.kuma.io/namespace: my-ns - in: path name: mesh schema: type: string required: true description: name of the mesh responses: '200': $ref: '#/components/responses/MeshTraceList' components: responses: NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/NotFoundError' MeshTraceDeleteSuccessResponse: description: Successful response content: application/json: schema: type: object MeshTraceCreateOrUpdateSuccessResponse: description: Successful response content: application/json: schema: type: object properties: warnings: type: array readOnly: true description: 'warnings is a list of warning messages to return to the requesting Kuma API clients. Warning messages describe a problem the client making the API request should correct or be aware of. ' items: type: string MeshTraceList: description: List content: application/json: schema: type: object properties: items: type: array items: $ref: '#/components/schemas/MeshTraceItem' total: type: number description: The total number of entities next: type: string description: URL to the next page MeshTraceItem: description: Successful response content: application/json: schema: $ref: '#/components/schemas/MeshTraceItem' schemas: NotFoundError: allOf: - $ref: '#/components/schemas/Error' - type: object properties: status: type: integer enum: - 404 example: 404 description: 'The HTTP status code for NotFoundError MUST be 404. ' title: type: string example: Not Found type: type: string example: https://httpstatuses.com/404 detail: type: string example: The requested resource was not found MeshTraceItem: type: object description: MeshTrace enables distributed tracing to track requests as they flow through multiple services in the mesh. It supports exporting trace data to backends like Zipkin, Datadog, and OpenTelemetry, with configurable sampling rates and custom tags for detailed observability and debugging of service interactions. required: - type - name - spec properties: type: description: the type of the resource type: string enum: - MeshTrace mesh: description: Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources. type: string default: default kri: description: A unique identifier for this resource instance used by internal tooling and integrations. Typically derived from resource attributes and may be used for cross-references or indexing type: string readOnly: true example: kri_mtr_default_zone-east_kuma-demo_mypolicy1_ name: description: Name of the Kuma resource type: string labels: additionalProperties: type: string description: The labels to help identity resources type: object spec: description: Spec is the specification of the Kuma MeshTrace resource. properties: default: description: MeshTrace configuration. properties: backends: description: 'A one element array of backend definition. Envoy allows configuring only 1 backend, so the natural way of representing that would be just one object. Unfortunately due to the reasons explained in MADR 009-tracing-policy this has to be a one element array for now.' items: description: Only one of zipkin, datadog or openTelemetry can be used. properties: datadog: description: Datadog backend configuration. properties: splitService: default: false description: 'Determines if datadog service name should be split based on traffic direction and destination. For example, with `splitService: true` and a `backend` service that communicates with a couple of databases, you would get service names like `backend_INBOUND`, `backend_OUTBOUND_db1`, and `backend_OUTBOUND_db2` in Datadog.' type: boolean url: description: 'Address of Datadog collector, only host and port are allowed (no paths, fragments etc.)' type: string required: - url type: object openTelemetry: description: OpenTelemetry backend configuration. properties: backendRef: description: 'BackendRef is a reference to a MeshOpenTelemetryBackend resource that defines the collector endpoint. Mutually exclusive with Endpoint.' properties: kind: description: Kind of the backend resource. enum: - MeshOpenTelemetryBackend type: string labels: additionalProperties: type: string description: 'Labels to match the referenced resource. Use for cross-zone references where KDS adds a hash suffix to metadata.name. Mutually exclusive with Name. When multiple resources match, the oldest by creation time wins.' type: object name: description: 'Name of the referenced resource (metadata.name). Use for same-cluster references. Mutually exclusive with Labels.' type: string required: - kind type: object endpoint: default: '' description: 'Address of OpenTelemetry collector. Deprecated: use BackendRef instead.' example: otel-collector:4317 type: string type: object type: enum: - Zipkin - Datadog - OpenTelemetry type: string zipkin: description: Zipkin backend configuration. properties: apiVersion: default: httpJson description: 'Version of the API. https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L66' enum: - httpJson - httpProto type: string sharedSpanContext: default: true description: 'Determines whether client and server spans will share the same span context. https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L63' type: boolean traceId128bit: default: false description: Generate 128bit traces. type: boolean url: description: Address of Zipkin collector. type: string required: - url type: object required: - type type: object maxItems: 1 type: array sampling: description: 'Sampling configuration. Sampling is the process by which a decision is made on whether to process/export a span or not.' properties: client: anyOf: - type: integer - type: string description: 'Target percentage of requests that will be force traced if the ''x-client-trace-id'' header is set. Mirror of client_sampling in Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L127-L133 Either int or decimal represented as string. If not specified then the default value is 100.' x-kubernetes-int-or-string: true overall: anyOf: - type: integer - type: string description: 'Target percentage of requests will be traced after all other sampling checks have been applied (client, force tracing, random sampling). This field functions as an upper limit on the total configured sampling rate. For instance, setting client to 100 but overall to 1 will result in only 1% of client requests with the appropriate headers to be force traced. Mirror of overall_sampling in Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L142-L150 Either int or decimal represented as string. If not specified then the default value is 100.' x-kubernetes-int-or-string: true random: anyOf: - type: integer - type: string description: 'Target percentage of requests that will be randomly selected for trace generation, if not requested by the client or not forced. Mirror of random_sampling in Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L135-L140 Either int or decimal represented as string. If not specified then the default value is 100.' x-kubernetes-int-or-string: true type: object tags: description: 'Custom tags configuration. You can add custom tags to traces based on headers or literal values.' items: description: 'Custom tags configuration. Only one of literal or header can be used.' properties: header: description: Tag taken from a header. properties: default: description: 'Default value to use if header is missing. If the default is missing and there is no value the tag will not be included.' type: string name: description: Name of the header. type: string required: - name type: object literal: description: Tag taken from literal value. type: string name: description: Name of the tag. type: string required: - name type: object type: array type: object targetRef: description: 'TargetRef is a reference to the resource the policy takes an effect on. The resource could be either a real store object or virtual resource defined inplace.' properties: kind: description: Kind of the referenced resource enum: - Mesh - MeshSubset - MeshGateway - MeshService - MeshExternalService - MeshMultiZoneService - MeshServiceSubset - MeshHTTPRoute - Dataplane type: string labels: additionalProperties: type: string description: 'Labels are used to select group of MeshServices that match labels. Either Labels or Name and Namespace can be used.' type: object mesh: description: Mesh is reserved for future use to identify cross mesh resources. type: string name: description: 'Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and `MeshGatewayRoute`' type: string namespace: description: 'Namespace specifies the namespace of target resource. If empty only resources in policy namespace will be targeted.' type: string proxyTypes: description: 'ProxyTypes specifies the data plane types that are subject to the policy. When not specified, all data plane types are targeted by the policy.' items: enum: - Sidecar - Gateway type: string type: array sectionName: description: 'SectionName is used to target specific section of resource. For example, you can target port from MeshService.ports[] by its name. Only traffic to this port will be affected.' type: string tags: additionalProperties: type: string description: 'Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshServiceSubset`' type: object required: - kind type: object type: object creationTime: readOnly: true type: string description: Time at which the resource was created format: date-time example: '0001-01-01T00:00:00Z' modificationTime: readOnly: true type: string description: Time at which the resource was updated format: date-time example: '0001-01-01T00:00:00Z' status: description: Status is the current status of the Kuma MeshTrace resource. properties: conditions: items: properties: message: description: 'message is a human readable message indicating details about the transition. This may be an empty string.' maxLength: 32768 type: string reason: description: 'reason contains a programmatic identifier indicating the reason for the condition''s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.' maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - 'True' - 'False' - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - message - reason - status - type type: object type: array type: object readOnly: true InvalidParameters: type: object title: Invalid Parameters required: - field - reason - source properties: field: type: string description: The name of the field that caused the error. reason: type: string description: 'A short, human-readable description of the problem. _Should_ be provided as "Sentence case" for direct use in a UI. ' rule: type: string description: 'May be provided as a hint to the user to help understand the type of failure. Additional guidance may be provided in additional fields, i.e. `choices`. ' choices: type: array description: 'Optional field to provide a list of valid choices for the field that caused the error. ' items: type: string source: type: string description: 'The location of the field that caused the error. ' enum: - body - query - header - path Error: type: object title: Error description: 'Standard error. Follows the [AIP #193 - Errors](https://kong-aip.netlify.app/aip/193/) specification. ' x-examples: Example 1: status: 404 title: Not Found type: https://kongapi.info/konnect/not-found instance: portal:trace:2287285207635123011 detail: The requested document was not found required: - status - title - instance - type - detail properties: status: type: integer description: The HTTP status code. example: 404 title: type: string description: 'A short, human-readable summary of the problem. It **should not** change between occurrences of a problem, except for localization. Should be provided as "Sentence case" for potential direct use in a UI ' example: Not Found type: type: string description: 'A unique identifier for this error. When dereferenced it must provide human-readable documentation for the problem. ' example: Not Found instance: type: string example: portal:trace:2287285207635123011 description: 'Used to return the correlation ID back to the user, in the format `:trace:`. ' detail: type: string example: The requested team was not found description: 'A human readable explanation specific to this occurrence of the problem. This field may contain request/entity data to help the user understand what went wrong. Enclose variable values in square brackets. _Should_ be provided as "Sentence case" for direct use in a UI ' invalid_parameters: type: array description: 'All 400 errors **MUST** return an `invalid_parameters` key in the response. Used to indicate which fields have invalid values when validated. ' items: $ref: '#/components/schemas/InvalidParameters' securitySchemes: BasicAuth: type: http scheme: basic BearerAuth: type: http scheme: bearer