Completed countries/regions/cities

This commit is contained in:
fkereki
2018-06-07 20:46:29 -04:00
parent 4101f57b25
commit dfcc9a68ac
3 changed files with 656 additions and 212 deletions
+387
View File
@@ -319,6 +319,393 @@
}
}
}
},
"/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"
}
}
}
}
}
}
-212
View File
@@ -1,212 +0,0 @@
openapi: "3.0.0"
info:
title: World Data RESTful API
description: "This is a RESTful API to access world data, including countries, regions, and cities."
version: "0.0.1"
servers:
- url: http://127.0.0.1:8443
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"
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
responses:
200:
description: A valid token to use for other requests
401:
description: "No token provided"
404:
description: "Country not found"
/regions:
get:
tags:
- "regions"
summary: "Get all regions of all countries"
produces:
- application/json
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: Bearer"
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
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
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
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.
responses:
204:
description: "OK, region was updated"
400:
description: "Name missing, region not updated"
401:
description: "No token provided"
404:
description: "Country not found"
components:
securitySchemes:
JwtAuth:
type: apiKey
in: header
name: Authorization
bearerAuth: # arbitrary name for the security scheme
type: apiKey
in: header
scheme: bearer
bearerFormat: JWT
+269
View File
@@ -221,3 +221,272 @@ paths:
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"