Kuma MeshTrace API

The MeshTrace API from Kuma — 2 operation(s) for meshtrace.

OpenAPI Specification

kuma-meshtrace-api-openapi.yml Raw ↑
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 `<app>:trace:<correlation_id>`.

            '
        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