@yandex-cloud/nodejs-sdk
Version:
Yandex.Cloud NodeJS SDK
1,067 lines (1,066 loc) • 141 kB
TypeScript
import _m0 from "protobufjs/minimal";
import { Payload } from "../../../../yandex/cloud/apploadbalancer/v1/payload";
import { Duration } from "../../../../google/protobuf/duration";
export declare const protobufPackage = "yandex.cloud.apploadbalancer.v1";
/**
* A virtual host resource.
* For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#virtual-host).
*/
export interface VirtualHost {
$type: "yandex.cloud.apploadbalancer.v1.VirtualHost";
/** Name of the virtual host. The name is unique within the HTTP router. */
name: string;
/**
* List of domains that are attributed to the virtual host.
*
* The host is selected to process the request received by the load balancer
* if the domain specified in the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header matches a domain
* specified in the host.
*
* A wildcard asterisk character (`*`) matches 0 or more characters.
*
* If not specified, all domains are attributed to the host, which is the same as specifying a `*` value.
* An HTTP router must not contain more than one virtual host to which all domains are attributed.
*/
authority: string[];
/**
* Routes of the virtual host.
*
* A route contains a set of conditions (predicates) that are used by the load balancer to select the route
* for the request and an action on the request.
* For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
*
* The order of routes matters: the first route whose predicate matches the request is selected.
* The most specific routes should be at the top of the list, so that they are not overridden.
* For example, if the first HTTP route is configured, via [HttpRoute.match], to match paths prefixed with just `/`,
* other routes are never matched.
*/
routes: Route[];
/** Deprecated, use route_options.modify_request_headers. */
modifyRequestHeaders: HeaderModification[];
/** Deprecated, use route_options.modify_response_headers. */
modifyResponseHeaders: HeaderModification[];
routeOptions?: RouteOptions;
}
export interface RouteOptions {
$type: "yandex.cloud.apploadbalancer.v1.RouteOptions";
/** Apply the following modifications to the request headers. */
modifyRequestHeaders: HeaderModification[];
/** Apply the following modifications to the response headers. */
modifyResponseHeaders: HeaderModification[];
rbac?: RBAC;
/** Security profile that will take effect to all requests routed via particular virtual host. */
securityProfileId: string;
}
/**
* Role Based Access Control (RBAC) provides router, virtual host, and route access control for the ALB
* service. Requests are allowed or denied based on the `action` and whether a matching principal is
* found. For instance, if the action is ALLOW and a matching principal is found the request should be
* allowed.
*/
export interface RBAC {
$type: "yandex.cloud.apploadbalancer.v1.RBAC";
/** The action to take if a principal matches. Every action either allows or denies a request. */
action: RBAC_Action;
/** Required. A match occurs when at least one matches the request. */
principals: Principals[];
}
export declare enum RBAC_Action {
ACTION_UNSPECIFIED = 0,
/** ALLOW - Allows the request if and only if there is a principal that matches the request. */
ALLOW = 1,
/** DENY - Allows the request if and only if there are no principal that match the request. */
DENY = 2,
UNRECOGNIZED = -1
}
export declare function rBAC_ActionFromJSON(object: any): RBAC_Action;
export declare function rBAC_ActionToJSON(object: RBAC_Action): string;
/** Principals define a group of identities for a request. */
export interface Principals {
$type: "yandex.cloud.apploadbalancer.v1.Principals";
/** Required. A match occurs when all principals match the request. */
andPrincipals: Principal[];
}
/** Principal defines an identity for a request. */
export interface Principal {
$type: "yandex.cloud.apploadbalancer.v1.Principal";
/** A header (or pseudo-header such as :path or :method) of the incoming HTTP request. */
header?: Principal_HeaderMatcher | undefined;
/** A CIDR block or IP that describes the request remote/origin address, e.g. ``192.0.0.0/24`` or``192.0.0.4`` . */
remoteIp: string | undefined;
/** When any is set, it matches any request. */
any: boolean | undefined;
}
export interface Principal_HeaderMatcher {
$type: "yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher";
/** Specifies the name of the header in the request. */
name: string;
/**
* Specifies how the header match will be performed to route the request.
* In the absence of value a request that has specified header name will match,
* regardless of the header's value.
*/
value?: StringMatch;
}
/** A header modification resource. */
export interface HeaderModification {
$type: "yandex.cloud.apploadbalancer.v1.HeaderModification";
/** Name of the header. */
name: string;
/**
* Appends the specified string to the header value.
*
* Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
* are supported.
*/
append: string | undefined;
/**
* Replaces the value of the header with the specified string.
*
* Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
* are supported.
*/
replace: string | undefined;
/** Removes the header. */
remove: boolean | undefined;
/**
* Replaces the name of the header with the specified string.
* This operation is only supported for ALB Virtual Hosts.
*/
rename: string | undefined;
}
/**
* A route resource.
* For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
*/
export interface Route {
$type: "yandex.cloud.apploadbalancer.v1.Route";
/** Name of the route. */
name: string;
/** HTTP route configuration. */
http?: HttpRoute | undefined;
/** gRPC route configuration. */
grpc?: GrpcRoute | undefined;
routeOptions?: RouteOptions;
}
/** An HTTP route configuration resource. */
export interface HttpRoute {
$type: "yandex.cloud.apploadbalancer.v1.HttpRoute";
/** Condition (predicate) used to select the route. */
match?: HttpRouteMatch;
/** Forwards the request to a backend group for processing as configured. */
route?: HttpRouteAction | undefined;
/** Redirects the request as configured. */
redirect?: RedirectAction | undefined;
/** Instructs the load balancer to respond directly as configured. */
directResponse?: DirectResponseAction | undefined;
}
/** A gRPC route configuration resource. */
export interface GrpcRoute {
$type: "yandex.cloud.apploadbalancer.v1.GrpcRoute";
/** Condition (predicate) used to select the route. */
match?: GrpcRouteMatch;
/** Forwards the request to a backend group for processing as configured. */
route?: GrpcRouteAction | undefined;
/** Instructs the load balancer to respond directly with a specified status. */
statusResponse?: GrpcStatusResponseAction | undefined;
}
/** An HTTP route condition (predicate) resource. */
export interface HttpRouteMatch {
$type: "yandex.cloud.apploadbalancer.v1.HttpRouteMatch";
/** HTTP method specified in the request. */
httpMethod: string[];
/**
* Match settings for the path specified in the request.
*
* If not specified, the route matches all paths.
*/
path?: StringMatch;
}
/** A gRPC route condition (predicate) resource. */
export interface GrpcRouteMatch {
$type: "yandex.cloud.apploadbalancer.v1.GrpcRouteMatch";
/**
* Match settings for gRPC service method called in the request.
*
* A match string must be a fully qualified method name, e.g. `foo.bar.v1.BazService/Get`, or a prefix of such.
*
* If not specified, the route matches all methods.
*/
fqmn?: StringMatch;
}
/** A string matcher resource. */
export interface StringMatch {
$type: "yandex.cloud.apploadbalancer.v1.StringMatch";
/** Exact match string. */
exactMatch: string | undefined;
/** Prefix match string. */
prefixMatch: string | undefined;
/** Regular expression match string. */
regexMatch: string | undefined;
}
/** A redirect action resource. */
export interface RedirectAction {
$type: "yandex.cloud.apploadbalancer.v1.RedirectAction";
/**
* URI scheme replacement.
*
* If `http` or `https` scheme is to be replaced and `80` or `443` port is specified in the original URI,
* the port is also removed.
*
* If not specified, the original scheme and port are used.
*/
replaceScheme: string;
/**
* URI host replacement.
*
* If not specified, the original host is used.
*/
replaceHost: string;
/**
* URI host replacement.
*
* If not specified, the original host is used.
*/
replacePort: number;
/** Replacement for the whole path. */
replacePath: string | undefined;
/**
* Replacement for the path prefix matched by [StringMatch].
*
* For instance, if [StringMatch.prefix_match] value is `/foo` and `replace_prefix` value is `/bar`,
* a request with `https://example.com/foobaz` URI is redirected to `https://example.com/barbaz`.
* For [StringMatch.exact_match], the whole path is replaced.
*/
replacePrefix: string | undefined;
/** Removes URI query. */
removeQuery: boolean;
/** HTTP status code to use in redirect responses. */
responseCode: RedirectAction_RedirectResponseCode;
}
/** HTTP status codes supported for use in redirect responses. */
export declare enum RedirectAction_RedirectResponseCode {
/** MOVED_PERMANENTLY - `301 Moved Permanently` status code. */
MOVED_PERMANENTLY = 0,
/** FOUND - `302 Found` status code. */
FOUND = 1,
/** SEE_OTHER - `303 See Other` status code. */
SEE_OTHER = 2,
/** TEMPORARY_REDIRECT - `307 Temporary Redirect` status code. */
TEMPORARY_REDIRECT = 3,
/** PERMANENT_REDIRECT - `308 Permanent Redirect` status code. */
PERMANENT_REDIRECT = 4,
UNRECOGNIZED = -1
}
export declare function redirectAction_RedirectResponseCodeFromJSON(object: any): RedirectAction_RedirectResponseCode;
export declare function redirectAction_RedirectResponseCodeToJSON(object: RedirectAction_RedirectResponseCode): string;
/** A direct response action resource. */
export interface DirectResponseAction {
$type: "yandex.cloud.apploadbalancer.v1.DirectResponseAction";
/** HTTP status code to use in responses. */
status: number;
/** Response body. */
body?: Payload;
}
/** A gRPC status response action resource. */
export interface GrpcStatusResponseAction {
$type: "yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction";
/** gRPC [status code](https://grpc.github.io/grpc/core/md_doc_statuscodes.html) to use in responses. */
status: GrpcStatusResponseAction_Status;
}
/** gRPC status code supported for use in responses. */
export declare enum GrpcStatusResponseAction_Status {
/** OK - `OK` (0) status code. */
OK = 0,
/** INVALID_ARGUMENT - `INVALID_ARGUMENT` (3) status code. */
INVALID_ARGUMENT = 1,
/** NOT_FOUND - `NOT_FOUND` (5) status code. */
NOT_FOUND = 2,
/** PERMISSION_DENIED - `PERMISSION_DENIED` (7) status code. */
PERMISSION_DENIED = 3,
/** UNAUTHENTICATED - `UNAUTHENTICATED` (16) status code. */
UNAUTHENTICATED = 4,
/** UNIMPLEMENTED - `UNIMPLEMENTED` (12) status code. */
UNIMPLEMENTED = 5,
/** INTERNAL - `INTERNAL` (13) status code. */
INTERNAL = 6,
/** UNAVAILABLE - `UNAVAILABLE` (14) status code. */
UNAVAILABLE = 7,
UNRECOGNIZED = -1
}
export declare function grpcStatusResponseAction_StatusFromJSON(object: any): GrpcStatusResponseAction_Status;
export declare function grpcStatusResponseAction_StatusToJSON(object: GrpcStatusResponseAction_Status): string;
/** An HTTP route action resource. */
export interface HttpRouteAction {
$type: "yandex.cloud.apploadbalancer.v1.HttpRouteAction";
/**
* Backend group to forward requests to.
*
* Stream (TCP) backend groups are not supported.
*/
backendGroupId: string;
/**
* Overall timeout for an HTTP connection between a load balancer node an a backend from the backend group:
* the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
*
* If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
*
* Default value: `60`.
*/
timeout?: Duration;
/**
* Idle timeout for an HTTP connection between a load balancer node an a backend from the backend group:
* the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
*
* Specifying meaningful values for both [timeout] and `idle_timeout` is useful for implementing
* server-push mechanisms such as long polling, server-sent events (`EventSource` interface) etc.
*
* If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
*
* If not specified, no idle timeout is used, and an alive connection may be idle for any duration (see [timeout]).
*/
idleTimeout?: Duration;
/** Host replacement. */
hostRewrite: string | undefined;
/** Automatically replaces the host with that of the target. */
autoHostRewrite: boolean | undefined;
/**
* Replacement for the path prefix matched by [StringMatch].
*
* For instance, if [StringMatch.prefix_match] value is `/foo` and `prefix_rewrite` value is `/bar`,
* a request with `/foobaz` path is forwarded with `/barbaz` path.
* For [StringMatch.exact_match], the whole path is replaced.
*
* If not specified, the path is not changed.
*/
prefixRewrite: string;
/** Supported values for HTTP `Upgrade` header. E.g. `websocket`. */
upgradeTypes: string[];
}
/** A gRPC route action resource. */
export interface GrpcRouteAction {
$type: "yandex.cloud.apploadbalancer.v1.GrpcRouteAction";
/** Backend group to forward requests to. */
backendGroupId: string;
/**
* Overall timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
* the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
*
* If a client specifies a lower timeout in HTTP `grpc-timeout` header, the `max_timeout` value is ignored.
*
* If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
*
* Default value: `60`.
*/
maxTimeout?: Duration;
/**
* Idle timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
* the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
*
* Specifying meaningful values for both [max_timeout] and `idle_timeout` is useful for implementing
* server-push mechanisms such as long polling, server-sent events etc.
*
* If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
*
* If not specified, no idle timeout is used, and an alive connection may be idle for any duration
* (see [max_timeout]).
*/
idleTimeout?: Duration;
/** Host replacement. */
hostRewrite: string | undefined;
/** Automatically replaces the host with that of the target. */
autoHostRewrite: boolean | undefined;
}
export declare const VirtualHost: {
$type: "yandex.cloud.apploadbalancer.v1.VirtualHost";
encode(message: VirtualHost, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number | undefined): VirtualHost;
fromJSON(object: any): VirtualHost;
toJSON(message: VirtualHost): unknown;
fromPartial<I extends {
name?: string | undefined;
authority?: string[] | undefined;
routes?: {
name?: string | undefined;
http?: {
match?: {
path?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
httpMethod?: string[] | undefined;
} | undefined;
route?: {
timeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: string[] | undefined;
} | undefined;
redirect?: {
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} | undefined;
directResponse?: {
status?: number | undefined;
body?: {
text?: string | undefined;
} | undefined;
} | undefined;
} | undefined;
grpc?: {
match?: {
fqmn?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
route?: {
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
} | undefined;
statusResponse?: {
status?: GrpcStatusResponseAction_Status | undefined;
} | undefined;
} | undefined;
routeOptions?: {
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
rbac?: {
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} | undefined;
securityProfileId?: string | undefined;
} | undefined;
}[] | undefined;
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
routeOptions?: {
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
rbac?: {
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} | undefined;
securityProfileId?: string | undefined;
} | undefined;
} & {
name?: string | undefined;
authority?: (string[] & string[] & Record<Exclude<keyof I["authority"], "$type" | keyof string[]>, never>) | undefined;
routes?: ({
name?: string | undefined;
http?: {
match?: {
path?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
httpMethod?: string[] | undefined;
} | undefined;
route?: {
timeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: string[] | undefined;
} | undefined;
redirect?: {
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} | undefined;
directResponse?: {
status?: number | undefined;
body?: {
text?: string | undefined;
} | undefined;
} | undefined;
} | undefined;
grpc?: {
match?: {
fqmn?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
route?: {
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
} | undefined;
statusResponse?: {
status?: GrpcStatusResponseAction_Status | undefined;
} | undefined;
} | undefined;
routeOptions?: {
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
rbac?: {
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} | undefined;
securityProfileId?: string | undefined;
} | undefined;
}[] & ({
name?: string | undefined;
http?: {
match?: {
path?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
httpMethod?: string[] | undefined;
} | undefined;
route?: {
timeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: string[] | undefined;
} | undefined;
redirect?: {
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} | undefined;
directResponse?: {
status?: number | undefined;
body?: {
text?: string | undefined;
} | undefined;
} | undefined;
} | undefined;
grpc?: {
match?: {
fqmn?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
route?: {
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
} | undefined;
statusResponse?: {
status?: GrpcStatusResponseAction_Status | undefined;
} | undefined;
} | undefined;
routeOptions?: {
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
rbac?: {
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} | undefined;
securityProfileId?: string | undefined;
} | undefined;
} & {
name?: string | undefined;
http?: ({
match?: {
path?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
httpMethod?: string[] | undefined;
} | undefined;
route?: {
timeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: string[] | undefined;
} | undefined;
redirect?: {
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} | undefined;
directResponse?: {
status?: number | undefined;
body?: {
text?: string | undefined;
} | undefined;
} | undefined;
} & {
match?: ({
path?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
httpMethod?: string[] | undefined;
} & {
path?: ({
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} & {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["match"]["path"], "$type" | "exactMatch" | "prefixMatch" | "regexMatch">, never>) | undefined;
httpMethod?: (string[] & string[] & Record<Exclude<keyof I["routes"][number]["http"]["match"]["httpMethod"], "$type" | keyof string[]>, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["match"], "$type" | "path" | "httpMethod">, never>) | undefined;
route?: ({
timeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: string[] | undefined;
} & {
timeout?: ({
seconds?: number | undefined;
nanos?: number | undefined;
} & {
seconds?: number | undefined;
nanos?: number | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["route"]["timeout"], "$type" | "seconds" | "nanos">, never>) | undefined;
backendGroupId?: string | undefined;
idleTimeout?: ({
seconds?: number | undefined;
nanos?: number | undefined;
} & {
seconds?: number | undefined;
nanos?: number | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["route"]["idleTimeout"], "$type" | "seconds" | "nanos">, never>) | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
prefixRewrite?: string | undefined;
upgradeTypes?: (string[] & string[] & Record<Exclude<keyof I["routes"][number]["http"]["route"]["upgradeTypes"], "$type" | keyof string[]>, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["route"], "$type" | "timeout" | "backendGroupId" | "idleTimeout" | "hostRewrite" | "autoHostRewrite" | "prefixRewrite" | "upgradeTypes">, never>) | undefined;
redirect?: ({
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} & {
replaceScheme?: string | undefined;
replaceHost?: string | undefined;
replacePort?: number | undefined;
replacePath?: string | undefined;
replacePrefix?: string | undefined;
removeQuery?: boolean | undefined;
responseCode?: RedirectAction_RedirectResponseCode | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["redirect"], "$type" | "replaceScheme" | "replaceHost" | "replacePort" | "replacePath" | "replacePrefix" | "removeQuery" | "responseCode">, never>) | undefined;
directResponse?: ({
status?: number | undefined;
body?: {
text?: string | undefined;
} | undefined;
} & {
status?: number | undefined;
body?: ({
text?: string | undefined;
} & {
text?: string | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["directResponse"]["body"], "$type" | "text">, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"]["directResponse"], "$type" | "status" | "body">, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["http"], "$type" | "match" | "route" | "redirect" | "directResponse">, never>) | undefined;
grpc?: ({
match?: {
fqmn?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
route?: {
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
} | undefined;
statusResponse?: {
status?: GrpcStatusResponseAction_Status | undefined;
} | undefined;
} & {
match?: ({
fqmn?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} & {
fqmn?: ({
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} & {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["match"]["fqmn"], "$type" | "exactMatch" | "prefixMatch" | "regexMatch">, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["match"], "$type" | "fqmn">, never>) | undefined;
route?: ({
backendGroupId?: string | undefined;
idleTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: {
seconds?: number | undefined;
nanos?: number | undefined;
} | undefined;
} & {
backendGroupId?: string | undefined;
idleTimeout?: ({
seconds?: number | undefined;
nanos?: number | undefined;
} & {
seconds?: number | undefined;
nanos?: number | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["route"]["idleTimeout"], "$type" | "seconds" | "nanos">, never>) | undefined;
hostRewrite?: string | undefined;
autoHostRewrite?: boolean | undefined;
maxTimeout?: ({
seconds?: number | undefined;
nanos?: number | undefined;
} & {
seconds?: number | undefined;
nanos?: number | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["route"]["maxTimeout"], "$type" | "seconds" | "nanos">, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["route"], "$type" | "backendGroupId" | "idleTimeout" | "hostRewrite" | "autoHostRewrite" | "maxTimeout">, never>) | undefined;
statusResponse?: ({
status?: GrpcStatusResponseAction_Status | undefined;
} & {
status?: GrpcStatusResponseAction_Status | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"]["statusResponse"], "$type" | "status">, never>) | undefined;
} & Record<Exclude<keyof I["routes"][number]["grpc"], "$type" | "match" | "route" | "statusResponse">, never>) | undefined;
routeOptions?: ({
modifyRequestHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
modifyResponseHeaders?: {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] | undefined;
rbac?: {
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} | undefined;
securityProfileId?: string | undefined;
} & {
modifyRequestHeaders?: ({
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] & ({
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
} & {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
} & Record<Exclude<keyof I["routes"][number]["routeOptions"]["modifyRequestHeaders"][number], "$type" | "replace" | "name" | "append" | "remove" | "rename">, never>)[] & Record<Exclude<keyof I["routes"][number]["routeOptions"]["modifyRequestHeaders"], "$type" | keyof {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[]>, never>) | undefined;
modifyResponseHeaders?: ({
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[] & ({
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
} & {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
} & Record<Exclude<keyof I["routes"][number]["routeOptions"]["modifyResponseHeaders"][number], "$type" | "replace" | "name" | "append" | "remove" | "rename">, never>)[] & Record<Exclude<keyof I["routes"][number]["routeOptions"]["modifyResponseHeaders"], "$type" | keyof {
replace?: string | undefined;
name?: string | undefined;
append?: string | undefined;
remove?: boolean | undefined;
rename?: string | undefined;
}[]>, never>) | undefined;
rbac?: ({
action?: RBAC_Action | undefined;
principals?: {
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] | undefined;
} & {
action?: RBAC_Action | undefined;
principals?: ({
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;
} | undefined;
} | undefined;
remoteIp?: string | undefined;
any?: boolean | undefined;
}[] | undefined;
}[] & ({
andPrincipals?: {
header?: {
name?: string | undefined;
value?: {
exactMatch?: string | undefined;
prefixMatch?: string | undefined;
regexMatch?: string | undefined;