Files
modernjs/chapter05/swagger.json
T
2018-06-07 20:46:29 -04:00

711 lines
17 KiB
JSON

{
"swagger": "2.0",
"info": {
"description": "This is a RESTful API to access world data, including countries, regions, and cities.",
"version": "1.0.0",
"title": "World Data API"
},
"host": "127.0.0.1:8443",
"schemes": [
"http"
],
"tags": [
{
"name": "token",
"description": "Get a JWT for authorization"
},
{
"name": "countries",
"description": "Access the world countries"
},
{
"name": "regions",
"description": "Access the regions of countries"
},
{
"name": "cities",
"description": "Access the world cities"
}
],
"paths": {
"/gettoken": {
"post": {
"tags": [
"token"
],
"summary": "Get a token to authorize future requests",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"in": "formData",
"name": "user",
"required": true,
"type": "string"
},
{
"in": "formData",
"name": "password",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "A valid token to use for other requests"
},
"401": {
"description": "Wrong user/password"
}
}
}
},
"/regions": {
"get": {
"tags": [
"regions"
],
"summary": "Get all regions of all countries",
"produces": [
"application/json"
],
"parameters": [
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
}
}
},
"post": {
"tags": [
"regions"
],
"summary": "Add a region to a given country",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"in": "formData",
"name": "name",
"required": true,
"type": "string",
"description": "The new region's name."
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"201": {
"description": "OK, created"
},
"400": {
"description": "Name missing, region not created"
},
"401": {
"description": "No token provided"
},
"403": {
"description": "Country not found, region not created"
},
"409": {
"description": "Other failure, region not created"
}
}
}
},
"/regions/{country}": {
"get": {
"tags": [
"regions"
],
"summary": "Get all regions of a given country",
"produces": [
"application/json"
],
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country (id) whose regions are required",
"type": "string",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Country not found"
}
}
}
},
"/regions/{country}/{id}": {
"get": {
"tags": [
"regions"
],
"summary": "Get a specific region of a given country",
"produces": [
"application/json"
],
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country (id) of the region",
"type": "string",
"required": true
},
{
"name": "id",
"in": "path",
"description": "Region (id) that is required",
"type": "string",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Country not found"
}
}
},
"delete": {
"tags": [
"regions"
],
"summary": "Delete a specific region of a given country",
"description": "",
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country (id) of the region",
"type": "string",
"required": true
},
{
"name": "id",
"in": "path",
"description": "Region (id) that is to be deleted",
"type": "string",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, region was deleted"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Region does not exist"
},
"405": {
"description": "Region has cities, cannot be deleted"
}
}
},
"put": {
"tags": [
"regions"
],
"summary": "Update a specific region of a given country",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country (id) of the region",
"type": "string",
"required": true
},
{
"name": "id",
"in": "path",
"description": "Region (id) that is to be deleted",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "name",
"required": true,
"type": "string",
"description": "The region's new name."
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, region was updated"
},
"400": {
"description": "Name missing, region not updated"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Country not found"
}
}
}
},
"/countries": {
"get": {
"tags": [
"countries"
],
"summary": "Get all countries",
"produces": [
"application/json"
],
"parameters": [
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
}
}
}
},
"/countries/{country}": {
"get": {
"tags": [
"countries"
],
"summary": "Get a single country",
"produces": [
"application/json"
],
"parameters": [
{
"name": "country",
"in": "path",
"description": "Required Country",
"type": "string",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Country not found"
}
}
},
"delete": {
"tags": [
"countries"
],
"summary": "Delete a specific country",
"description": "",
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country to delete",
"type": "string",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, country was deleted"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "Country does not exist"
},
"405": {
"description": "Country has regions, cannot be deleted"
}
}
},
"put": {
"tags": [
"countries"
],
"summary": "Update or create a country",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"name": "country",
"in": "path",
"description": "Country",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "name",
"required": true,
"type": "string",
"description": "The region's new name."
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, coutry was updated"
},
"400": {
"description": "Name missing, country not updated"
},
"401": {
"description": "No token provided"
}
}
}
},
"/cities": {
"post": {
"tags": [
"cities"
],
"summary": "Add a city",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"in": "formData",
"name": "name",
"required": true,
"type": "string",
"description": "The new city's name."
},
{
"in": "formData",
"name": "latitude",
"required": true,
"type": "number",
"description": "The new city's latitude."
},
{
"in": "formData",
"name": "longitude",
"required": true,
"type": "number",
"description": "The new city's longitude."
},
{
"in": "formData",
"name": "population",
"required": true,
"type": "number",
"description": "The new city's population."
},
{
"in": "formData",
"name": "countryCode",
"required": true,
"type": "string",
"description": "The new city's country."
},
{
"in": "formData",
"name": "regionCode",
"required": true,
"type": "string",
"description": "The new city's region."
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"201": {
"description": "OK, created"
},
"400": {
"description": "Name missing, city not created"
},
"401": {
"description": "No token provided"
},
"403": {
"description": "Region not found, city not created"
},
"409": {
"description": "Other failure, city not created"
}
}
}
},
"/cities/{cityId}": {
"get": {
"tags": [
"cities"
],
"summary": "Get a specific city",
"produces": [
"application/json"
],
"parameters": [
{
"name": "cityId",
"in": "path",
"description": "Id of the city",
"type": "number",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "City not found"
}
}
},
"delete": {
"tags": [
"cities"
],
"summary": "Delete a specific city",
"description": "",
"parameters": [
{
"name": "cityId",
"in": "path",
"description": "Id of the city",
"type": "number",
"required": true
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, city was deleted"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "City does not exist"
}
}
},
"put": {
"tags": [
"cities"
],
"summary": "Update a specific city",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"text/plain"
],
"parameters": [
{
"name": "cityId",
"in": "path",
"description": "Id of the city",
"type": "number",
"required": true
},
{
"in": "formData",
"name": "name",
"required": true,
"type": "string",
"description": "The new city's name."
},
{
"in": "formData",
"name": "latitude",
"required": true,
"type": "number",
"description": "The new city's latitude."
},
{
"in": "formData",
"name": "longitude",
"required": true,
"type": "number",
"description": "The new city's longitude."
},
{
"in": "formData",
"name": "population",
"required": true,
"type": "number",
"description": "The new city's population."
},
{
"in": "formData",
"name": "countryCode",
"required": true,
"type": "string",
"description": "The new city's country."
},
{
"in": "formData",
"name": "regionCode",
"required": true,
"type": "string",
"description": "The new city's region."
},
{
"in": "header",
"name": "Authorization",
"required": true,
"type": "string",
"description": "Authorization Token"
}
],
"responses": {
"204": {
"description": "OK, city was updated"
},
"400": {
"description": "Name missing, city not updated"
},
"401": {
"description": "No token provided"
},
"404": {
"description": "City not found"
}
}
}
}
}
}