Здесь описана спецификация расширений, которые начинаются с префикса x-cloud.
Расширение x-cloud-authtype позволяет указать тип авторизации для правила.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
- | str, enum | Да | Возможные значения: awsSigv4, iam Тип авторизации указывается в секции components:securitySchemes.
|
Значение можно объявить только в components:securitySchemes. На уровне root, operation его можно переиспользовать с помощью OpenAPI-объекта security.
openapi: 3.0.0info:version: 1.0.0title: Testsecurity:- awsSignatureAuth: []paths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"post:operationId: postDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"security:- iamAuth: []components:securitySchemes:iamAuth:type: apiKey # this parameter is ignoredname: Authorization # this parameter is ignoredin: header # this parameter is ignoredx-cloud-authtype: iamawsSignatureAuth:type: apiKey # this parameter is ignoredname: Authorization # this parameter is ignoredin: header # this parameter is ignoredx-cloud-authtype: awsSigv4x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-circuit-breaker позволяет отклонять API запросы в случае недоступности бекэнда.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
max_breaker_sec | int | Да | Максимальное время работы режима отклонения запросов, сек. Значение должно быть больше или равно 3. |
break_response_body | str | Нет | Тело ответа, когда upstream находится в статусе unhealthy. Внимание Параметр временно отключен. |
break_response_headers | list[Object[str, str]] | Нет | Заголовки ответа, когда upstream находится в статусе unhealthy.
|
break_response_code | int | Да | Возможные значения: 200–599. HTTP-код ответа, когда upstream находится в статусе unhealthy. |
healthy | CircuitBreakerHealthyObject | Да | Настройки healthy статуса для upstream. |
unhealthy | CircuitBreakerUnhealthyObject | Да | Настройки unhealthy статуса для upstream. |
Параметры CircuitBreakerHealthyObject
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
http_statuses | list[int] | Нет | Список кодов статуса для healthy upstream. Возможные значения: 200–599. По умолчанию 200. |
successes | int | Да | Количество успешных запросов для healthy upstream. Должно быть более 0. |
Параметры CircuitBreakerUnhealthyObject
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
http_statuses | list[int] | Нет | Список кодов статуса для unhealthy upstream. Возможные значения: 500, 599. По умолчанию 500. |
failures | int | Да | Количество успешных запросов для unhealthy upstream. Должно быть более 0. |
Может быть объявлено на уровне root, path, operation.
Использование ref разрешено только через components:x-cloud-circuit-breakers.
Пример спецификации на уровне path:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"x-cloud-circuit-breaker:break_response_code: 502max_breaker_sec: 3unhealthy:http_statuses:- 502- 504failures: 3healthy:http_statuses:- 200- 201successes: 3components:x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-cors позволяет настроить совместное использование ресурсов (CORS).
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
allow_origins | str или list | Нет | Источники, для которых разрешен CORS. Примеры: list[str] = ["https://example.com", https://example2.com"]str = "https://example.com,https://example2.com" |
allow_headers | str или list | Нет | Заголовки запросов, которые разрешены при доступе к ресурсу. |
expose_headers | str или list | Нет | Заголовки ответов, которые разрешены при доступе к ресурсу. |
allow_methods | str или list, enum | Нет | Методы, для которых разрешен CORS. Возможные значения: ["GET", "POST", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT", "TRACE", "*"] |
max_age | str или list, enum | Нет | Максимальное время в секундах, в течение которого результат кешируется. По умолчанию 5. Если время находится в пределах этого ограничения, браузер проверит кешированный результат. Установите значение -1, чтобы отключить кеширование. Максимальное значение зависит от браузера. |
allow_credential | boolean | Нет | Разрешить запросы, содержащие заголовок Access-Control-Allow-Credentials. Внимание При значении True запрещено использовать «*» в полях allow_origins, allow_headers, expose_headers, allow_methods. |
Может быть объявлено на уровне root, path.
Использование ref разрешено только через x-cloud-cors-rules.
Пример спецификации на уровне root:
openapi: 3.0.0info:version: 1.0.0title: Testx-cloud-cors:allow_origins: '*'allow_methods: ["GET"]allow_headers: '*'allow_credential: falseexpose_headers: '*'paths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"components:x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-limit-count позволяет ограничить число запросов к целевому хосту в период времени.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
count | int | Да | Максимальное количество запросов в единицу времени. Должно быть больше 0. |
time_window | int | Да | Время в секундах, через которое счетчик количества запросов будет сброшен. Должно быть больше 0. |
rejected_code | int | Нет | Код HTTP-ответа, возвращаемый в случае отклонения запроса из-за превышения лимита. Диапазон значений: 200 - 599. По умолчанию 503. |
Может быть объявлено на уровне root, path, operation.
Использование ref разрешено только через components:x-cloud-limit-counts.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"x-cloud-limit-count:count: 10time_window: 5rejected_code: 429components:x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-log-group позволяет включить логирование запросов для правил.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
- | UUID | Да | Лог-группа может указываться на уровнях root, path и operation следующим образом — x-cloud-log-group: <UUID>. Должно быть больше 0. |
Может быть объявлено на уровне root, path, operation.
Использование ref разрешено только через components:x-cloud-log-groups.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-log-group: 5afbf5a5-46da-40d1-a409-c9a3310b720ax-cloud-mock:content_type: "application/json"delay: 1response_status: 200response_example: '{"status": "Success GET"}'
Расширение x-cloud-mock возвращает в ответе статичные данные без участия стороннего сервиса.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
delay | int | Нет | Задержка ответа в секундах. Должна быть больше 0. |
response_status | int, enum: [200-599] | Нет | HTTP-код ответа. Диапазон значений: 200 - 599. |
Может быть объявлено на уровне operation.
Использование ref разрешено только через components:x-cloud-mocks.
Несовместимо с расширениями x-cloud-circuit-breaker, x-cloud-redirect, x-cloud-traffic-split, x-cloud-proxy-rewrite, x-cloud-upstream.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-mock:content_type: "application/json"delay: 1response_status: 200response_example: '{"status": "Success GET"}'
Расширение x-cloud-proxy-cache позволяет настроить хранение в кеше ответов на запросы.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
cache_methods | str или list[str], enum | Да | Методы запросов, которые будут закешированы. Возможные значения: GET, POST, HEAD. |
cache_ttl | int | Да | Время в секундах, по истечении которого кешированные данные удаляются, если нет повторных запросов. Должно быть больше 0. |
cache_http_status | int | Да | Время в секундах, по истечении которого кешированные данные удаляются, если нет повторных запросов. |
Может быть объявлено на уровнях root, path.
Использование ref разрешено только через components:x-cloud-proxy-cache-rules.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-mock:content_type: "application/json"delay: 1response_status: 200response_example: '{"status": "Success GET"}'
Расширение x-cloud-proxy-rewrite позволяет настроить правила перенаправления трафика на целевой бэкенд через прокси.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
uris | list[ProxyRewriteUriObject] | Да | Правила переадресации, определенные в ProxyRewriteUriObject. |
headers | Object[str, str] | Нет | Заголовки, которые будут добавлены к запросу при маршрутизации на целевой хост. |
В таблице ниже перечислены параметры ProxyRewriteUriObject.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
forward_from | str, regex | Да | URI, к которому будет применено правило маршрутизации на forward_to. Если запрошенный клиентом URI совпадает со значением forward_from, то в upstream будет добавлено значение параметра forward_to. Регулярное выражение для проверки: ^(\/([a-zA-Z0-9\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(%[a-fA-F0-9]{2,2}))*)+$ |
forward_to | str, regex | Нет | URI, на который будет перенаправлен трафик на целевой бекэнд. Регулярное выражение для проверки: ^(\/([a-zA-Z0-9\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(%[a-fA-F0-9]{2,2}))*)+$ |
Может быть объявлено на уровнях path, operation.
Требует наличия расширений x-cloud-upstream или x-cloud-traffic-split.
Несовместимо с расширениями x-cloud-redirect или x-cloud-mock.
Использование ref разрешено только через components:x-cloud-proxy-rewrites.
Пример спецификации на уровне path:
Так как x-cloud-proxy-rewrite указан на уровне path, плагин применится как к методу GET, так и к методу POST.
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"post:operationId: postDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"x-cloud-proxy-rewrite:uris:- forwarded_from: /forwarded_to: /v2headers:X-Version: 1components:x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-redirect позволяет перенаправить запрос на определенный URL-адрес целевого хоста.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
uri | str | Да | URL-адрес, куда будет перенаправлен запрос. |
ret_code | int, enum | Нет | Возможные значения: 200–599. Значение по умолчанию: 302. HTTP-код ответа, когда upstream находится в статусе unhealthy. |
encode_uri | boolean | Нет | Если указано значение True, URI в заголовке Location будет закодирован в соответствии с RFC3986. |
append_query_string | boolean | Нет | Добавляет query-параметры запроса в заголовок Location. Eсли URI уже содержит query-параметр, новые параметры query будут добавлены через &. |
Может быть объявлено на уровнях operation, path.
Несовместимо с расширениями x-cloud-circuit-breaker, x-cloud-limit-count, x-cloud-proxy-cache, x-cloud-proxy-rewrite, x-cloud-response-rewrite, x-cloud-upstream, x-cloud-traffic-split.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/redirect:get:operationId: getDemox-cloud-redirect:uri: https://example.comencode_uri: trueappend_query_string: true
Расширение x-cloud-response-rewrite позволяет переписать код ответа, тело ответа, заголовки ответа.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
status_code | int | Да | Возможные значения: 200–599. Код HTTP-ответа, возвращаемый при перезаписи. Оставьте поле пустым, если перезапись кода ответа не требуется. |
body | str | Нет | Тело HTTP-ответа, возвращаемое при перезаписи. Оставьте поле пустым, если перезапись тела ответа не требуется. |
headers | Object[str, str] | Нет | Время в секундах, по истечении которого кешированные данные удаляются, если нет повторных запросов. |
Может быть объявлено на уровнях operation.
Использование ref разрешено только через components:x-cloud-response-rewrites.
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-upstream:$ref: "#/components/x-cloud-upstreams/HttpUpstream"x-cloud-response-rewrite:status_code: 200body: '{"status": "Success"}'body_base64: falseheaders:X-Test-Header: valuecomponents:x-cloud-upstreams:HttpUpstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-traffic-split позволяет разделять трафик на целевые бекэнды в различных соотношениях.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
groups | TrafficSplitGroupObject | Нет | Список групп для разделения трафика |
В таблице ниже перечислены параметры TrafficSplitGroupObject.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
match | TrafficSplitGroupHeaderObject | Да | Заголовок, определяющий, к какой группе отнести запрос клиента. |
backends | list[TrafficSplitWeightedUpstreamObject] | Да | Список взвешенных подключений (объектов upstream) группы. |
В таблице ниже перечислены параметры TrafficSplitWeightedUpstreamObject.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
backend | объект x-cloud-upstream или $ref: | Да | Настройки подключения. |
weight | int | Да | Вес подключения. |
Может быть объявлено на уровнях operation.
Несовместимо с расширениями x-cloud-mock, x-cloud-redirect, x-cloud-upstream.
Пример спецификации на уровне operation:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-traffic-split:groups:- match:- variable: X-Versionoperator: ==value: "1"backends:- backend:$ref: "#/components/x-cloud-upstreams/CloudUpstream"weight: 1- match:- variable: X-Versionoperator: ==value: "2"backends:- backend:$ref: "#/components/x-cloud-upstreams/HttpBinUpstream"weight: 1components:x-cloud-upstreams:CloudUpstream:name: CloudUpstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: cloud.ruweight: 1timeout:connect: 3send: 3read: 3HttpBinUpstream:name: HttpBin_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: httpbin.orgweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-upstream позволяет создать подключение, которое содержит сведения о целевом хосте вашего бекэнда, принимающем запросы к API.
Данное расширение несовместимо с текущей версией UI, его использование без вспомогательного плагина x-cloud-proxy-rewrite приведет к ошибке рендера в UI. Необходимо задать расширение x-cloud-proxy-rewrite.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
name | str, regex | Да | Имя подключения. Допустимые значения: ^[a-z, A-Z, 0-9][a-z, A-Z, 0-9_\-\.]{0,99}$ |
type | str, enum | Да | Тип подключения. Возможные значения:
|
description | str | Нет | Описание подключения. |
scheme | str, enum | Да | Протокол подключения. Возможные значения: http, https, grpc, grpcs. |
nodes | list[UpstreamNodeObject] | Нет | Узлы подключения. |
timeout | UpstreamTimeoutObject | Да | Таймауты подключения. |
UpstreamNodeObject
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
host или function_id или container_id или vm_id | str/UUID | Да | Доменное имя/ip-адрес/идентификатор целевого хоста. Имя и формат значения параметра соответствует значению параметра type расширения x-cloud-upstream:
|
weight | Да | Вес плеча. Если указано несколько подключений, балансировка осуществляется в соответствии с весами узлов. |
UpstreamTimeoutObject
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
connect | float | Да | Таймаут на подключение. |
read | float | Да | Таймаут на чтение. |
send | float | Да | Таймаут на отправку. |
Может быть объявлено на уровнях operation.
Несовместимо с расширениями x-cloud-mock, x-cloud-redirect.
Пример спецификации при значении type, равным url:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-upstream:name: Http_Upstreamdescription: TestDescriptiontype: urlscheme: httpsnodes:- host: httpbin.orgweight: 1- host: cloud.ruweight: 1timeout:connect: 3send: 3read: 3
Расширение x-cloud-ws позволяет использовать протокол WebSocket для обмена сообщениями между клиентом и сервером.
В таблице ниже перечислены параметры для шлюза Evolution API Gateway.
Название | Тип | Обязательный параметр | Описание |
|---|---|---|---|
- | boolean | Да | Активация WebSocket может быть указана на уровне operation в формате x-cloud-ws: <bool>. |
Может быть объявлено на уровнях operation.
Пример спецификации с x-cloud-ws:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/:get:operationId: getDemox-cloud-ws: truex-cloud-mock:content_type: "application/json"delay: 1response_status: 200response_example: '{"status": "Success GET"}'