Extensões OpenAPI 3.x no gateway de API
O gateway de API aceita um conjunto de extensões específicas do Google para a especificação OpenAPI que configuram os comportamentos do gateway. Com elas, é possível especificar configurações de gerenciamento de APIs, métodos de autenticação, limites de cota e integrações de back-end diretamente no documento OpenAPI. Entender essas extensões ajuda você a adaptar o comportamento do serviço e se integrar aos recursos do gateway de API.
Esta página descreve extensões específicas do Google para a especificação OpenAPI 3.x.
Os exemplos abaixo estão no formato YAML, mas o formato JSON também é aceito.
x-google-api-management
Obrigatório.
A extensão x-google-api-management define as configurações de gerenciamento de API de nível superior para seu serviço. Coloque essa extensão na raiz do documento da OpenAPI.
A tabela a seguir descreve os campos de x-google-api-management:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
metrics |
map[string]Metric |
Não | Vazio | Defina métricas para aplicar limites de cota. |
quota |
map[string]Quota |
Não | Vazio | Especifique os limites de cota para seu serviço. |
backends |
map[string]Backend |
Sim | Vazio | Configure os serviços de back-end. |
apiName |
string |
Não | Vazio | Associe um nome às operações definidas no documento OpenAPI. |
ai |
AI |
Não | Vazio | Configure recursos de inteligência artificial, incluindo o roteamento de modelos. |
mcp |
MCP ou bool |
Não | Vazio | Ativar ou configurar recursos do Protocolo de Contexto de Modelo (MCP). |
Objeto Metric
O objeto Metric define uma métrica usada para a aplicação de cotas.
A tabela a seguir descreve os campos de Metric:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
displayName |
string |
Não | Vazio | Nome de exibição da métrica. |
Objeto Quota
O objeto Quota define limites de cota.
A tabela a seguir descreve os campos de Quota:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
limits |
map[string]QuotaLimit |
Não | Vazio | Especifique os limites de cota. |
Objeto QuotaLimit
O objeto QuotaLimit define um limite de cota específico.
A tabela a seguir descreve os campos de QuotaLimit:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
metric |
string |
Sim | Referencia uma métrica declarada neste documento da OpenAPI. |
values |
int64 |
Sim | Defina o valor máximo que a métrica pode atingir antes que as solicitações do cliente sejam negadas. |
Objeto Backends
Obrigatório.
O objeto Backends configura um serviço de back-end. É necessário definir jwtAudience ou disableAuth.
A tabela a seguir descreve os campos de Backends:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
address |
string |
Sim | Vazio | Especifique o URL do back-end. |
jwtAudience |
string |
Não | Vazio | Por padrão, o gateway de API cria o token de ID da instância com um público-alvo JWT que corresponde ao campo de endereço. A especificação manual de jwt_audience só é necessária quando o back-end de destino usa autenticação baseada em JWT e o público-alvo esperado é diferente do valor especificado no campo de endereço. Para back-ends remotos implantados no App Engine ou com IAP, é necessário substituir o público-alvo do JWT. O App Engine e o IAP usam o ID do cliente OAuth como público esperado. |
disableAuth |
bool |
Não | False |
Impedir que o proxy do plano de dados receba um token de ID da instância e o anexe à solicitação. |
pathTranslation |
string |
Não | APPEND_PATH_TO_ADDRESS ou CONSTANT_ADDRESS |
Defina a estratégia de tradução de caminhos ao fazer proxy de solicitações para o back-end de destino. Quando x-google-backend é definido no nível superior e nenhum path_translation é especificado, o pathTranslation padrão é APPEND_PATH_TO_ADDRESS. Quando x-google-backend está ativado no nível da operação e nenhum path_translation é especificado, o padrão é CONSTANT_ADDRESS. |
deadline |
double |
Não | 15.0 |
Especifique o número de segundos a serem aguardados por uma resposta completa de uma solicitação. As respostas que excederem esse prazo vão expirar. Em um endpoint SSE ou de transferência em partes, o prazo ainda limita a duração de todo o fluxo. Em um endpoint gRPC ou WebSocket, ele limita a lacuna entre as mensagens. Consulte Definir o prazo da transmissão para ver os tempos limite aplicáveis a cada tipo de solicitação. O prazo pode ser configurado em até 3.600 segundos. Um gateway não de streaming impõe um máximo menor de 600 segundos, rejeitando um prazo maior na criação ou atualização do gateway em vez de na criação da configuração da API. |
protocol |
string |
Não | http/1.1 |
Defina o protocolo para enviar uma solicitação ao back-end. Os valores aceitos são http/1.1 e h2. Os requisitos de protocolo dependem do tipo de streaming:- gRPC: defina o protocolo como h2.- WebSockets: use http/1.1.- Eventos enviados pelo servidor (SSE) e entrega incremental de respostas: use http/1.1 ou h2. Recomendamos h2 para melhorar o desempenho. |
Objeto AI
O objeto AI configura recursos de inteligência artificial para seu serviço, como o roteamento de modelos.
A tabela a seguir descreve os campos de AI:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
models |
Models |
Não | Vazio | Configurar integrações de modelos de IA. |
Objeto Models
O objeto Models define configurações específicas do modelo.
A tabela a seguir descreve os campos de Models:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
routing |
Routing |
Não | Vazio | Configure as configurações de roteamento de modelos. |
Objeto Routing
O objeto Routing define regras e roteadores de roteamento de modelo.
A tabela a seguir descreve os campos de Routing:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
routers |
map[string]Router |
Não | Vazio | Defina roteadores de modelo nomeados. |
Objeto Router
O objeto Router define um roteador de modelo nomeado.
A tabela a seguir descreve os campos de Router:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
defaultModel |
DefaultModel |
Sim | Vazio | O destino do modelo substituto obrigatório usado quando uma solicitação recebida não corresponde a nenhuma regra explícita. |
rules |
[Rule] |
Não | Vazio | Lista de regras explícitas de roteamento de modelo. |
Objeto DefaultModel
O objeto DefaultModel especifica o destino alternativo.
A tabela a seguir descreve os campos de DefaultModel:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
backend |
string |
Sim | Vazio | Referencie um back-end declarado em x-google-api-management.backends. |
targetModel |
string |
Sim | Vazio | Especifique o identificador do modelo de destino no formato <provider>/<model-id>. Para rotas compatíveis com a OpenAI, esse valor é encaminhado como o atributo model de saída no corpo da solicitação quando ocorre um fallback. |
Objeto Rule
O objeto Rule define uma regra explícita de roteamento de modelo.
A tabela a seguir descreve os campos de Rule:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
model |
string |
Sim | Vazio | A string recebida corresponde ao atributo model no payload JSON do cliente. Para rotas compatíveis com a OpenAI, essa string é encaminhada como o atributo model de saída no corpo da solicitação e precisa ser uma string <provider>/<model-id> válida. |
backend |
string |
Sim | Vazio | Referencie um back-end declarado em x-google-api-management.backends. |
targetModel |
string |
Sim | Vazio | Especifique o identificador do modelo de destino no formato <provider>/<model-id>. Esse valor seleciona a tradução do provedor e é repetido no campo model da resposta. |
Objeto MCP
O objeto MCP configura recursos do Protocolo de Contexto de Modelo (MCP) para seu serviço. É possível definir mcp como um valor booleano ou um objeto. Defina como true para ativar o MCP globalmente em todas as operações qualificadas com as configurações padrão.
A tabela a seguir descreve os campos do objeto MCP:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
tools-list |
ToolsList |
Não | Vazio | Configure as definições do método tools/list do MCP. |
Objeto ToolsList
O objeto ToolsList configura as definições do método tools/list do MCP.
A tabela a seguir descreve os campos de ToolsList:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
security |
map |
Não | Vazio | Ativa a autenticação no tools/list. Como prática recomendada de segurança, é altamente recomendável configurar essa opção. É necessário nomear exatamente um esquema de segurança de JWT ou chave de API definido em components.securitySchemes. |
x-google-auth
Opcional.
A extensão x-google-auth define as configurações de autenticação em um objeto de esquema de segurança.
A tabela a seguir descreve os campos de x-google-auth:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
issuer |
string |
Não | Vazio | Especifica o emissor de uma credencial. Os valores podem ser um nome de host ou um endereço de e-mail. |
jwksUri |
string |
Não | Vazio | Forneça o URI do conjunto de chaves públicas do provedor para validar a assinatura do JSON Web Token. O gateway de API é compatível com dois formatos de chave pública assimétrica definidos por essa extensão OpenAPI:
Se você estiver usando um formato de chave simétrica, defina |
audiences |
[string] |
Não | Vazio | Liste os públicos-alvo que o campo aud do JWT precisa corresponder durante a autenticação do JWT. |
jwtLocations |
[JwtLocations] |
Não | Vazio | Personalize os locais para o token JWT. Por padrão, um JWT é transmitido no cabeçalho Authorization (com o prefixo "Bearer "), no cabeçalho X-Goog-Iap-Jwt-Assertion ou no parâmetro de consulta access_token. |
Objeto JwtLocations
O objeto JwtLocations fornece locais personalizados para o token JWT.
A tabela a seguir descreve os campos de JwtLocations:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
header | query |
string |
Sim | N/A | Especifique o nome do cabeçalho ou do parâmetro de consulta que contém o JWT. |
valuePrefix |
string |
Não | Vazio | Somente para cabeçalho. Quando definido, o valor precisa corresponder ao prefixo do valor do cabeçalho que contém o JWT. |
x-google-quota
Opcional.
A extensão x-google-quota é usada em operações individuais para especificar
quais métricas definidas em x-google-api-management.metrics são afetadas por
solicitações para essa operação.
x-google-quota é um objeto que contém pares de chave-valor, em que cada chave é um nome de métrica e o valor é o custo inteiro de cada solicitação para a operação.
Exemplo:
x-google-api-management:
metrics:
read-requests:
displayName: "Greeter requests"
write-requests:
displayName: "Greeter requests by name"
quota:
limits:
read-requests-limit:
metric: read-requests
values: 1
# Set at the top-level so this applies to all operations (unless overridden)
x-google-quota:
read-requests: 1
paths:
/v1/projects/projectId/pets:
get:
# Set at the path level, so it overrides the top level quota
x-google-quota:
write-requests: 1
x-google-backend
Obrigatório.
A extensão x-google-backend faz referência a um back-end definido em
x-google-api-management.backends. Quando usado, o valor precisa ser uma string que
corresponda ao nome de um back-end definido em x-google-api-management.backends.
É necessário definir essa extensão para o gateway de API. É possível definir essa extensão no nível superior do documento OpenAPI ou para uma operação individual para substituir o back-end de nível superior.
Exemplo:
x-google-api-management:
backends:
my-backend:
address: myapp.run.app
x-google-backend: my-backend
x-google-model-router
Opcional.
A extensão x-google-model-router faz referência a um roteador de modelo definido em x-google-api-management.ai.models.routing.routers. Quando usado, o valor precisa ser uma string que corresponda ao nome de um roteador definido em x-google-api-management.ai.models.routing.routers.
Essa extensão é compatível apenas com especificações OpenAPI 3.x e não pode ser usada com especificações OpenAPI 2.0 (Swagger). É possível definir essa extensão apenas no nível da operação individual para operações que usam o método HTTP POST. Não é possível especificar x-google-model-router e x-google-backend na mesma operação, nem misturar operações de roteamento de modelo e sem modelo em diferentes caminhos na mesma especificação de API. Além disso, não é possível usar o roteamento de modelo com o Protocolo de Contexto de Modelo (MCP). Ativar x-google-api-management.mcp torna essa extensão indisponível.
Exemplo:
x-google-api-management:
backends:
gemini-backend:
address: https://aiplatform.googleapis.com/v1/...
ai:
models:
routing:
routers:
my-router:
defaultModel:
backend: gemini-backend
targetModel: google/gemini-3.5-flash-lite
paths:
/v1/chat:
post:
x-google-model-router: my-router
x-google-mcp-tool
Opcional.
A extensão x-google-mcp-tool é usada em operações individuais para expô-las como ferramentas do MCP e, opcionalmente, substituir o nome e a descrição gerados da ferramenta.
Essa extensão é compatível apenas com especificações OpenAPI 3.x e não pode ser usada com especificações OpenAPI 2.0 (Swagger). Essa extensão só pode ser definida no nível da operação individual.
Aceita um booleano ou um objeto.
- Formulário booleano: defina como
truepara ativar essa operação. Defina comofalsepara desativar, substituindo uma ativação global. - Formulário de objeto: ative e substitua as configurações da ferramenta gerada.
A tabela a seguir descreve os campos de x-google-mcp-tool quando usado como um objeto:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
name |
string |
Não | O operationId da operação |
O nome da ferramenta do MCP. Precisa corresponder a [A-Za-z0-9_.-]{1,128} e ser exclusivo em toda a especificação. |
description |
string |
Não | A descrição da operação, voltando ao resumo | A descrição da ferramenta MCP. Esse é o principal indicador que um LLM usa para selecionar ferramentas. |
Exemplo:
paths:
/v1/shelves/{shelf}:
delete:
operationId: deleteShelf
summary: Delete a shelf.
x-google-backend: bookstore-backend
x-google-mcp-tool:
name: delete_shelf
description: "Permanently delete a shelf and every book on it."
x-google-endpoint
Opcional.
A extensão x-google-endpoint é usada para configurar as propriedades de um servidor definido na matriz servers de um documento OpenAPI 3.x. Apenas uma entrada de servidor no documento OpenAPI pode usar a extensão x-google-endpoint.
A extensão também define outros recursos de back-end, incluindo:
CORS: é possível ativar o compartilhamento de recursos entre origens (CORS) definindo a propriedade
allowCorscomotrue.Caminho base: o caminho base definido no servidor com
x-google-endpointé usado para sua API. Por exemplo, a configuração a seguir definev1como o caminho de base:
servers:
- url: https://API_NAME.apigateway.PROJECT_ID.cloud.goog/v1
x-google-endpoint: {}
A tabela a seguir descreve os campos de x-google-endpoint:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
allowCors |
bool |
Não | false |
Permita solicitações de CORS. |
x-google-parameter
Opcional.
A extensão x-google-parameter é definida em um item parameter. Isso pode ser usado quando o caminho usa criação de modelos de caminho para especificar que o comportamento de correspondência de curinga duplo deve ser usado.
A tabela a seguir descreve os campos de x-google-parameter:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
pattern |
string |
Sim | Ele precisa ser definido como **. |
Entender as limitações da extensão OpenAPI
Essas extensões da OpenAPI têm limitações específicas. Para saber mais, consulte Limitações de recursos do OpenAPI 3.x.