Create OAS API.
curl --request POST \
--url https://{tenant}/api/apis/oas \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"components": {
"securitySchemes": {
"bearerAuth": {
"description": "The API Access Credentials",
"scheme": "bearer",
"type": "http"
}
}
},
"info": {
"description": "This is a sample OpenAPI description.",
"title": "Sample OpenAPI description",
"version": "1.0.0"
},
"openapi": "3.0.3",
"paths": {
"/api/sample/users": {
"get": {
"operationId": "getUsersSample",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"properties": {
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
}
},
"description": "fetched users"
}
},
"summary": "Get users",
"tags": [
"users"
]
}
}
},
"security": [
{
"bearerAuth": []
}
],
"servers": [
{
"url": "https://localhost:8080"
}
],
"x-tyk-api-gateway": {
"info": {
"name": "user",
"state": {
"active": true
}
},
"server": {
"listenPath": {
"strip": true,
"value": "/user-test-one/"
}
},
"upstream": {
"url": "https://localhost:8080"
}
}
}
'import requests
url = "https://{tenant}/api/apis/oas"
payload = {
"components": { "securitySchemes": { "bearerAuth": {
"description": "The API Access Credentials",
"scheme": "bearer",
"type": "http"
} } },
"info": {
"description": "This is a sample OpenAPI description.",
"title": "Sample OpenAPI description",
"version": "1.0.0"
},
"openapi": "3.0.3",
"paths": { "/api/sample/users": { "get": {
"operationId": "getUsersSample",
"responses": { "200": {
"content": { "application/json": { "schema": {
"items": {
"properties": { "name": { "type": "string" } },
"type": "object"
},
"type": "array"
} } },
"description": "fetched users"
} },
"summary": "Get users",
"tags": ["users"]
} } },
"security": [{ "bearerAuth": [] }],
"servers": [{ "url": "https://localhost:8080" }],
"x-tyk-api-gateway": {
"info": {
"name": "user",
"state": { "active": True }
},
"server": { "listenPath": {
"strip": True,
"value": "/user-test-one/"
} },
"upstream": { "url": "https://localhost:8080" }
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
components: {
securitySchemes: {
bearerAuth: {description: 'The API Access Credentials', scheme: 'bearer', type: 'http'}
}
},
info: {
description: 'This is a sample OpenAPI description.',
title: 'Sample OpenAPI description',
version: '1.0.0'
},
openapi: '3.0.3',
paths: {
'/api/sample/users': {
get: {
operationId: 'getUsersSample',
responses: {
'200': {
content: {
'application/json': {
schema: {items: {properties: {name: {type: 'string'}}, type: 'object'}, type: 'array'}
}
},
description: 'fetched users'
}
},
summary: 'Get users',
tags: ['users']
}
}
},
security: [{bearerAuth: []}],
servers: [{url: 'https://localhost:8080'}],
'x-tyk-api-gateway': {
info: {name: 'user', state: {active: true}},
server: {listenPath: {strip: true, value: '/user-test-one/'}},
upstream: {url: 'https://localhost:8080'}
}
})
};
fetch('https://{tenant}/api/apis/oas', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}/api/apis/oas",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'components' => [
'securitySchemes' => [
'bearerAuth' => [
'description' => 'The API Access Credentials',
'scheme' => 'bearer',
'type' => 'http'
]
]
],
'info' => [
'description' => 'This is a sample OpenAPI description.',
'title' => 'Sample OpenAPI description',
'version' => '1.0.0'
],
'openapi' => '3.0.3',
'paths' => [
'/api/sample/users' => [
'get' => [
'operationId' => 'getUsersSample',
'responses' => [
'200' => [
'content' => [
'application/json' => [
'schema' => [
'items' => [
'properties' => [
'name' => [
'type' => 'string'
]
],
'type' => 'object'
],
'type' => 'array'
]
]
],
'description' => 'fetched users'
]
],
'summary' => 'Get users',
'tags' => [
'users'
]
]
]
],
'security' => [
[
'bearerAuth' => [
]
]
],
'servers' => [
[
'url' => 'https://localhost:8080'
]
],
'x-tyk-api-gateway' => [
'info' => [
'name' => 'user',
'state' => [
'active' => true
]
],
'server' => [
'listenPath' => [
'strip' => true,
'value' => '/user-test-one/'
]
],
'upstream' => [
'url' => 'https://localhost:8080'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}/api/apis/oas"
payload := strings.NewReader("{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant}/api/apis/oas")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}/api/apis/oas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"ID": "4c1c0d8fc885401053ddac4e39ef676b",
"Message": "API created",
"Meta": "665597e0b646b300011acb69",
"Status": "OK"
}{
"Message": "Couldn't read body.",
"Meta": null,
"Status": "Error"
}{
"Message": "Not authorised",
"Meta": null,
"Status": "Error"
}{
"Message": "Could not retrieve detail of apiID 62a0ec9092faf50001395817 in org 82a0ec9052faf50001395817.",
"Meta": null,
"Status": "Error"
}{
"Message": "Found API with the same ID.",
"Meta": null,
"Status": "Error"
}{
"Message": "Error while validating schema.",
"Meta": null,
"Status": "Error"
}OAS APIs
Create OAS API.
Create an API Definition in Tyk OAS API format.
Note that the response includes the newly created Tyk OAS API Definition containing the unique identifier for the API (ID). You can provide a value for ID in the request body, otherwise Tyk will automatically generate a value.
POST
/
api
/
apis
/
oas
Create OAS API.
curl --request POST \
--url https://{tenant}/api/apis/oas \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"components": {
"securitySchemes": {
"bearerAuth": {
"description": "The API Access Credentials",
"scheme": "bearer",
"type": "http"
}
}
},
"info": {
"description": "This is a sample OpenAPI description.",
"title": "Sample OpenAPI description",
"version": "1.0.0"
},
"openapi": "3.0.3",
"paths": {
"/api/sample/users": {
"get": {
"operationId": "getUsersSample",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"properties": {
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
}
},
"description": "fetched users"
}
},
"summary": "Get users",
"tags": [
"users"
]
}
}
},
"security": [
{
"bearerAuth": []
}
],
"servers": [
{
"url": "https://localhost:8080"
}
],
"x-tyk-api-gateway": {
"info": {
"name": "user",
"state": {
"active": true
}
},
"server": {
"listenPath": {
"strip": true,
"value": "/user-test-one/"
}
},
"upstream": {
"url": "https://localhost:8080"
}
}
}
'import requests
url = "https://{tenant}/api/apis/oas"
payload = {
"components": { "securitySchemes": { "bearerAuth": {
"description": "The API Access Credentials",
"scheme": "bearer",
"type": "http"
} } },
"info": {
"description": "This is a sample OpenAPI description.",
"title": "Sample OpenAPI description",
"version": "1.0.0"
},
"openapi": "3.0.3",
"paths": { "/api/sample/users": { "get": {
"operationId": "getUsersSample",
"responses": { "200": {
"content": { "application/json": { "schema": {
"items": {
"properties": { "name": { "type": "string" } },
"type": "object"
},
"type": "array"
} } },
"description": "fetched users"
} },
"summary": "Get users",
"tags": ["users"]
} } },
"security": [{ "bearerAuth": [] }],
"servers": [{ "url": "https://localhost:8080" }],
"x-tyk-api-gateway": {
"info": {
"name": "user",
"state": { "active": True }
},
"server": { "listenPath": {
"strip": True,
"value": "/user-test-one/"
} },
"upstream": { "url": "https://localhost:8080" }
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
components: {
securitySchemes: {
bearerAuth: {description: 'The API Access Credentials', scheme: 'bearer', type: 'http'}
}
},
info: {
description: 'This is a sample OpenAPI description.',
title: 'Sample OpenAPI description',
version: '1.0.0'
},
openapi: '3.0.3',
paths: {
'/api/sample/users': {
get: {
operationId: 'getUsersSample',
responses: {
'200': {
content: {
'application/json': {
schema: {items: {properties: {name: {type: 'string'}}, type: 'object'}, type: 'array'}
}
},
description: 'fetched users'
}
},
summary: 'Get users',
tags: ['users']
}
}
},
security: [{bearerAuth: []}],
servers: [{url: 'https://localhost:8080'}],
'x-tyk-api-gateway': {
info: {name: 'user', state: {active: true}},
server: {listenPath: {strip: true, value: '/user-test-one/'}},
upstream: {url: 'https://localhost:8080'}
}
})
};
fetch('https://{tenant}/api/apis/oas', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}/api/apis/oas",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'components' => [
'securitySchemes' => [
'bearerAuth' => [
'description' => 'The API Access Credentials',
'scheme' => 'bearer',
'type' => 'http'
]
]
],
'info' => [
'description' => 'This is a sample OpenAPI description.',
'title' => 'Sample OpenAPI description',
'version' => '1.0.0'
],
'openapi' => '3.0.3',
'paths' => [
'/api/sample/users' => [
'get' => [
'operationId' => 'getUsersSample',
'responses' => [
'200' => [
'content' => [
'application/json' => [
'schema' => [
'items' => [
'properties' => [
'name' => [
'type' => 'string'
]
],
'type' => 'object'
],
'type' => 'array'
]
]
],
'description' => 'fetched users'
]
],
'summary' => 'Get users',
'tags' => [
'users'
]
]
]
],
'security' => [
[
'bearerAuth' => [
]
]
],
'servers' => [
[
'url' => 'https://localhost:8080'
]
],
'x-tyk-api-gateway' => [
'info' => [
'name' => 'user',
'state' => [
'active' => true
]
],
'server' => [
'listenPath' => [
'strip' => true,
'value' => '/user-test-one/'
]
],
'upstream' => [
'url' => 'https://localhost:8080'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}/api/apis/oas"
payload := strings.NewReader("{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant}/api/apis/oas")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}/api/apis/oas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"components\": {\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"description\": \"The API Access Credentials\",\n \"scheme\": \"bearer\",\n \"type\": \"http\"\n }\n }\n },\n \"info\": {\n \"description\": \"This is a sample OpenAPI description.\",\n \"title\": \"Sample OpenAPI description\",\n \"version\": \"1.0.0\"\n },\n \"openapi\": \"3.0.3\",\n \"paths\": {\n \"/api/sample/users\": {\n \"get\": {\n \"operationId\": \"getUsersSample\",\n \"responses\": {\n \"200\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"description\": \"fetched users\"\n }\n },\n \"summary\": \"Get users\",\n \"tags\": [\n \"users\"\n ]\n }\n }\n },\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"servers\": [\n {\n \"url\": \"https://localhost:8080\"\n }\n ],\n \"x-tyk-api-gateway\": {\n \"info\": {\n \"name\": \"user\",\n \"state\": {\n \"active\": true\n }\n },\n \"server\": {\n \"listenPath\": {\n \"strip\": true,\n \"value\": \"/user-test-one/\"\n }\n },\n \"upstream\": {\n \"url\": \"https://localhost:8080\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"ID": "4c1c0d8fc885401053ddac4e39ef676b",
"Message": "API created",
"Meta": "665597e0b646b300011acb69",
"Status": "OK"
}{
"Message": "Couldn't read body.",
"Meta": null,
"Status": "Error"
}{
"Message": "Not authorised",
"Meta": null,
"Status": "Error"
}{
"Message": "Could not retrieve detail of apiID 62a0ec9092faf50001395817 in org 82a0ec9052faf50001395817.",
"Meta": null,
"Status": "Error"
}{
"Message": "Found API with the same ID.",
"Meta": null,
"Status": "Error"
}{
"Message": "Error while validating schema.",
"Meta": null,
"Status": "Error"
}Authorizations
The Tyk Dashboard API Access Credentials
Query Parameters
The base API which the new version will be linked to.
The version name of the base API while creating the first version. This doesn't have to be sent for the next versions but if it is set, it will override base API version name.
The version name of the created version.
If true, the new version is set as default version.
The Asset ID of template applied while creating or importing an OAS API.
Body
application/jsonapplication/x-yaml
Show child attributes
Show child attributes
Was this page helpful?
⌘I