711 lines
17 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |