---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  name: meshtimeouts.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshTimeout
    listKind: MeshTimeoutList
    plural: meshtimeouts
    shortNames:
    - mt
    singular: meshtimeout
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.targetRef.kind
      name: TargetRef Kind
      type: string
    - jsonPath: .spec.targetRef.name
      name: TargetRef Name
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: MeshTimeout configures timeout limits for service-to-service
          communication to prevent requests from hanging indefinitely. It supports
          connection timeouts, idle timeouts, and HTTP-specific timeouts (request,
          stream, headers) to ensure timely failure detection and improve service
          responsiveness.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Spec is the specification of the Kuma MeshTimeout resource.
            properties:
              from:
                description: From list makes a match between clients and corresponding
                  configurations
                items:
                  properties:
                    default:
                      description: |-
                        Default is a configuration specific to the group of clients referenced in
                        'targetRef'
                      properties:
                        connectionTimeout:
                          description: |-
                            ConnectionTimeout specifies the amount of time proxy will wait for an TCP connection to be established.
                            Default value is 5 seconds. Cannot be set to 0.
                          type: string
                        http:
                          description: Http provides configuration for HTTP specific
                            timeouts
                          properties:
                            maxConnectionDuration:
                              description: |-
                                MaxConnectionDuration is the time after which a connection will be drained and/or closed,
                                starting from when it was first established. Setting this timeout to 0 will disable it.
                                Disabled by default.
                              type: string
                            maxStreamDuration:
                              description: |-
                                MaxStreamDuration is the maximum time that a stream’s lifetime will span.
                                Setting this timeout to 0 will disable it. Disabled by default.
                              type: string
                            requestHeadersTimeout:
                              description: |-
                                RequestHeadersTimeout The amount of time that proxy will wait for the request headers to be received. The timer is
                                activated when the first byte of the headers is received, and is disarmed when the last byte of
                                the headers has been received. If not specified or set to 0, this timeout is disabled.
                                Disabled by default.
                              type: string
                            requestTimeout:
                              description: |-
                                RequestTimeout The amount of time that proxy will wait for the entire request to be received.
                                The timer is activated when the request is initiated, and is disarmed when the last byte of the request is sent,
                                OR when the response is initiated. Setting this timeout to 0 will disable it.
                                Default is 15s.
                              type: string
                            streamIdleTimeout:
                              description: |-
                                StreamIdleTimeout is the amount of time that proxy will allow a stream to exist with no activity.
                                Setting this timeout to 0 will disable it. Default is 30m
                              type: string
                          type: object
                        idleTimeout:
                          description: |-
                            IdleTimeout is defined as the period in which there are no bytes sent or received on connection
                            Setting this timeout to 0 will disable it. Be cautious when disabling it because
                            it can lead to connection leaking. Default value is 1h.
                          type: string
                      type: object
                    targetRef:
                      description: |-
                        TargetRef is a reference to the resource that represents a group of
                        clients.
                      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
                  required:
                  - targetRef
                  type: object
                type: array
              rules:
                description: |-
                  Rules defines inbound timeout configurations. Currently limited to exactly one rule containing
                  default timeouts that apply to all inbound traffic, as L7 matching is not yet implemented.
                items:
                  properties:
                    default:
                      description: Default contains configuration of the inbound timeouts
                      properties:
                        connectionTimeout:
                          description: |-
                            ConnectionTimeout specifies the amount of time proxy will wait for an TCP connection to be established.
                            Default value is 5 seconds. Cannot be set to 0.
                          type: string
                        http:
                          description: Http provides configuration for HTTP specific
                            timeouts
                          properties:
                            maxConnectionDuration:
                              description: |-
                                MaxConnectionDuration is the time after which a connection will be drained and/or closed,
                                starting from when it was first established. Setting this timeout to 0 will disable it.
                                Disabled by default.
                              type: string
                            maxStreamDuration:
                              description: |-
                                MaxStreamDuration is the maximum time that a stream’s lifetime will span.
                                Setting this timeout to 0 will disable it. Disabled by default.
                              type: string
                            requestHeadersTimeout:
                              description: |-
                                RequestHeadersTimeout The amount of time that proxy will wait for the request headers to be received. The timer is
                                activated when the first byte of the headers is received, and is disarmed when the last byte of
                                the headers has been received. If not specified or set to 0, this timeout is disabled.
                                Disabled by default.
                              type: string
                            requestTimeout:
                              description: |-
                                RequestTimeout The amount of time that proxy will wait for the entire request to be received.
                                The timer is activated when the request is initiated, and is disarmed when the last byte of the request is sent,
                                OR when the response is initiated. Setting this timeout to 0 will disable it.
                                Default is 15s.
                              type: string
                            streamIdleTimeout:
                              description: |-
                                StreamIdleTimeout is the amount of time that proxy will allow a stream to exist with no activity.
                                Setting this timeout to 0 will disable it. Default is 30m
                              type: string
                          type: object
                        idleTimeout:
                          description: |-
                            IdleTimeout is defined as the period in which there are no bytes sent or received on connection
                            Setting this timeout to 0 will disable it. Be cautious when disabling it because
                            it can lead to connection leaking. Default value is 1h.
                          type: string
                      type: object
                  type: object
                type: array
              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
              to:
                description: To list makes a match between the consumed services and
                  corresponding configurations
                items:
                  properties:
                    default:
                      description: |-
                        Default is a configuration specific to the group of destinations referenced in
                        'targetRef'
                      properties:
                        connectionTimeout:
                          description: |-
                            ConnectionTimeout specifies the amount of time proxy will wait for an TCP connection to be established.
                            Default value is 5 seconds. Cannot be set to 0.
                          type: string
                        http:
                          description: Http provides configuration for HTTP specific
                            timeouts
                          properties:
                            maxConnectionDuration:
                              description: |-
                                MaxConnectionDuration is the time after which a connection will be drained and/or closed,
                                starting from when it was first established. Setting this timeout to 0 will disable it.
                                Disabled by default.
                              type: string
                            maxStreamDuration:
                              description: |-
                                MaxStreamDuration is the maximum time that a stream’s lifetime will span.
                                Setting this timeout to 0 will disable it. Disabled by default.
                              type: string
                            requestHeadersTimeout:
                              description: |-
                                RequestHeadersTimeout The amount of time that proxy will wait for the request headers to be received. The timer is
                                activated when the first byte of the headers is received, and is disarmed when the last byte of
                                the headers has been received. If not specified or set to 0, this timeout is disabled.
                                Disabled by default.
                              type: string
                            requestTimeout:
                              description: |-
                                RequestTimeout The amount of time that proxy will wait for the entire request to be received.
                                The timer is activated when the request is initiated, and is disarmed when the last byte of the request is sent,
                                OR when the response is initiated. Setting this timeout to 0 will disable it.
                                Default is 15s.
                              type: string
                            streamIdleTimeout:
                              description: |-
                                StreamIdleTimeout is the amount of time that proxy will allow a stream to exist with no activity.
                                Setting this timeout to 0 will disable it. Default is 30m
                              type: string
                          type: object
                        idleTimeout:
                          description: |-
                            IdleTimeout is defined as the period in which there are no bytes sent or received on connection
                            Setting this timeout to 0 will disable it. Be cautious when disabling it because
                            it can lead to connection leaking. Default value is 1h.
                          type: string
                      type: object
                    targetRef:
                      description: |-
                        TargetRef is a reference to the resource that represents a group of
                        destinations.
                      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
                  required:
                  - targetRef
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
