Kuma Mesh API

The Mesh API from Kuma — 2 operation(s) for mesh.

OpenAPI Specification

kuma-mesh-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kuma Dataplane Mesh API
  description: Kuma API
  version: v1alpha1
  x-ref-schema-name: DataplaneOverview
security:
- BasicAuth: []
- BearerAuth: []
- {}
tags:
- name: Mesh
paths:
  /meshes:
    get:
      operationId: getMeshList
      parameters:
      - description: offset in the list of entities
        example: 0
        in: query
        name: offset
        required: false
        schema:
          type: integer
      - description: the number of items per page
        in: query
        name: size
        required: false
        schema:
          default: 100
          maximum: 1000
          minimum: 1
          type: integer
      - description: filter by labels when multiple filters are present, they are ANDed
        example:
          label.k8s.kuma.io/namespace: my-ns
        in: query
        name: filter
        required: false
        schema:
          properties:
            key:
              type: string
            value:
              type: string
          type: object
      responses:
        '200':
          $ref: '#/components/responses/MeshList'
      summary: Returns a list of Mesh in the mesh.
      tags:
      - Mesh
  /meshes/{name}:
    delete:
      operationId: deleteMesh
      parameters:
      - description: name of the Mesh
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/MeshDeleteSuccessResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      summary: Deletes Mesh entity
      tags:
      - Mesh
    get:
      operationId: getMesh
      parameters:
      - description: name of the Mesh
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/MeshItem'
        '404':
          $ref: '#/components/responses/NotFound'
      summary: Returns Mesh entity
      tags:
      - Mesh
    put:
      operationId: putMesh
      parameters:
      - description: name of the Mesh
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeshItem'
        description: Put request
        required: true
      responses:
        '200':
          $ref: '#/components/responses/MeshCreateOrUpdateSuccessResponse'
        '201':
          $ref: '#/components/responses/MeshCreateOrUpdateSuccessResponse'
      summary: Creates or Updates Mesh entity
      tags:
      - Mesh
