# 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**:
- This field is required when using Gloo Portal.
- The value cannot contain spaces.
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: {}
---