x-yc-schema-mapping extension
The x-yc-schema-mapping extension allows you to transform the JSON body of a request to an integration or response from it.
The extension is intended for the Schema object of the OpenAPI specification.
Supported parameters
The table below lists the parameters specific to API Gateway API gateways. You can find the description of other parameters in the OpenAPI 3.0 specification
|
Parameter |
Type |
Description |
|
|
|
Transformation type. The possible value is |
|
|
|
Full body description as a dictionary in |
|
|
String containing a valid jq |
Extension specification
Extension specification depends on the template value type.
Specification example:
x-yc-schema-mapping:
type:static
template:
property1: "value1"
property2: "${.baseProperty1.baseProperty2}"
Example of response body transformation where a user gets a two-field response if the Cloud Functions function returns code 200 and the Content-Type: application/json header:
openapi: "3.0.0"
info:
version: 1.0.0
title: Petstore API
paths:
/pets:
get:
responses:
'200':
description: Pet
content:
application/json:
schema:
type: object
x-yc-schema-mapping:
type: static
template:
Name: "Dog"
Breed: "${.nestedProperty1.nestedProperty2}"
x-yc-apigateway-integration:
type: cloud_functions
function_id: b095c95icn**********
x-yc-schema-mapping:
type: static
template: "${.numbers.firstNumber}"
Example of response body transformation where a user gets a key value from the incoming JSON object (12), obtained after applying the jq template set under template:
openapi: "3.0.0"
info:
version: 1.0.0
title: Test API
paths:
/test:
get:
summary: Number
operationId: Number
responses:
200:
description: Another example
content:
application/json:
schema:
type: object
x-yc-schema-mapping:
type: static
template: "${.numbers.firstNumber}"
x-yc-status-mapping: 201
x-yc-mapping-index:
200: application/json
x-yc-apigateway-integration:
http_code: 200
http_headers:
Content-Type: application/json
Content-Length: '10'
type: dummy
content:
application/json: '{"numbers":{"firstNumber": 12, "secondNumber": 32}}'