UNPKG

@yandex-cloud/nodejs-sdk

Version:
1,043 lines (1,042 loc) 260 kB
/// <reference types="node" /> import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from "@grpc/grpc-js"; import _m0 from "protobufjs/minimal"; import { RouteOptions, VirtualHost, Route, HeaderModification, HttpRoute, GrpcRoute } from "../../../../yandex/cloud/apploadbalancer/v1/virtual_host"; import { FieldMask } from "../../../../google/protobuf/field_mask"; import { Operation } from "../../../../yandex/cloud/operation/operation"; export declare const protobufPackage = "yandex.cloud.apploadbalancer.v1"; export interface GetVirtualHostRequest { $type: "yandex.cloud.apploadbalancer.v1.GetVirtualHostRequest"; /** * ID of the HTTP router that the virtual host belongs to. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * Name of the virtual host to return. * * To get the virtual host name, make a [VirtualHostService.List] request. */ virtualHostName: string; } export interface ListVirtualHostsRequest { $type: "yandex.cloud.apploadbalancer.v1.ListVirtualHostsRequest"; /** * ID of the HTTP router to list virtual hosts in. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * The maximum number of results per page to return. If the number of available * results is larger than `page_size`, the service returns a [ListVirtualHostsResponse.next_page_token] * that can be used to get the next page of results in subsequent list requests. * Default value: 100. */ pageSize: number; /** * Page token. To get the next page of results, set `page_token` to the * [ListVirtualHostsResponse.next_page_token] returned by a previous list request. */ pageToken: string; } export interface ListVirtualHostsResponse { $type: "yandex.cloud.apploadbalancer.v1.ListVirtualHostsResponse"; /** List of virtual hosts of the specified HTTP router. */ virtualHosts: VirtualHost[]; /** * Token for getting the next page of the list. If the number of results is greater than * the specified [ListVirtualHostsRequest.page_size], use `next_page_token` as the value * for the [ListVirtualHostsRequest.page_token] parameter in the next list request. * * Each subsequent page will have its own `next_page_token` to continue paging through the results. */ nextPageToken: string; } export interface CreateVirtualHostRequest { $type: "yandex.cloud.apploadbalancer.v1.CreateVirtualHostRequest"; /** * ID of the HTTP router to create a virtual host in. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** Name of the virtual host. The name must be unique within the HTTP router and cannot be changed after creation. */ 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[]; /** Modifications that are made to the headers of incoming HTTP requests before they are forwarded to backends. */ modifyRequestHeaders: HeaderModification[]; /** * Modifications that are made to the headers of HTTP responses received from backends * before responses are forwarded to clients. */ modifyResponseHeaders: HeaderModification[]; /** Route options for the virtual host. */ routeOptions?: RouteOptions; } export interface CreateVirtualHostMetadata { $type: "yandex.cloud.apploadbalancer.v1.CreateVirtualHostMetadata"; /** ID of the HTTP router that the virtual host is being created in. */ httpRouterId: string; /** Name of the virtual host that is being created. */ virtualHostName: string; } export interface UpdateVirtualHostRequest { $type: "yandex.cloud.apploadbalancer.v1.UpdateVirtualHostRequest"; /** * ID of the HTTP router to update a virtual host in. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * Name of the virtual host. * * Used only to refer to the virtual host. The name of a host cannot be changed. * * To get the virtual host name, make a [VirtualHostService.List] request. */ virtualHostName: string; /** Field mask that specifies which attributes of the virtual host should be updated. */ updateMask?: FieldMask; /** * New list of domains to attribute 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. * * Existing list of domains is completely replaced by the specified list. * * 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[]; /** * New list of 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. * * Existing list of routes is completely replaced by the specified list, so if you just want to remove a route, * make a [VirtualHostService.RemoveRoute] request. */ routes: Route[]; /** * New list of modifications that are made to the headers of incoming HTTP requests * before they are forwarded to backends. * * Existing list of modifications is completely replaced by the specified list. */ modifyRequestHeaders: HeaderModification[]; /** * New list of modifications that are made to the headers of HTTP responses received from backends * before responses are forwarded to clients. * * Existing list of modifications is completely replaced by the specified list. */ modifyResponseHeaders: HeaderModification[]; /** New route options for the virtual host. */ routeOptions?: RouteOptions; } export interface UpdateVirtualHostMetadata { $type: "yandex.cloud.apploadbalancer.v1.UpdateVirtualHostMetadata"; /** ID of the HTTP router that the virtual host is being updated in. */ httpRouterId: string; /** Name of the virtual host that is being updated. */ virtualHostName: string; } export interface DeleteVirtualHostRequest { $type: "yandex.cloud.apploadbalancer.v1.DeleteVirtualHostRequest"; /** * ID of the HTTP router to delete a virtual host from. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * Name of the virtual host to delete. * * To get the virtual host name, make a [VirtualHostService.List] request. */ virtualHostName: string; } export interface DeleteVirtualHostMetadata { $type: "yandex.cloud.apploadbalancer.v1.DeleteVirtualHostMetadata"; /** ID of the HTTP router that the virtual host is being deleted from. */ httpRouterId: string; /** Name of the virtual host that is being deleted. */ virtualHostName: string; } export interface RemoveRouteRequest { $type: "yandex.cloud.apploadbalancer.v1.RemoveRouteRequest"; /** * ID of the HTTP router to delete a route from. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * Name of the virtual host to delete a route from. * * To get the virtual host name, make a [VirtualHostService.List] request. */ virtualHostName: string; /** * Name of the route to delete. * * To get the route name, make a [VirtualHostService.Get] request. */ routeName: string; } export interface RemoveRouteMetadata { $type: "yandex.cloud.apploadbalancer.v1.RemoveRouteMetadata"; /** ID of the HTTP router that the route is being deleted from. */ httpRouterId: string; /** Name of the virtual host that the route is being deleted from. */ virtualHostName: string; /** Name of the route that is being deleted. */ routeName: string; } export interface UpdateRouteRequest { $type: "yandex.cloud.apploadbalancer.v1.UpdateRouteRequest"; /** * ID of the HTTP router to update a route in. * * To get the HTTP router ID, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * Name of the virtual host to update a route in. * * To get the virtual host name, make a [VirtualHostService.List] request. */ virtualHostName: string; /** * Name of the route to update. * * To get the route name, make a [VirtualHostService.Get] request. */ routeName: string; /** Field mask that specifies which attributes of the route should be updated. */ updateMask?: FieldMask; /** New settings of the HTTP route. */ http?: HttpRoute | undefined; /** New settings of the gRPC route. */ grpc?: GrpcRoute | undefined; /** New route options for the route. */ routeOptions?: RouteOptions; } export interface UpdateRouteMetadata { $type: "yandex.cloud.apploadbalancer.v1.UpdateRouteMetadata"; /** ID of the HTTP router that the route is being updated in. */ httpRouterId: string; /** Name of the virtual host that the route is being updated in. */ virtualHostName: string; /** Name of the route that is being updated. */ routeName: string; } export declare const GetVirtualHostRequest: { $type: "yandex.cloud.apploadbalancer.v1.GetVirtualHostRequest"; encode(message: GetVirtualHostRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): GetVirtualHostRequest; fromJSON(object: any): GetVirtualHostRequest; toJSON(message: GetVirtualHostRequest): unknown; fromPartial<I extends { httpRouterId?: string | undefined; virtualHostName?: string | undefined; } & { httpRouterId?: string | undefined; virtualHostName?: string | undefined; } & Record<Exclude<keyof I, "$type" | "httpRouterId" | "virtualHostName">, never>>(object: I): GetVirtualHostRequest; }; export declare const ListVirtualHostsRequest: { $type: "yandex.cloud.apploadbalancer.v1.ListVirtualHostsRequest"; encode(message: ListVirtualHostsRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): ListVirtualHostsRequest; fromJSON(object: any): ListVirtualHostsRequest; toJSON(message: ListVirtualHostsRequest): unknown; fromPartial<I extends { pageSize?: number | undefined; pageToken?: string | undefined; httpRouterId?: string | undefined; } & { pageSize?: number | undefined; pageToken?: string | undefined; httpRouterId?: string | undefined; } & Record<Exclude<keyof I, "$type" | "pageSize" | "pageToken" | "httpRouterId">, never>>(object: I): ListVirtualHostsRequest; }; export declare const ListVirtualHostsResponse: { $type: "yandex.cloud.apploadbalancer.v1.ListVirtualHostsResponse"; encode(message: ListVirtualHostsResponse, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): ListVirtualHostsResponse; fromJSON(object: any): ListVirtualHostsResponse; toJSON(message: ListVirtualHostsResponse): unknown; fromPartial<I extends { nextPageToken?: string | undefined; virtualHosts?: { 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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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; } & { nextPageToken?: string | undefined; virtualHosts?: ({ 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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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[] | 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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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["virtualHosts"][number]["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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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?: import("../../../../yandex/cloud/apploadbalancer/v1/virtual_host").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["virtualHosts"][number]["routes"][number]["http"]["match"]["path"], "$type" | "exactMatch" | "prefixMatch" | "regexMatch">, never>) | undefined; httpMethod?: (string[] & string[] & Record<Exclude<keyof I["virtualHosts"][number]["routes"][number]["http"]["match"]["httpMethod"], "$type" | keyof string[]>, never>) | undefined; } & Record<Exclude<keyof I["virtualHosts"][number]["routes"][number]["http"]["match"], "$type" | "path" | "httpMethod">, never>) | undefined; route?: ({ timeout?: { seconds?: number | undefined; nanos?: number | undefined;