# Code generated by skv2. DO NOT EDIT. apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: a0552858c04e69c6 crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: apidocs.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: ApiDoc listKind: ApiDocList plural: apidocs shortNames: - ad singular: apidoc scope: Namespaced versions: - name: v2 schema: openAPIV3Schema: properties: spec: description: Specifications for the ApiDoc. oneOf: - not: anyOf: - required: - openapi - required: - grpc - required: - graphql - required: - openapi - required: - grpc - required: - graphql properties: graphql: description: |- Unsupported: The GraphQL integration is no longer supported. The graphQL schema specification language. Specify only one schema type. properties: schemaDefinition: description: |- Required: The GraphQL schema definition. Root-level query and mutation types are supported, and you must define at least a query type. type: string type: object grpc: description: The gRPC schema specification language. Specify only one schema type. properties: descriptors: description: |- Protobuf descriptors that represent the gRPC services provided by your API, encoded in base64. For more information, see the [protobuf reference for `FileDescriptorSet`](https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.FileDescriptorSet). format: byte type: string type: object openapi: description: The OpenAPI schema specification language. Specify only one schema type. properties: inlineString: description: The inline, YAML- or JSON-formatted, OpenAPI v2 or v3 schema. type: string type: object servedBy: description: The destinations that serve this API, if any. items: description: The destinations that serve this API, if any. properties: destinationSelector: description: |- Specify the backing destination for your app, by label or by name. This destination matches the destinations that you later route to. Supported destinations are Kubernetes services, Gloo virtual destinations, and Gloo external services. This field is required when you manually create an ApiDoc for a service that serves an OpenAPI or gRPC schema. properties: kind: description: The kind of destination being selected. defaults to Kubernetes Service. enum: - SERVICE - VIRTUAL_DESTINATION - EXTERNAL_SERVICE type: string port: description: |- The port on the Destination which receives traffic. All ports on the Destination will be selected if left empty. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object selector: description: The selector used to match destination objects by their metadata properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: object type: object type: array type: object status: description: |- The status of the ApiDoc after it is applied to your Gloo environment. Gloo reports the status of Gloo custom resources in several places, such as in logs, when describing the object in `kubectl`, or when viewing the object in the Gloo UI. Unlike other Gloo custom resources, ApiDocs can be both an input and output object. For example, you can manually create an ApiDoc (input), or Gloo can automatically create an ApiDoc during discovery or translation processes (output). As such, status for ApiDocs is disabled. Because the status is disabled, you cannot review statuses for ApiDocs in `kubectl`. Also, you might notice ApiDocs reported as unhealthy in the Gloo UI even though the ApiDocs work. To verify that your ApiDocs are healthy, you can follow the steps in the [ApiDoc guide](https://docs.solo.io/gloo-mesh-gateway/latest/portal/guides/apis/apidocs/#verify). properties: common: description: The state and workspace conditions of the applied resource. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownerWorkspace: description: The name of workspace that owns the APIDoc. type: string selectedServingDestinations: description: Count of the destinations serving the API. maximum: 4294967295 minimum: 0 type: integer type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: bc8767b87e9a68ec crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: apiproducts.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: ApiProduct listKind: ApiProductList plural: apiproducts shortNames: - ap singular: apiproduct scope: Namespaced versions: - name: v2 schema: openAPIV3Schema: properties: spec: description: |- ApiProducts attach Portal Metadata to routes exposed by Gloo in order to make them available for inclusion in GP Portals. Later, your developer portal displays this information in the end-user facing API documentation. PortalMetadata can be attached to Kubernetes Gateway API HTTPRoutes. properties: portalMetadata: description: the metadata to expose in the developer portal properties: apiProductDisplayName: description: |- Give a name for the API product to display in the frontend portal. If omitted, the `apiProductId` value is used as the display name. If `api_product_display_name` is set to a different value in each route table that has the same `apiProductId` value, then the `api_product_display_name` value from the route table with the oldest creation timestamp is used. type: string apiProductId: description: |- Group APIs from multiple route tables together as an API product in the portal. For example, you might have separate route tables that route to different `v1` and `v2` versions of your `billing` services that have their own OpenAPI specs. By setting the `apiProductId` metadata to the same `billing-api` value in each route table, the [/apis](https://docs.solo.io/gloo-mesh-gateway/main/portal/redocly.html#tag/APIs/operation/ListAPIs) endpoint in the portal server returns the same `apiProduct` in the response. Then, these APIs are grouped together and shown as a single `billing` API product with multiple `v1` and `v2` versions in the frontend portal for your end users to discover and use.
**Configuration constraints**: type: string apiVersion: description: |- The version of the API in context of the API Product. You cannot have multiple `apiVersion` values for the same `apiProductId` value, and you must set `apiProductId` to use `apiVersion`. For example, if you have two route tables that both set `apiProductId` to `billing-api`, then one route table can also set `apiVersion` to `v1` and the other to `v2`. However, both route tables cannot set the `apiVersion` to `v1`.
**Configuration constraints**: This field is required when using Gloo Portal. type: string contact: description: |- Contact information for the openAPI specification for this API.
**Configuration constraints**: The value must be an email address. type: string customMetadata: additionalProperties: type: string description: |- Key-value pairs of any custom metadata that you want to show end users in the frontend portal for this API product. In particular, you might provide information about your API lifecycle management policies, such as `phase=supported`, `phase=deprecated`, `compatibility=backwards`, or other product information. Furthermore, the key-value pairs are added to the API Usage & Analytics data for incoming requests to this API product. type: object description: description: |- The description of the openAPI specification for this API. For rich text representation, you can use [CommonMark](https://spec.commonmark.org/) syntax. type: string license: description: |- The license of the openAPI specification for this API.

**Note**: Currently, the value must be the license name, not a URL. type: string lifecycle: description: The current lifecycle stage of the API. type: string termsOfService: description: |- The terms of service of the openAPI specification for this API.
**Configuration constraints**: The value must be a URL. type: string title: description: The title of the openAPI specification for this API. type: string required: - apiProductId - apiVersion type: object targetRef: description: |- select routes using the Kubernetes Gateway API standard targetRef https://gateway-api.sigs.k8s.io/geps/gep-713/?h=targetref#policy-targetref-api. This can be used to apply policy to Kubernetes Gateway HTTPRoutes. properties: group: type: string kind: type: string name: type: string namespace: description: Optional, if unspecified, the local namespace of the policy is inferred. nullable: true type: string type: object type: object status: description: ApiProductStatus communicates the current state of the ApiProduct. properties: selectedRouteCount: description: the number of routes that have been selected by the selector maximum: 4294967295 minimum: 0 type: integer state: description: State of the ApiProduct. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: b42a8c7f4dcf13fb crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: apischemadiscoveries.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: ApiSchemaDiscovery listKind: ApiSchemaDiscoveryList plural: apischemadiscoveries shortNames: - apischemadiscovery singular: apischemadiscovery scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: description: |- Example configuration file: ```yaml apiVersion: apimanagement.gloo.solo.io/v2 kind: ApiSchemaDiscovery metadata: {} spec: openapi: fetchEndpoint: url: "https://example.com/tracks-schema.json" retryDelay: 10s pullAttempts: 10 servedBy: - destinationSelector: kind: SERVICE selector: cluster: cluster-1 name: tracks-rest-api namespace: tracks ``` oneOf: - not: anyOf: - required: - openapi - required: - openapi properties: openapi: description: The details for fetching the API schema. properties: fetchEndpoint: description: The URL endpoint to fetch the API schema manually. The Gloo agent must be able to reach this endpoint. properties: pullAttempts: description: |- The number of attempts to fetch the schema. If omitted, the default is 3. You can also configure this setting for all resources by configuring the Gloo Platform agent during installation or upgrading with the `--api-discovery-polling-pull-attempts` flag. maximum: 4294967295 minimum: 0 type: integer retryDelay: description: |- The retry delay when fetching the schema. If omitted, the default is 5s. You can also configure this setting for all resources by configuring the Gloo Platform agent during installation or upgrading with the `--api-discovery-polling-retry-delay` flag. type: string url: description: 'Required: The URL endpoint to fetch the API schema from. Supported API schema paths are JSON or YAML files. For `https`, make sure that the URL is included in the certificate that validates the HTTPS traffic. Formatted as: `://:/`' type: string useBackoff: description: |- Whether to use [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) when retrying to fetch the schema. If omitted, the default is true. You can also configure this setting for all resources by configuring the Gloo Platform agent during installation or upgrading with the `--api-discovery-polling-use-backoff` flag. type: boolean type: object type: object servedBy: description: The destinations that serve the fetched API schema. The destinations must be in the same cluster as the ApiSchemaDiscovery resource. items: description: The destinations that serve this API, if any. properties: destinationSelector: description: |- Specify the backing destination for your app, by label or by name. This destination matches the destinations that you later route to. Supported destinations are Kubernetes services, Gloo virtual destinations, and Gloo external services. This field is required when you manually create an ApiDoc for a service that serves an OpenAPI or gRPC schema. properties: kind: description: The kind of destination being selected. defaults to Kubernetes Service. enum: - SERVICE - VIRTUAL_DESTINATION - EXTERNAL_SERVICE type: string port: description: |- The port on the Destination which receives traffic. All ports on the Destination will be selected if left empty. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object selector: description: The selector used to match destination objects by their metadata properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: object type: object type: array type: object status: description: |- ApiSchemaDiscoveryStatus shows the status of the ApiSchemaDiscovery. If the Gloo agent was not able to fetch the API schema, the status is reflected in `common`. properties: common: properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownerWorkspace: description: The name of workspace that owns the ApiSchemaDiscovery schema. type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: f4940557f99568f7 crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: graphqlresolvermaps.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: GraphQLResolverMap listKind: GraphQLResolverMapList plural: graphqlresolvermaps shortNames: - grm - gqlrm singular: graphqlresolvermap scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: description: |- The GraphQLResolverMap Resource contains a mapping from types to fields to resolutions. For example, for a schema with type `Query` and field `GetName` ```graphql type Query { GetName: String } ``` you can configure a resolver for the `GetName` field as follows: ```yaml types: Query: fields: GetName: ``` properties: extensions: description: Extensions that apply to the resolvers in this ResolverMap. properties: grpcSchemaSelector: description: |- Selects API Schema objects that describe a gRPC service. This is used only in gRPC resolvers that are defined in this resolver map. The gRPC resolver uses the protobuf descriptor to create gRPC requests to the upstream gRPC service. Any non-gRPC API Schema that is selected here will be ignored. gRPC schemas will be checked for validity, as well as package/message conflicts at configuration time and will fail loudly if not valid. properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: object types: additionalProperties: properties: fields: additionalProperties: properties: resolvers: description: |- List of resolvers. Currently, only one the first resolver configuration will be respected and a warning will be thrown if more than one resolver is in the list. items: oneOf: - not: anyOf: - required: - restResolver - required: - grpcResolver - required: - mockResolver - required: - restResolver - required: - grpcResolver - required: - mockResolver properties: grpcResolver: description: Resolves fields by making a gRPC call to a gRPC destination. properties: destinations: description: |- Required: list of destinations which point to destinations containing a gRPC service. Must provide at least one destination. (Note: only the first destination will be used) items: description: |- Destinations point to the upstream services that fulfill client requests on matching routes that you set up, such as in a route table. Each destination must resolve to one and only one hostname. Destinations can refer to a variety of resources. The behavior of the route action varies depending on the kind of destination. Currently supported destination types are: - Kubernetes `Service`, the default destination. - Gloo `VirtualDestination` to route traffic to one of the VirtualDestination's backing Kubernetes services. - Gloo `ExternalService` to route traffic to a static set of service endpoints that are external to your mesh setup. - Gloo `ExternalWorkload` to route traffic to external workloads that are part of your mesh. - Gloo `CloudProvider` to route traffic to a cloud provider function such as AWS Lambdas, selected by using the `functionCall` field. HTTP routes support all destinations. TCP routes support only Kubernetes `Service` and Gloo `VirtualDestination` destinations. oneOf: - not: anyOf: - required: - ref - required: - awsLambda - required: - ref - required: - awsLambda properties: awsLambda: description: Reference an AWS Lambda function. properties: cloudProvider: description: Reference to the AWS Cloud Provider. properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object function: description: Name of the function to reference. type: string options: description: |- Specify how the destinations should be configured, for configuring lambda functions. If the destination config is required for the destination and not provided by the user, Gloo will invalidate the destination and its parent resources. properties: invocationStyle: description: |- Can be either Sync or Async. See [AWS Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) for more details. enum: - SYNC - ASYNC type: string requestTransformation: enum: - REQUEST_DEFAULT - REQUEST_DISABLE type: string responseTransformation: enum: - RESPONSE_DEFAULT - RESPONSE_DISABLE type: string type: object qualifier: description: Qualifier of the function to reference. Defaults to $LATEST type: string type: object kind: description: |- the kind of Kubernetes destination being referenced. defaults to Service. Only applicable for Kubernetes destinations. For non Kubernetes destinations, this field is ignored. enum: - SERVICE - VIRTUAL_DESTINATION - EXTERNAL_SERVICE type: string port: description: the port on the destination object being targeted. required if the object provides more than one port. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object ref: description: reference to a Kubernetes destination object by its metadata properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object subset: additionalProperties: type: string description: |- select a subset of the destination's endpoints for routing based on their labels. Only applicable for Kubernetes destinations. type: object weight: description: |- Specify the proportion of traffic to be forwarded to this destination. Weights across all of the `destinations` must sum to 100. Weight is only relevant when used in the context of a route with multiple destinations. maximum: 4294967295 minimum: 0 type: integer type: object type: array request: properties: authority: description: |- The :authority header to set on the gRPC request. If empty, the outgoing :authority header will be set to "envoy". This does not need to be set in most cases. nullable: true type: string method: description: The gRPC method to call. type: string outgoingMessage: description: |- The gRPC request body. The request body is a JSON object that will be marshalled into the gRPC request. The request body can be templated using variables from the `variables` field. oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object requestMetadata: additionalProperties: type: string description: |- Static metadata to be added to the gRPC request. See https://grpc.io/docs/what-is-grpc/core-concepts/#metadata for more information. type: object service: description: The gRPC service to call. type: string type: object spanName: description: |- The span name for the upstream gRPC request, used for tracing. If empty or omitted, the request span name will be set to the upstream cluster name. nullable: true type: string timeout: description: |- Set the timeout of the HTTP request to the gRPC service (default 5s) For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). type: string type: object mockResolver: description: Resolves fields via a mocked response that is configured. oneOf: - not: anyOf: - required: - syncResponse - required: - asyncResponse - required: - errorResponse - required: - syncResponse - required: - asyncResponse - required: - errorResponse properties: asyncResponse: description: |- The response to return for this field. The response is a JSON object that can be templated from the `variables` field. This response is returned to the GraphQL execution engine after a delay. properties: delay: description: |- The delay before the response is returned. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). type: string response: description: |- The response to return. The response is a JSON object that can be templated from the `variables` field. oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object type: object errorResponse: description: An error response to return for this field. type: string syncResponse: description: |- The response to return for this field. The response is a JSON object that can be templated from the `variables` field. This response is immediately returned to the GraphQL execution engine. oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object type: object resolverResultTransform: description: |- Use a transformation on extracted variables to transform the upstream REST response. By default, the transformation is empty and the destination response is left as is before being passed into the GraphQL execution engine. oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object restResolver: description: Resolves values by making a HTTP/2 request to a HTTP/REST destination. properties: destinations: description: |- Required: list of destinations which point to destinations containing a RESTful service. Must provide at least one destination. (Note: only the first destination will be used) items: description: |- Destinations point to the upstream services that fulfill client requests on matching routes that you set up, such as in a route table. Each destination must resolve to one and only one hostname. Destinations can refer to a variety of resources. The behavior of the route action varies depending on the kind of destination. Currently supported destination types are: - Kubernetes `Service`, the default destination. - Gloo `VirtualDestination` to route traffic to one of the VirtualDestination's backing Kubernetes services. - Gloo `ExternalService` to route traffic to a static set of service endpoints that are external to your mesh setup. - Gloo `ExternalWorkload` to route traffic to external workloads that are part of your mesh. - Gloo `CloudProvider` to route traffic to a cloud provider function such as AWS Lambdas, selected by using the `functionCall` field. HTTP routes support all destinations. TCP routes support only Kubernetes `Service` and Gloo `VirtualDestination` destinations. oneOf: - not: anyOf: - required: - ref - required: - awsLambda - required: - ref - required: - awsLambda properties: awsLambda: description: Reference an AWS Lambda function. properties: cloudProvider: description: Reference to the AWS Cloud Provider. properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object function: description: Name of the function to reference. type: string options: description: |- Specify how the destinations should be configured, for configuring lambda functions. If the destination config is required for the destination and not provided by the user, Gloo will invalidate the destination and its parent resources. properties: invocationStyle: description: |- Can be either Sync or Async. See [AWS Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) for more details. enum: - SYNC - ASYNC type: string requestTransformation: enum: - REQUEST_DEFAULT - REQUEST_DISABLE type: string responseTransformation: enum: - RESPONSE_DEFAULT - RESPONSE_DISABLE type: string type: object qualifier: description: Qualifier of the function to reference. Defaults to $LATEST type: string type: object kind: description: |- the kind of Kubernetes destination being referenced. defaults to Service. Only applicable for Kubernetes destinations. For non Kubernetes destinations, this field is ignored. enum: - SERVICE - VIRTUAL_DESTINATION - EXTERNAL_SERVICE type: string port: description: the port on the destination object being targeted. required if the object provides more than one port. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object ref: description: reference to a Kubernetes destination object by its metadata properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object subset: additionalProperties: type: string description: |- select a subset of the destination's endpoints for routing based on their labels. Only applicable for Kubernetes destinations. type: object weight: description: |- Specify the proportion of traffic to be forwarded to this destination. Weights across all of the `destinations` must sum to 100. Weight is only relevant when used in the context of a route with multiple destinations. maximum: 4294967295 minimum: 0 type: integer type: object type: array request: description: |- Configuration to template a HTTP request to fetch JSON from a destination REST service. This includes configuration such as setting headers dynamically on the HTTP request, configuring query_params, and setting the body for the request to the destination. properties: body: description: |- Sets the outgoing body to the upstream REST destination. By default, the body is empty. oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object headers: additionalProperties: oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object description: |- Sets the headers on the request to the REST destination. This includes setting HTTP :path header. This is a map of HTTP Header name to a transformation which determines the Header value. The transformation must result in a string value, or an error will be sent back to the client. By default, the :method header is set to GET. If `body` is set, then the :method is POST. This can be overridden by setting the :method header manually below. type: object queryParams: additionalProperties: oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object description: |- Sets the query parameters on the request to the REST destination. The transformation must result in a string value, or an error will be sent back to the client. type: object type: object spanName: description: |- The span name for the upstream REST request, used for tracing. If empty or omitted, the request span name will be set to the upstream cluster name. nullable: true type: string timeout: description: |- Set the timeout of the HTTP request to the REST service (default 5s) For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). type: string variables: additionalProperties: oneOf: - not: anyOf: - required: - responseHeader - required: - responseHeader properties: responseHeader: description: |- Only available on resolver result transformations Extract the value from the GraphQL HTTP response header. The extracted value is a string. If this Extraction is used in a place where response headers are not available, an error will be thrown during configuration time. type: string type: object description: |- Variables that can be used in this field's response transform. The key is the name of the variable, which is directly used in the transformation. The value defines where the variable value is extracted from on the GraphQL REST response. type: object type: object type: object type: array statPrefix: description: |- The stats prefix which will be used for this resolver. If empty, will generate a stats prefix ${RESOLVER_NAME} nullable: true type: string variables: additionalProperties: oneOf: - not: anyOf: - required: - requestHeader - required: - dynamicMetadata - required: - graphqlParent - required: - graphqlArg - required: - resolverResult - required: - json - required: - requestHeader - required: - dynamicMetadata - required: - graphqlParent - required: - graphqlArg - required: - resolverResult - required: - json properties: dynamicMetadata: description: Extract the value from envoy dynamic metadata. The extracted value is an object. properties: key: description: |- The key under the envoy dynamic metadata namespace that the data lives under. If the key doesn't exist in the namespace, the extraction yields null type: string metadataNamespace: description: |- The envoy dynamic metadata namespace that the data lives in. If the namespace doesn't exist in the metadata, the extraction yields null type: string type: object graphqlArg: description: |- Assigns the variable to the GraphQL Argument with this name. If this name doesn't exist, the variable is `null` type: string graphqlParent: description: |- Assigns the variable to the parent object For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#empty). maxProperties: 0 type: object json: description: |- Assigns the variable to a JSON value specified here For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true requestHeader: description: |- Extract the value from the GraphQL HTTP request header. The extracted value is a string. If the header doesn't exist, an empty string will be used. type: string resolverResult: description: |- Assigns the variable to the GraphQL resolver result. If this Extraction is used in a place where the resolver result is not available, an error will be thrown during configuration time. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#empty). maxProperties: 0 type: object type: object description: |- Variables that can be used as a part of transformations for this field's resolution. The key is the name of the variable, which is directly used in the transformation. The value defines where the variable value is extracted from on the GraphQL request. type: object type: object description: |- Map of GraphQL fields for the type to resolutions. The key must match the GraphQL field name and is case-sensitive. Fields that don't have resolvers will use the GraphQL default resolver, which returns the field in the parent object with the same name as the GraphQL field. type: object type: object description: |- Map of GraphQL types to field resolutions. The key must match the GraphQL type name and is case-sensitive. Every field under GraphQL root types (Query, Mutation) must have a resolver defined. type: object type: object status: properties: common: description: The state and workspace conditions of the applied resource. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownedByWorkspace: description: The name of the workspace that owns the Graphql resolver map. type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: 8cbcac401c42fe87 crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: graphqlschemas.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: GraphQLSchema listKind: GraphQLSchemaList plural: graphqlschemas shortNames: - gqls singular: graphqlschema scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: oneOf: - not: anyOf: - required: - proxied - required: - resolved - required: - proxied - required: - resolved properties: proxied: description: |- Configuration to delegate resolving this GraphQL request to an external GraphQL server, which can be another GlooGraphQL instance or another instance of a GraphQL server. The external GraphQL server must be compliant with the [June 2018 GraphQL specification](https://spec.graphql.org/June2018/). properties: graphqlServers: description: |- List of destinations that can server GraphQL requests. The external GraphQL server must be compliant with the [June 2018 GraphQL specification](https://spec.graphql.org/June2018). Though this is a list, only the first referenced destination will be used until fail-over and load balancing is supported between multiple GraphQL destinations. items: description: |- Destinations point to the upstream services that fulfill client requests on matching routes that you set up, such as in a route table. Each destination must resolve to one and only one hostname. Destinations can refer to a variety of resources. The behavior of the route action varies depending on the kind of destination. Currently supported destination types are: - Kubernetes `Service`, the default destination. - Gloo `VirtualDestination` to route traffic to one of the VirtualDestination's backing Kubernetes services. - Gloo `ExternalService` to route traffic to a static set of service endpoints that are external to your mesh setup. - Gloo `ExternalWorkload` to route traffic to external workloads that are part of your mesh. - Gloo `CloudProvider` to route traffic to a cloud provider function such as AWS Lambdas, selected by using the `functionCall` field. HTTP routes support all destinations. TCP routes support only Kubernetes `Service` and Gloo `VirtualDestination` destinations. oneOf: - not: anyOf: - required: - ref - required: - awsLambda - required: - ref - required: - awsLambda properties: awsLambda: description: Reference an AWS Lambda function. properties: cloudProvider: description: Reference to the AWS Cloud Provider. properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object function: description: Name of the function to reference. type: string options: description: |- Specify how the destinations should be configured, for configuring lambda functions. If the destination config is required for the destination and not provided by the user, Gloo will invalidate the destination and its parent resources. properties: invocationStyle: description: |- Can be either Sync or Async. See [AWS Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) for more details. enum: - SYNC - ASYNC type: string requestTransformation: enum: - REQUEST_DEFAULT - REQUEST_DISABLE type: string responseTransformation: enum: - RESPONSE_DEFAULT - RESPONSE_DISABLE type: string type: object qualifier: description: Qualifier of the function to reference. Defaults to $LATEST type: string type: object kind: description: |- the kind of Kubernetes destination being referenced. defaults to Service. Only applicable for Kubernetes destinations. For non Kubernetes destinations, this field is ignored. enum: - SERVICE - VIRTUAL_DESTINATION - EXTERNAL_SERVICE type: string port: description: the port on the destination object being targeted. required if the object provides more than one port. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object ref: description: reference to a Kubernetes destination object by its metadata properties: cluster: description: the cluster of the object. If omitted, Gloo Mesh will use the same cluster as the parent object containing this reference. type: string name: description: the name of the object type: string namespace: description: the namespace of the object. If omitted, Gloo Mesh will use the same namespace as the parent object containing this reference. type: string type: object subset: additionalProperties: type: string description: |- select a subset of the destination's endpoints for routing based on their labels. Only applicable for Kubernetes destinations. type: object weight: description: |- Specify the proportion of traffic to be forwarded to this destination. Weights across all of the `destinations` must sum to 100. Weight is only relevant when used in the context of a route with multiple destinations. maximum: 4294967295 minimum: 0 type: integer type: object type: array headers: additionalProperties: oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object description: |- map of header name to a transformation on extracted variables which are declared in the `variables` field. The transformation must result in a string value, or an error will be sent back to the client. type: object options: properties: allowIntrospection: description: |- Enable introspection queries on the GraphQL API served by this GraphQLSchema resource. Introspection queries are used by GraphQL developers to understand the schema of the GraphQL API and create queries that are valid against the schema. This option allows for introspection queries to be sent to the proxied GraphQL server. Introspection is disabled by default and introspection queries will be responded with errors by the proxy. This should be disabled for production environments. type: boolean type: object queryParams: additionalProperties: oneOf: - not: anyOf: - required: - variable - required: - jq - required: - json - required: - variable - required: - jq - required: - json properties: jq: description: |- The [jq](https://jqlang.github.io/jq/manual/) filter which is used to provide a value. variables defined in `variables` can be used in the jq filter via regular jq variable syntax. For example, a variable named "userIdHeader" can be used in a jq filter as `$userIdHeader` Jq filters must only result in one value, or an error will be sent back to the client. For example, for the input `[1,2,3]`, the jq filter `'.[]'` is not a valid jq filter as it results in multiple jq results. However, the jq filter `'. | join(",")'` is valid as it results in one result: `"1,2,3"`. Refer to the [jq manual](https://jqlang.github.io/jq/manual/) for jq syntax and tips. type: string json: description: |- Static JSON value. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true variable: description: |- The name of a variable declared in the `variables` field. The value of the variable is returned with no transformation. type: string type: object description: |- map of query parameter name to a transformation on extracted variables which are declared in the `variables` field. The transformation must result in a string value, or an error will be sent back to the client. type: object spanName: description: |- The span name for the remote GraphQL request, used for tracing. If empty or omitted, the request span name will be set to the upstream cluster name. type: string timeout: description: |- Set the timeout of the HTTP request to the REST service (default 5s) For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). type: string variables: additionalProperties: oneOf: - not: anyOf: - required: - dynamicMetadata - required: - requestHeader - required: - json - required: - dynamicMetadata - required: - requestHeader - required: - json properties: dynamicMetadata: description: Extract the value from envoy dynamic metadata. The extracted value is an object. properties: key: description: |- The key under the envoy dynamic metadata namespace that the data lives under. If the key doesn't exist in the namespace, the extraction yields null type: string metadataNamespace: description: |- The envoy dynamic metadata namespace that the data lives in. If the namespace doesn't exist in the metadata, the extraction yields null type: string type: object json: description: |- Assigns the variable to a JSON value specified here. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#value). x-kubernetes-preserve-unknown-fields: true requestHeader: description: |- Extract the value from the GraphQL HTTP request header. The extracted value is a string. If the header doesn't exist, an empty string will be used. type: string type: object description: |- Declare variables that are used in variable transformations in the fields below for the GraphQL request to a remote server. The keys to this map are the name of the variables. See the variable transformations specifically for how to reference these variables. type: object type: object resolved: description: |- List of references to GraphQLResolverMap resources. GraphQLResolverMaps contain a mapping from GraphQL fields to resolver configuration, so that those fields can be resolved locally by this GraphQL-envoy instance. Order of the references listed below does matter as resolver maps listed first will be given priority over later ones when tie-breaking field resolver configurations. properties: options: properties: enableIntrospection: description: |- Enable introspection queries on the GraphQL API served by this GraphQLSchema resource. Introspection queries are used by GraphQL developers to understand the schema of the GraphQL API and create queries that are valid against the schema. Introspection is disabled by default, and should be disabled for production environments. type: boolean maxDepth: description: |- Max GraphQL operation (query/mutation/subscription) depth. This sets a limitation on the max nesting on a query that runs against this schema. any GraphQL operation that runs past the `max_depth` will add an error message to the response and will return as `null`. If not configured, or the value is 0, the query depth will be unbounded. For information about the value format, see the [Google protocol buffer documentation](https://protobuf.dev/reference/protobuf/google.protobuf/#u-int32-value). maximum: 4294967295 minimum: 0 nullable: true type: integer type: object resolverMapRefs: description: |- List of references to GraphQLResolverMap resources. GraphQLResolverMaps contain a mapping from GraphQL fields to resolver configuration, so that those fields can be resolved locally by this GraphQL-envoy instance. Order of the references listed below does matter as resolver maps listed first will be given priority over later ones when tie-breaking field resolver configurations. items: description: Resource reference for a cross-cluster-scoped object properties: clusterName: description: name of the cluster in which the resource exists type: string name: description: name of the resource being referenced type: string namespace: description: namespace of the resource being referenced type: string type: object type: array type: object schemaRef: description: |- Required: Reference to the ApiSchema object which is of type GraphQL schema, which contains the [GraphQL SDL](https://graphql.org/learn/schema/) defining this GraphQL schema. properties: clusterName: description: name of the cluster in which the resource exists type: string name: description: name of the resource being referenced type: string namespace: description: namespace of the resource being referenced type: string type: object type: object status: properties: common: description: The state and workspace conditions of the applied resource. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownedByWorkspace: description: The name of the workspace that owns the GraphQL schema. type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: 853730077929f49c crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: graphqlstitchedschemas.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: GraphQLStitchedSchema listKind: GraphQLStitchedSchemaList plural: graphqlstitchedschemas shortNames: - gqlss - gss singular: graphqlstitchedschema scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: properties: options: properties: enableIntrospection: description: |- Enable introspection queries on this GraphQL Stitched API. Introspection queries are used by GraphQL developers to understand the schema of the GraphQL API and create queries that are valid against the schema. Introspection is disabled by default, and should be disabled for production environments. type: boolean type: object subschemas: description: List of GraphQL Subschemas that compose this GraphQL stitched schema. items: oneOf: - not: anyOf: - required: - schema - required: - stitchedSchema - required: - schema - required: - stitchedSchema properties: schema: description: Reference to a GraphQLSchema resource that contains the configuration for this subschema. properties: clusterName: description: name of the cluster in which the resource exists type: string name: description: name of the resource being referenced type: string namespace: description: namespace of the resource being referenced type: string type: object stitchedSchema: description: Reference to a GraphQLStitchedSchema resource that contains the configuration for this subschema. properties: clusterName: description: name of the cluster in which the resource exists type: string name: description: name of the resource being referenced type: string namespace: description: namespace of the resource being referenced type: string type: object typeMerge: additionalProperties: properties: args: additionalProperties: type: string description: The format to turn the initial object representation into query arguments. type: object queryName: description: specifies the root field from this subschema used to request the local type type: string selectionSet: description: |- This specifies one or more key fields required from other services to perform this query. Query planning will automatically resolve these fields from other subschemas in dependency order. This is a graphql selection set specified as a string e.g. '{ username }' type: string type: object description: Type merge configuration for this subschema. type: object type: object type: array type: object status: properties: common: description: The state and workspace conditions of the applied resource. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownedByWorkspace: description: The name of the workspace that owns the GraphQL stitched schema. type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: 8d40c8f3ff116d39 crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: portals.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: Portal listKind: PortalList plural: portals shortNames: - portal singular: portal scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: description: |- The Portal resource configures a developer portal that you can use to securely expose your APIs to end users. Before you create the Portal, you bundle the APIs that you want to expose into a route table. Then, you prepare a usage plan to control access to your APIs by applying rate limiting and external auth policies to the routes in the route table. For more information, see the [Portal docs](https://docs.solo.io/gloo-mesh-gateway/latest/portal/). The following examples show a Portal resource that refers to usage plans that are named in the rate limit server config's descriptors, as well as a corresponding `RateLimitPolicy` and `ExternalAuthPolicy` that apply to a route in a route table. ```yaml apiVersion: apimanagement.gloo.solo.io/v2 kind: Portal metadata: name: public-portal namespace: gloo-mesh spec: portalBackendSelectors: - selector: labels: app: gloo-mesh-portal-server usagePlans: - name: bronze displayName: "Bronze Plan" description: "A basic usage plan" - name: silver description: "A better usage plan" - name: gold description: "The best usage plan!" apis: - name: productpage namespace: bookinfo cluster: cluster-1 - labels: app: reviews ``` ```yaml apiVersion: admin.gloo.solo.io/v2 kind: RateLimitServerConfig metadata: name: usage-plans namespace: gloo-mesh spec: destinationServers: [] # omitted, server refs raw: descriptors: - key: usagePlan value: bronze descriptors: - key: userId rateLimit: requestsPerUnit: 50 unit: MINUTE - key: usagePlan value: silver descriptors: - key: userId rateLimit: requestsPerUnit: 200 unit: MINUTE - key: usagePlan value: gold descriptors: - key: userId rateLimit: requestsPerUnit: 1000 unit: MINUTE ``` ```yaml apiVersion: security.policy.gloo.solo.io/v2 kind: ExtAuthPolicy metadata: name: petstore-apiauth namespace: petstore spec: applyToRoutes: - route: labels: route: pets config: server: name: ext-auth-server namespace: gloo-mesh cluster: cluster-1 glooAuth: configs: - apiKeyAuth: headersFromMetadata: x-solo-plan: name: plan required: true k8sSecretApikeyStorage: labelSelector: auth: api-key ``` ```yaml apiVersion: trafficcontrol.policy.gloo.solo.io/v2 kind: RateLimitPolicy metadata: name: pets-rate-limit namespace: petstore spec: applyToRoutes: - route: labels: route: pets config: ratelimitServerConfig: name: usage-plans namespace: gloo-mesh cluster: cluster-1 raw: rateLimits: - actions: - requestHeaders: descriptorKey: usagePlan headerName: x-solo-plan - metadata: descriptorKey: userId metadataKey: key: envoy.filters.http.ext_authz path: - key: userId ``` properties: apiProducts: description: A list of route metadata which select the ApiProducts you want the developer portal to expose. items: description: selects zero or more Kubernetes API resources by matching on labels, name, namespace, cluster, and workspace. properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: array apis: description: |- A list of route tables with routes to the APIs you want the developer portal to expose. The route table might also have 'portalMetadata' key-value fields that you want to display in the developer portal for end users. items: description: selects zero or more Kubernetes API resources by matching on labels, name, namespace, cluster, and workspace. properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: array domains: description: |- The domains on which this Portal will be served. The Host header received by the Portal Web App will be matched to one of these domains in order to determine which Portal will be served. If you are using the Gateway through which you are exposing the Portal is listening on a port other than 80/443, you should include the port as part of the domain string, e.g. "portal.solo.io:8443". To prevent undefined behavior, creating a Portal whose domain conflicts with an existing Portal will result in the Portal resource being placed into an 'Invalid' state. items: type: string type: array portalBackendSelectors: description: The workloads where an existing portal backend is running. items: description: |- WorkloadSelector is a Selector specifically built for selecting individual workloads. Workloads must have injected sidecar proxies or be standalone gateway proxies to be selected by Gloo Mesh policies. This selector can be used to select Kubernetes workloads (KUBE) or sidecar-injected external endpoints (VM). properties: kind: description: The kind of workload being selected. Defaults to Kube. enum: - KUBE - VM type: string port: description: |- The port to select on the selected workloads. Only applies to policies which select specific workload ports, such as the WasmDeploymentPolicy. oneOf: - not: anyOf: - required: - number - required: - name - required: - number - required: - name properties: name: description: the name of the port on the destination objects being targeted. type: string number: description: the number of the port on the destination objects being targeted. maximum: 65535 minimum: 1 type: integer type: object selector: description: Selector used to match Workload objects by their metadata. properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: object type: array usagePlans: description: The usage plans to control access to the APIs that the developer portal exposes. items: description: |- A `UsagePlan` defined in the Portal resource is a reference to an existing `RateLimitPolicy` and `ExtAuthPolicy` that has been applied to a route table. The values of the descriptor key `usagePlan` in the `RateLimitServerConfig` used by an existing `RateLimitPolicy` must match the `name` of the `UsagePlan` defined in the Portal resource, and will be used to determine which rate limiting and ext auth options are available for this Portal. properties: description: description: |- Optional description for the usage plan to show end users in the developer portal. You might include information about how to get the plan or what the plan includes and excludes. type: string displayName: description: Optional display name for the usage plan to show end users in the developer portal. type: string name: description: Match the names of the usage plans with the descriptors that you defined in the rate limit server config. type: string type: object type: array visibility: description: |- Settings for controlling the visibility of the Portal's contents. Default visibility for content in the Portal is private. When a Portal is public, individual APIs can be made private, by specifying the labels for private APIs and applying said labels to the route tables that need to be private. When a Portal or its APIs are private, the Portal requires authentication. An external auth policy must be applied to the Portal's route table in order to enable authentication. The external auth policy must use the `idTokenHeader` field with the `id_token` to pass the user's ID token to the Portal. For authentication to work, the `email` claim is required in the `id_token`. properties: privateAPILabels: additionalProperties: type: string description: |- Custom labels for private APIs. Apply these labels to route tables that need to be private. Has no effect if the public field is set to false in which case all APIs are private. type: object public: description: |- If true, all the APIs published in this portal are going to be public (i.e. visible to unauthenticated users); individual APIs can still be made private using the privateAPILabels field. Defaults to false, in which case the privateAPILabels field will have not effect. type: boolean type: object type: object status: properties: common: description: The state and workspace conditions of the applied resource. properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object extAuthPolicyCount: description: The number of ext-auth policies that this portal selects with the usage plans that are defined in the portal resource. maximum: 4294967295 minimum: 0 type: integer ownerWorkspace: type: string portalBackendCount: description: The number of portal backends that are selected by this portal. maximum: 4294967295 minimum: 0 type: integer rateLimitPolicyCount: description: The number of rate limit policies that this portal selects with the usage plans that are defined in the portal resource. maximum: 4294967295 minimum: 0 type: integer routeTablesCount: description: The number of route tables that are selected by this portal. maximum: 4294967295 minimum: 0 type: integer type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: crd.solo.io/specHash: a33ab197527ef6ce crd.solo.io/version: 2.14.0 labels: app: gloo-mesh-apis app.kubernetes.io/name: gloo-mesh-apis name: portalgroups.apimanagement.gloo.solo.io spec: group: apimanagement.gloo.solo.io names: categories: - solo-io kind: PortalGroup listKind: PortalGroupList plural: portalgroups shortNames: - portalgroup singular: portalgroup scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.common.State.approval name: Status type: string name: v2 schema: openAPIV3Schema: properties: spec: description: |- A `PortalGroup` defines what APIs a group of users can view in the portal, and what usage plans they can manage API keys for. A `PortalGroup` consists of a set of permissions defined for the group defined in `AccessLevel`, and a set of claims that is used to determine whether a user belongs to this group. Below is an example of a `PortalGroup` that defines a group of users that can view the APIs (RouteTables) with the `customers-group: true` label, and manage API keys for the `bronze`, `silver`, and `gold` usage plans for said APIs. A user belongs to this group if they have the following claims in their JWT: ```json { "type": "customers", "region": "us-east-1" } ``` ```yaml apiVersion: apimanagement.gloo.solo.io/v2 kind: PortalGroup metadata: name: customers-group namespace: gloo-mesh labels: portal: sample-bank-portal spec: name: customers-group description: a group for users accessing the customers APIs membership: - claims: - key: type value: customers - key: region value: us-east-1 accessLevel: apis: - routeTable: labels: customers-group: true usagePlans: - name: bronze - name: silver - name: gold ``` properties: accessLevel: description: Settings that control the list of APIs that this group can view, and the usage plans that this group can manage API keys for. properties: apis: description: |- The APIs that we want to allow this group to view in the portal. An API consists of all routes exposed by a route table, so the apis field is a list of route table selectors. items: description: selects zero or more Kubernetes API resources by matching on labels, name, namespace, cluster, and workspace. properties: cluster: description: |- Only select objects in the matching cluster. If omitted, Gloo selects matching objects across all clusters available in the parent object's workspace. type: string labels: additionalProperties: type: string description: labels matching those of the object type: object name: description: |- Only select objects with the matching name. If omitted, Gloo selects matching objects with any name available in the parent object's workspace. type: string namespace: description: |- Only select objects in the matching namespace. If omitted, Gloo selects matching objects across all namespaces available in the parent object's workspace. type: string workspace: description: |- Only select objects in the given workspace. If omitted, Gloo selects matching objects across all workspaces available in the parent object's workspace. type: string type: object type: array usagePlans: description: |- The names of usage plans that we want to allow this group to manage API keys for. Note that if your usage plan is applied across different route tables, granting the ability to manage API keys for a usage plan in a group will allow the created API keys to also be used across all route tables that the usage plan applies to. items: type: string type: array type: object description: description: The description of the group. type: string membership: description: |- A list of `Membership` criteria that defines the claims that are used to determine whether a user belongs to this group. A user is considered to be a member of this group if they have claims that match all the claims in any `Membership` criteria in this list. items: description: |- `Membership` contains a list of claims that is used to determine whether a user belongs to this group. A user is considered to be a member of this group if their idToken has all the claims in this list. For example, a user is considered to be a member of this group if they have defined the following list of membership criteria in their `PortalGroup`: ```yaml ... membership: - claims: - key: type value: customers - key: region value: us-east-1 - claims: - key: type value: customers - key: region value: us-west-1 ``` and the user has the following claims in their idToken: ```json { "type": "customers", "region": "us-east-1" } or { "type": "customers", "region": "us-west-1" } ``` claims within a `Membership` criteria is an AND operation, and the list of `Membership` criteria is an OR operation. properties: claims: description: |- A list of claims that is used to determine whether a user belongs to this group. A user is considered to be a member of this group if their idToken has claims that match all the claims in this list. items: description: A claim that can be used to define a group of users. properties: key: description: The key of the claim. For example, `customers` or `region`. This is the key that we will use to match against the claims in the idToken. type: string value: description: The value of the claim. type: string type: object type: array type: object type: array name: description: The name of the group. type: string type: object status: properties: common: properties: State: properties: approval: description: |- Whether the resource has been accepted as valid and processed in the Gloo Mesh config translation. enum: - PENDING - ACCEPTED - INVALID - WARNING - FAILED - UNLICENSED type: string message: description: Additional information about the current state of the resource. type: string observedGeneration: description: |- The most recent generation observed in the object's metadata. If the `observedGeneration` does not match `metadata.generation`, Gloo Mesh has not processed the most recent version of this object. format: int64 type: integer type: object workspaceConditions: additionalProperties: maximum: 4294967295 minimum: 0 type: integer description: |- A map of ApprovalState to the number of workspaces in this condition, e.g., "Accepted" -> 2 "Pending" -> 1 type: object type: object ownedByWorkspace: description: The name of the workspace that owns the PortalGroup schema. type: string type: object type: object served: true storage: true subresources: status: {} ---