493 lines
12 KiB
YAML
493 lines
12 KiB
YAML
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"
|