From 414bf14e6cb836c4140770233a0e52837c107bd5 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 11 Oct 2016 13:25:14 +0200 Subject: [PATCH] Bug 17428: [REST] Cities swagger specification This patch adds the swagger definitions for the /cities endpoint Signed-off-by: Josef Moravec --- api/v1/swagger/definitions.json | 3 + api/v1/swagger/definitions/city.json | 24 ++++ api/v1/swagger/parameters.json | 3 + api/v1/swagger/parameters/city.json | 9 ++ api/v1/swagger/paths.json | 6 + api/v1/swagger/paths/cities.json | 217 +++++++++++++++++++++++++++++++++++ api/v1/swagger/x-primitives.json | 4 + 7 files changed, 266 insertions(+) create mode 100644 api/v1/swagger/definitions/city.json create mode 100644 api/v1/swagger/parameters/city.json create mode 100644 api/v1/swagger/paths/cities.json diff --git a/api/v1/swagger/definitions.json b/api/v1/swagger/definitions.json index e4d7427..d27167b 100644 --- a/api/v1/swagger/definitions.json +++ b/api/v1/swagger/definitions.json @@ -1,4 +1,7 @@ { + "city": { + "$ref": "definitions/city.json" + }, "patron": { "$ref": "definitions/patron.json" }, diff --git a/api/v1/swagger/definitions/city.json b/api/v1/swagger/definitions/city.json new file mode 100644 index 0000000..a1d7d40 --- /dev/null +++ b/api/v1/swagger/definitions/city.json @@ -0,0 +1,24 @@ +{ + "type": "object", + "properties": { + "cityid": { + "$ref": "../x-primitives.json#/cityid" + }, + "city_name": { + "description": "city name", + "type": "string" + }, + "city_state": { + "description": "city state", + "type": ["string", "null"] + }, + "city_zipcode": { + "description": "city zipcode", + "type": ["string", "null"] + }, + "city_country": { + "description": "city country", + "type": ["string", "null"] + } + } +} diff --git a/api/v1/swagger/parameters.json b/api/v1/swagger/parameters.json index b20e19f..eeb156a 100644 --- a/api/v1/swagger/parameters.json +++ b/api/v1/swagger/parameters.json @@ -5,6 +5,9 @@ "borrowernumberQueryParam": { "$ref": "parameters/patron.json#/borrowernumberQueryParam" }, + "cityidPathParam": { + "$ref": "parameters/city.json#/cityidPathParam" + }, "holdIdPathParam": { "$ref": "parameters/hold.json#/holdIdPathParam" } diff --git a/api/v1/swagger/parameters/city.json b/api/v1/swagger/parameters/city.json new file mode 100644 index 0000000..c35df74 --- /dev/null +++ b/api/v1/swagger/parameters/city.json @@ -0,0 +1,9 @@ +{ + "cityidPathParam": { + "name": "cityid", + "in": "path", + "description": "City id", + "required": true, + "type": "integer" + } +} diff --git a/api/v1/swagger/paths.json b/api/v1/swagger/paths.json index f00b1b4..b1fcf40 100644 --- a/api/v1/swagger/paths.json +++ b/api/v1/swagger/paths.json @@ -1,4 +1,10 @@ { + "/cities": { + "$ref": "paths/cities.json#/~1cities" + }, + "/cities/{cityid}": { + "$ref": "paths/cities.json#/~1cities~1{cityid}" + }, "/holds": { "$ref": "paths/holds.json#/~1holds" }, diff --git a/api/v1/swagger/paths/cities.json b/api/v1/swagger/paths/cities.json new file mode 100644 index 0000000..9727bcd --- /dev/null +++ b/api/v1/swagger/paths/cities.json @@ -0,0 +1,217 @@ +{ + "/cities": { + "get": { + "x-mojo-controller": "Koha::REST::V1::Cities", + "operationId": "list", + "tags": ["cities"], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A list of cities", + "schema": { + "type": "array", + "items": { + "$ref": "../definitions.json#/city" + } + } + }, + "403": { + "description": "Access forbidden", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "../definitions.json#/error" + } + } + } + }, + "post": { + "x-mojo-controller": "Koha::REST::V1::Cities", + "operationId": "add", + "tags": ["cities"], + "parameters": [{ + "name": "body", + "in": "body", + "description": "A JSON object containing informations about the new hold", + "required": true, + "schema": { + "$ref": "../definitions.json#/city" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "City added", + "schema": { + "$ref": "../definitions.json#/city" + } + }, + "403": { + "description": "Access forbidden", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "../definitions.json#/error" + } + } + }, + "x-koha-authorization": { + "permissions": { + "parameters": "parameters_remaining_permissions" + } + } + } + }, + "/cities/{cityid}": { + "get": { + "x-mojo-controller": "Koha::REST::V1::Cities", + "operationId": "get", + "tags": ["cities"], + "parameters": [ + { + "$ref": "../parameters.json#/cityidPathParam" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A city", + "schema": { + "$ref": "../definitions.json#/city" + } + }, + "403": { + "description": "Access forbidden", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "404": { + "description": "City not found", + "schema": { + "$ref": "../definitions.json#/error" + } + } + , + "500": { + "description": "Internal error", + "schema": { + "$ref": "../definitions.json#/error" + } + } + } + }, + "put": { + "x-mojo-controller": "Koha::REST::V1::Cities", + "operationId": "update", + "tags": ["cities"], + "parameters": [ + { + "$ref": "../parameters.json#/cityidPathParam" + }, + { + "name": "body", + "in": "body", + "description": "A JSON object containing informations about the new hold", + "required": true, + "schema": { + "$ref": "../definitions.json#/city" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A city", + "schema": { + "$ref": "../definitions.json#/city" + } + }, + "403": { + "description": "Access forbidden", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "404": { + "description": "City not found", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "../definitions.json#/error" + } + } + }, + "x-koha-authorization": { + "permissions": { + "parameters": "parameters_remaining_permissions" + } + } + }, + "delete": { + "x-mojo-controller": "Koha::REST::V1::Cities", + "operationId": "delete", + "tags": ["cities"], + "parameters": [ + { + "$ref": "../parameters.json#/cityidPathParam" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "City deleted", + "schema": { + "type": "string" + } + }, + "403": { + "description": "Access forbidden", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "404": { + "description": "City not found", + "schema": { + "$ref": "../definitions.json#/error" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "../definitions.json#/error" + } + } + }, + "x-koha-authorization": { + "permissions": { + "parameters": "parameters_remaining_permissions" + } + } + } + } +} diff --git a/api/v1/swagger/x-primitives.json b/api/v1/swagger/x-primitives.json index ae8750e..f5ff2e9 100644 --- a/api/v1/swagger/x-primitives.json +++ b/api/v1/swagger/x-primitives.json @@ -15,6 +15,10 @@ "type": ["string", "null"], "description": "library assigned user identifier" }, + "cityid": { + "type": "string", + "description": "internally assigned city identifier" + }, "email": { "type": ["string", "null"], "description": "primary email address for patron's primary address" -- 2.1.4