components:
  schemas:
    DataSource_File:
      properties:
        file:
          description: 'Data source is a path to a file.

            Deprecated, use other sources of a data.'
          type: string
      type: object
    BuiltinCertificateAuthorityConfig:
      properties:
        caCert:
          properties:
            expiration:
              type: string
            rsaBits:
              format: uint32
              type: integer
          type: object
      type: object
    DataSource_InlineString:
      properties:
        inlineString:
          description: Data source is inline string
          type: string
      type: object
    TcpLoggingBackendConfig:
      description: TcpLoggingBackendConfig defines configuration for TCP based access logs
      properties:
        address:
          description: Address to TCP service that will receive logs
          type: string
      type: object
    FileLoggingBackendConfig:
      description: FileLoggingBackendConfig defines configuration for file based access logs
      properties:
        path:
          description: Path to a file that logs will be written to
          type: string
      type: object
    MeshItem:
      properties:
        constraints:
          description: Constraints that applies to the mesh and its entities
          properties:
            dataplaneProxy:
              description: 'DataplaneProxyMembership defines a set of requirements for data plane

                proxies to be a member of the mesh.'
              properties:
                requirements:
                  description: 'Requirements defines a set of requirements that data plane proxies must

                    fulfill in order to join the mesh. A data plane proxy must fulfill at

                    least one requirement in order to join the mesh. Empty list of allowed

                    requirements means that any proxy that is not explicitly denied can join.'
                  items:
                    description: Rules defines a set of rules for data plane proxies to be member of the mesh.
                    properties:
                      tags:
                        additionalProperties:
                          type: string
                        description: 'Tags defines set of required tags. You can specify ''*'' in value to

                          require non empty value of tag'
                        type: object
                    type: object
                  type: array
                restrictions:
                  description: 'Restrictions defines a set of restrictions that data plane proxies cannot

                    fulfill in order to join the mesh. A data plane proxy cannot fulfill any

                    requirement in order to join the mesh.

                    Restrictions takes precedence over requirements.'
                  items:
                    description: Rules defines a set of rules for data plane proxies to be member of the mesh.
                    properties:
                      tags:
                        additionalProperties:
                          type: string
                        description: 'Tags defines set of required tags. You can specify ''*'' in value to

                          require non empty value of tag'
                        type: object
                    type: object
                  type: array
              type: object
          type: object
        labels:
          additionalProperties:
            type: string
          type: object
        logging:
          description: 'Logging settings.

            +optional'
          properties:
            backends:
              description: List of available logging backends
              items:
                description: LoggingBackend defines logging backend available to mesh.
                properties:
                  conf:
                    oneOf:
                    - $ref: '#/components/schemas/FileLoggingBackendConfig'
                    - $ref: '#/components/schemas/TcpLoggingBackendConfig'
                    type: object
                  format:
                    description: 'Format of access logs. Placeholders available on

                      https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log'
                    type: string
                  name:
                    description: 'Name of the backend, can be then used in Mesh.logging.defaultBackend or in

                      TrafficLogging'
                    type: string
                  type:
                    description: Type of the backend (Kuma ships with 'tcp' and 'file')
                    type: string
                type: object
              type: array
            defaultBackend:
              description: Name of the default backend
              type: string
          type: object
        meshServices:
          properties:
            mode:
              oneOf:
              - type: string
              - type: integer
          type: object
        metrics:
          description: 'Configuration for metrics collected and exposed by dataplanes.


            Settings defined here become defaults for every dataplane in a given Mesh.

            Additionally, it is also possible to further customize this configuration

            for each dataplane individually using Dataplane resource.

            +optional'
          properties:
            backends:
              description: List of available Metrics backends
              items:
                description: MetricsBackend defines metric backends
                properties:
                  conf:
                    oneOf:
                    - $ref: '#/components/schemas/PrometheusMetricsBackendConfig'
                    type: object
                  name:
                    description: Name of the backend, can be then used in Mesh.metrics.enabledBackend
                    type: string
                  type:
                    description: Type of the backend (Kuma ships with 'prometheus')
                    type: string
                type: object
              type: array
            enabledBackend:
              description: Name of the enabled backend
              type: string
          type: object
        mtls:
          description: 'mTLS settings.

            +optional'
          properties:
            backends:
              description: List of available Certificate Authority backends
              items:
                description: CertificateAuthorityBackend defines Certificate Authority backend
                properties:
                  conf:
                    oneOf:
                    - $ref: '#/components/schemas/ProvidedCertificateAuthorityConfig'
                    - $ref: '#/components/schemas/BuiltinCertificateAuthorityConfig'
                    type: object
                  dpCert:
                    description: Dataplane certificate settings
                    properties:
                      requestTimeout:
                        description: Timeout on request to CA for DP certificate generation and retrieval
                        properties:
                          nanos:
                            type: integer
                          seconds:
                            type: integer
                        type: object
                      rotation:
                        description: Rotation settings
                        properties:
                          expiration:
                            description: Time after which generated certificate for Dataplane will expire
                            type: string
                        type: object
                    type: object
                  mode:
                    description: 'Mode defines the behaviour of inbound listeners with regard to traffic

                      encryption'
                    oneOf:
                    - type: string
                    - type: integer
                  name:
                    description: Name of the backend
                    type: string
                  rootChain:
                    properties:
                      requestTimeout:
                        description: 'Timeout on request for to CA for root certificate chain.

                          If not specified, defaults to 10s.'
                        properties:
                          nanos:
                            type: integer
                          seconds:
                            type: integer
                        type: object
                    type: object
                  type:
                    description: 'Type of the backend. Has to be one of the loaded plugins (Kuma ships with

                      builtin and provided)'
                    type: string
                type: object
              type: array
            enabledBackend:
              description: Name of the enabled backend
              type: string
            skipValidation:
              description: If enabled, skips CA validation.
              type: boolean
          type: object
        name:
          type: string
        networking:
          description: Networking settings of the mesh
          properties:
            outbound:
              description: Outbound settings
              properties:
                passthrough:
                  description: Control the passthrough cluster
                  type: boolean
              type: object
          type: object
        routing:
          description: Routing settings of the mesh
          properties:
            defaultForbidMeshExternalServiceAccess:
              description: 'If true, blocks traffic to MeshExternalServices.

                Default: false'
              type: boolean
            localityAwareLoadBalancing:
              description: Enable the Locality Aware Load Balancing
              type: boolean
            zoneEgress:
              description: 'Enable routing traffic to services in other zone or external services

                through ZoneEgress. Default: false'
              type: boolean
          type: object
        skipCreatingInitialPolicies:
          description: 'List of policies to skip creating by default when the mesh is created.

            e.g. TrafficPermission, MeshRetry, etc. An ''*'' can be used to skip all

            policies.'
          items:
            type: string
          type: array
        tracing:
          description: 'Tracing settings.

            +optional'
          properties:
            backends:
              description: List of available tracing backends
              items:
                description: TracingBackend defines tracing backend available to mesh.
                properties:
                  conf:
                    oneOf:
                    - $ref: '#/components/schemas/DatadogTracingBackendConfig'
                    - $ref: '#/components/schemas/ZipkinTracingBackendConfig'
                    type: object
                  name:
                    description: 'Name of the backend, can be then used in Mesh.tracing.defaultBackend or in

                      TrafficTrace'
                    type: string
                  sampling:
                    description: 'Percentage of traces that will be sent to the backend (range 0.0 - 100.0).

                      Empty value defaults to 100.0%'
                    type: number
                  type:
                    description: Type of the backend (Kuma ships with 'zipkin')
                    type: string
                type: object
              type: array
            defaultBackend:
              description: Name of the default backend
              type: string
          type: object
        type:
          type: string
      required:
      - type
      - name
      type: object
    ZipkinTracingBackendConfig:
      properties:
        apiVersion:
          description: 'Version of the API. values: httpJson, httpJsonV1, httpProto. Default:

            httpJson see

            https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/trace/v3/trace.proto#envoy-v3-api-enum-config-trace-v3-zipkinconfig-collectorendpointversion'
          type: string
        sharedSpanContext:
          description: 'Determines whether client and server spans will share the same span

            context. Default: true.

            https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/trace/v3/zipkin.proto#config-trace-v3-zipkinconfig'
          type: boolean
        traceId128bit:
          description: 'Generate 128bit traces. Default: false'
          type: boolean
        url:
          description: Address of Zipkin collector.
          type: string
      type: object
    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
    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
    DataSource_Secret:
      properties:
        secret:
          description: Data source is a secret with given Secret key.
          type: string
      type: object
    DataSource_Inline:
      properties:
        inline:
          description: Data source is inline bytes.
          format: byte
          type: string
      type: object
    DatadogTracingBackendConfig:
      properties:
        address:
          description: Address of datadog collector.
          type: string
        port:
          description: Port of datadog collector
          type: integer
        splitService:
          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. Default: false'
          type: boolean
      type: object
    PrometheusMetricsBackendConfig:
      description: PrometheusMetricsBackendConfig defines configuration of Prometheus backend
      properties:
        aggregate:
          description: 'Map with the configuration of applications which metrics are going to be

            scrapped by kuma-dp.'
          items:
            description: PrometheusAggregateMetricsConfig defines endpoints that should be scrapped by kuma-dp for prometheus metrics.
            properties:
              address:
                description: Address on which a service expose HTTP endpoint with Prometheus metrics.
                type: string
              enabled:
                description: 'If false then the application won''t be scrapped. If nil, then it is treated

                  as true and kuma-dp scrapes metrics from the service.'
                type: boolean
              name:
                description: Name which identify given configuration.
                type: string
              path:
                description: Path on which a service expose HTTP endpoint with Prometheus metrics.
                type: string
              port:
                description: Port on which a service expose HTTP endpoint with Prometheus metrics.
                type: integer
            type: object
          type: array
        envoy:
          description: Configuration of Envoy's metrics.
          properties:
            filterRegex:
              description: 'FilterRegex value that is going to be passed to Envoy for filtering

                Envoy metrics.'
              type: string
            usedOnly:
              description: 'If true then return metrics that Envoy has updated (counters incremented

                at least once, gauges changed at least once, and histograms added to at

                least once). If nil, then it is treated as false.'
              type: boolean
          type: object
        path:
          description: 'Path on which a dataplane should expose HTTP endpoint with Prometheus

            metrics.'
          type: string
        port:
          description: 'Port on which a dataplane should expose HTTP endpoint with Prometheus

            metrics.'
          type: integer
        skipMTLS:
          description: 'If true then endpoints for scraping metrics won''t require mTLS even if mTLS

            is enabled in Mesh. If nil, then it is treated as false.'
          type: boolean
        tags:
          additionalProperties:
            type: string
          description: 'Tags associated with an application this dataplane is deployed next to,

            e.g. service=web, version=1.0.

            `service` tag is mandatory.'
          type: object
        tls:
          description: Configuration of TLS for prometheus listener.
          properties:
            mode:
              description: 'mode defines how configured is the TLS for Prometheus.

                Supported values, delegated, disabled, activeMTLSBackend. Default to

                `activeMTLSBackend`.'
              oneOf:
              - type: string
              - type: integer
          type: object
      type: object
    ProvidedCertificateAuthorityConfig:
      properties:
        cert:
          oneOf:
          - $ref: '#/components/schemas/DataSource_File'
          - $ref: '#/components/schemas/DataSource_Inline'
          - $ref: '#/components/schemas/DataSource_InlineString'
          - $ref: '#/components/schemas/DataSource_Secret'
        key:
          oneOf:
          - $ref: '#/components/schemas/DataSource_File'
          - $ref: '#/components/schemas/DataSource_Inline'
          - $ref: '#/components/schemas/DataSource_InlineString'
          - $ref: '#/components/schemas/DataSource_Secret'
      type: object
    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'
  responses:
    MeshCreateOrUpdateSuccessResponse:
      content:
        application/json:
          schema:
            properties:
              warnings:
                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
                readOnly: true
                type: array
            type: object
      description: Successful response
    MeshItem:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MeshItem'
      description: Successful response
    MeshDeleteSuccessResponse:
      content:
        application/json:
          schema:
            type: object
      description: Successful response
    MeshList:
      content:
        application/json:
          schema:
            properties:
              items:
                items:
                  $ref: '#/components/schemas/MeshItem'
                type: array
              next:
                description: URL to the next page
                type: string
              total:
                description: The total number of entities
                type: number
            type: object
      description: List
    NotFound:
      description: Not Found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/NotFoundError'
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
    BearerAuth:
      type: http
      scheme: bearer