Extensões da 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 essas extensões, é 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 da OpenAPI. Entender essas extensões ajuda a personalizar o comportamento do serviço e integrar com os recursos do gateway de API.
Nesta página, descrevemos as extensões específicas do Google para a especificação OpenAPI 3.x.
Embora os exemplos fornecidos estejam no formato YAML, o JSON também é aceito.
x-google-api-management
Obrigatório.
A extensão x-google-api-management define as configurações de gerenciamento de APIs 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 | Configurar serviços de back-end. |
apiName |
string |
Não | Vazio | Associe um nome às operações definidas no documento da OpenAPI. |
ai |
AI |
Não | Vazio | Configurar 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 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 | Referencie 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. É preciso 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 o 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 de instância e o anexe à solicitação. |
pathTranslation |
string |
Não | APPEND_PATH_TO_ADDRESS ou CONSTANT_ADDRESS |
Defina a estratégia de conversão de caminho 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 é definido 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 para aguardar uma resposta completa de uma solicitação. As respostas que excedem esse prazo expiram. Em um endpoint de SSE ou de transferência em blocos, o prazo ainda limita a duração de todo o stream. Em um endpoint de gRPC ou WebSocket, ele limita o intervalo entre as mensagens. Consulte Definir o prazo do stream para ver os tempos limite que se aplicam a cada tipo de solicitação. Omita o campo ou defina-o como 0 para usar o padrão. Um valor negativo é rejeitado. O prazo é configurável até 3.600 segundos. Um gateway que não é de streaming aplica 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 compatíveis incluem http/1.1 e h2. Os requisitos de protocolo dependem do tipo de streaming:- gRPC: é necessário definir o protocolo como h2.- WebSockets: é necessário usar http/1.1.- Eventos enviados pelo servidor (SSE) e entrega de resposta incremental: é possível usar http/1.1 ou h2. Recomendamos o 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 | Defina as configurações de roteamento de modelos. |
Objeto Routing
O objeto Routing define regras de roteamento de modelos e roteadores.
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 roteamento de modelos nomeados. |
Objeto Router
O objeto Router define um roteador de modelos 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 modelos. |
Objeto DefaultModel
O objeto DefaultModel especifica o destino de fallback.
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 o fallback. |
Objeto Rule
O objeto Rule define uma regra explícita de roteamento de modelos.
A tabela a seguir descreve os campos de Rule:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
model |
string |
Sim | Vazio | A string de entrada que 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 os 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 | Defina as configurações do método MCP tools/list. |
Objeto ToolsList
O objeto ToolsList define as configurações do método MCP tools/list.
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. Precisa 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 | Especifique 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 | Informe 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 esta extensão da 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 do 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 que contém o JWT ou o nome 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.
É preciso definir essa extensão para o gateway de API. É possível
definir essa extensão no nível superior do documento da 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 modelos 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 as especificações OpenAPI 3.x. Ela não pode ser usada com as 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 modelos e não modelos em caminhos diferentes na mesma especificação de API. Além disso, não é possível usar o roteamento de modelos em conjunto 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, se quiser, substituir o nome e a descrição gerados para a ferramenta.
Essa extensão é compatível apenas com as especificações OpenAPI 3.x. Ela não pode ser usada com as especificações OpenAPI 2.0 (Swagger). É possível definir essa extensão apenas 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 de ferramenta geradas.
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. Somente uma entrada de servidor no documento da 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 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 |
Permitir 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 modelos de caminho para especificar que o comportamento de correspondência de caracteres 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 da OpenAPI 3.x.