Browse Source
This patch moves the /cities routes spec and related files into YAML so devs can use it as a reference for future routes. To test: 1. Run: $ kshell k$ prove t/db_dependent/api/v1/cities.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat 1 => SUCCESS: Tests still pass! 4. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>21.11/bug30761
6 changed files with 242 additions and 361 deletions
@ -1,26 +0,0 @@ |
|||
{ |
|||
"type": "object", |
|||
"properties": { |
|||
"city_id": { |
|||
"$ref": "../x-primitives.json#/city_id" |
|||
}, |
|||
"name": { |
|||
"description": "city name", |
|||
"type": "string" |
|||
}, |
|||
"state": { |
|||
"description": "city state", |
|||
"type": ["string", "null"] |
|||
}, |
|||
"postal_code": { |
|||
"description": "city postal code", |
|||
"type": ["string", "null"] |
|||
}, |
|||
"country": { |
|||
"description": "city country", |
|||
"type": ["string", "null"] |
|||
} |
|||
}, |
|||
"additionalProperties": false, |
|||
"required": ["name", "state", "postal_code", "country"] |
|||
} |
@ -0,0 +1,29 @@ |
|||
--- |
|||
type: object |
|||
properties: |
|||
city_id: |
|||
$ref: ../x-primitives.json#/city_id |
|||
name: |
|||
description: city name |
|||
type: string |
|||
state: |
|||
description: city state |
|||
type: |
|||
- string |
|||
- "null" |
|||
postal_code: |
|||
description: city postal code |
|||
type: |
|||
- string |
|||
- "null" |
|||
country: |
|||
description: city country |
|||
type: |
|||
- string |
|||
- "null" |
|||
additionalProperties: false |
|||
required: |
|||
- name |
|||
- state |
|||
- postal_code |
|||
- country |
@ -1,332 +0,0 @@ |
|||
{ |
|||
"/cities": { |
|||
"get": { |
|||
"x-mojo-to": "Cities#list", |
|||
"operationId": "listCities", |
|||
"tags": [ |
|||
"cities" |
|||
], |
|||
"summary": "List cities", |
|||
"produces": [ |
|||
"application/json" |
|||
], |
|||
"parameters": [ |
|||
{ |
|||
"name": "name", |
|||
"in": "query", |
|||
"description": "Case insensative search on city name", |
|||
"required": false, |
|||
"type": "string" |
|||
}, |
|||
{ |
|||
"name": "state", |
|||
"in": "query", |
|||
"description": "Case insensative search on city state", |
|||
"required": false, |
|||
"type": "string" |
|||
}, |
|||
{ |
|||
"name": "country", |
|||
"in": "query", |
|||
"description": "Case insensative search on city country", |
|||
"required": false, |
|||
"type": "string" |
|||
}, |
|||
{ |
|||
"name": "postal_code", |
|||
"in": "query", |
|||
"description": "Case Insensative search on city postal code", |
|||
"required": false, |
|||
"type": "string" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/match" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/order_by" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/page" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/per_page" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/q_param" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/q_body" |
|||
}, |
|||
{ |
|||
"$ref": "../parameters.json#/q_header" |
|||
} |
|||
], |
|||
"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" |
|||
} |
|||
}, |
|||
"503": { |
|||
"description": "Under maintenance", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
} |
|||
}, |
|||
"x-koha-authorization": { |
|||
"permissions": { |
|||
"catalogue": "1" |
|||
} |
|||
} |
|||
}, |
|||
"post": { |
|||
"x-mojo-to": "Cities#add", |
|||
"operationId": "addCity", |
|||
"tags": [ |
|||
"cities" |
|||
], |
|||
"summary": "Add city", |
|||
"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": { |
|||
"201": { |
|||
"description": "City added", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/city" |
|||
} |
|||
}, |
|||
"401": { |
|||
"description": "Authentication required", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"403": { |
|||
"description": "Access forbidden", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"500": { |
|||
"description": "Internal error", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"503": { |
|||
"description": "Under maintenance", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
} |
|||
}, |
|||
"x-koha-authorization": { |
|||
"permissions": { |
|||
"parameters": "manage_cities" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"/cities/{city_id}": { |
|||
"get": { |
|||
"x-mojo-to": "Cities#get", |
|||
"operationId": "getCity", |
|||
"tags": [ |
|||
"cities" |
|||
], |
|||
"summary": "Get city", |
|||
"parameters": [ |
|||
{ |
|||
"$ref": "../parameters.json#/city_id_pp" |
|||
} |
|||
], |
|||
"produces": [ |
|||
"application/json" |
|||
], |
|||
"responses": { |
|||
"200": { |
|||
"description": "A city", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/city" |
|||
} |
|||
}, |
|||
"404": { |
|||
"description": "City not found", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"500": { |
|||
"description": "Internal error", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"503": { |
|||
"description": "Under maintenance", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
} |
|||
}, |
|||
"x-koha-authorization": { |
|||
"permissions": { |
|||
"catalogue": "1" |
|||
} |
|||
} |
|||
}, |
|||
"put": { |
|||
"x-mojo-to": "Cities#update", |
|||
"operationId": "updateCity", |
|||
"tags": [ |
|||
"cities" |
|||
], |
|||
"summary": "Update city", |
|||
"parameters": [ |
|||
{ |
|||
"$ref": "../parameters.json#/city_id_pp" |
|||
}, |
|||
{ |
|||
"name": "body", |
|||
"in": "body", |
|||
"description": "A city object", |
|||
"required": true, |
|||
"schema": { |
|||
"$ref": "../definitions.json#/city" |
|||
} |
|||
} |
|||
], |
|||
"produces": [ |
|||
"application/json" |
|||
], |
|||
"responses": { |
|||
"200": { |
|||
"description": "A city", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/city" |
|||
} |
|||
}, |
|||
"401": { |
|||
"description": "Authentication required", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"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" |
|||
} |
|||
}, |
|||
"503": { |
|||
"description": "Under maintenance", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
} |
|||
}, |
|||
"x-koha-authorization": { |
|||
"permissions": { |
|||
"parameters": "manage_cities" |
|||
} |
|||
} |
|||
}, |
|||
"delete": { |
|||
"x-mojo-to": "Cities#delete", |
|||
"operationId": "deleteCity", |
|||
"tags": [ |
|||
"cities" |
|||
], |
|||
"summary": "Delete city", |
|||
"parameters": [ |
|||
{ |
|||
"$ref": "../parameters.json#/city_id_pp" |
|||
} |
|||
], |
|||
"produces": [ |
|||
"application/json" |
|||
], |
|||
"responses": { |
|||
"204": { |
|||
"description": "City deleted" |
|||
}, |
|||
"401": { |
|||
"description": "Authentication required", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
}, |
|||
"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" |
|||
} |
|||
}, |
|||
"503": { |
|||
"description": "Under maintenance", |
|||
"schema": { |
|||
"$ref": "../definitions.json#/error" |
|||
} |
|||
} |
|||
}, |
|||
"x-koha-authorization": { |
|||
"permissions": { |
|||
"parameters": "manage_cities" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,210 @@ |
|||
--- |
|||
/cities: |
|||
get: |
|||
x-mojo-to: Cities#list |
|||
operationId: listCities |
|||
tags: |
|||
- cities |
|||
summary: List cities |
|||
produces: |
|||
- application/json |
|||
parameters: |
|||
- name: name |
|||
in: query |
|||
description: Case insensative search on city name |
|||
required: false |
|||
type: string |
|||
- name: state |
|||
in: query |
|||
description: Case insensative search on city state |
|||
required: false |
|||
type: string |
|||
- name: country |
|||
in: query |
|||
description: Case insensative search on city country |
|||
required: false |
|||
type: string |
|||
- name: postal_code |
|||
in: query |
|||
description: Case Insensative search on city postal code |
|||
required: false |
|||
type: string |
|||
- $ref: ../parameters.json#/match |
|||
- $ref: ../parameters.json#/order_by |
|||
- $ref: ../parameters.json#/page |
|||
- $ref: ../parameters.json#/per_page |
|||
- $ref: ../parameters.json#/q_param |
|||
- $ref: ../parameters.json#/q_body |
|||
- $ref: ../parameters.json#/q_header |
|||
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 |
|||
"503": |
|||
description: Under maintenance |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
x-koha-authorization: |
|||
permissions: |
|||
catalogue: "1" |
|||
post: |
|||
x-mojo-to: Cities#add |
|||
operationId: addCity |
|||
tags: |
|||
- cities |
|||
summary: Add city |
|||
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: |
|||
"201": |
|||
description: City added |
|||
schema: |
|||
$ref: ../definitions.json#/city |
|||
"401": |
|||
description: Authentication required |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"403": |
|||
description: Access forbidden |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"500": |
|||
description: Internal error |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"503": |
|||
description: Under maintenance |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
x-koha-authorization: |
|||
permissions: |
|||
parameters: manage_cities |
|||
"/cities/{city_id}": |
|||
get: |
|||
x-mojo-to: Cities#get |
|||
operationId: getCity |
|||
tags: |
|||
- cities |
|||
summary: Get city |
|||
parameters: |
|||
- $ref: ../parameters.json#/city_id_pp |
|||
produces: |
|||
- application/json |
|||
responses: |
|||
"200": |
|||
description: A city |
|||
schema: |
|||
$ref: ../definitions.json#/city |
|||
"404": |
|||
description: City not found |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"500": |
|||
description: Internal error |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"503": |
|||
description: Under maintenance |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
x-koha-authorization: |
|||
permissions: |
|||
catalogue: "1" |
|||
put: |
|||
x-mojo-to: Cities#update |
|||
operationId: updateCity |
|||
tags: |
|||
- cities |
|||
summary: Update city |
|||
parameters: |
|||
- $ref: ../parameters.json#/city_id_pp |
|||
- name: body |
|||
in: body |
|||
description: A city object |
|||
required: true |
|||
schema: |
|||
$ref: ../definitions.json#/city |
|||
produces: |
|||
- application/json |
|||
responses: |
|||
"200": |
|||
description: A city |
|||
schema: |
|||
$ref: ../definitions.json#/city |
|||
"401": |
|||
description: Authentication required |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"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 |
|||
"503": |
|||
description: Under maintenance |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
x-koha-authorization: |
|||
permissions: |
|||
parameters: manage_cities |
|||
delete: |
|||
x-mojo-to: Cities#delete |
|||
operationId: deleteCity |
|||
tags: |
|||
- cities |
|||
summary: Delete city |
|||
parameters: |
|||
- $ref: ../parameters.json#/city_id_pp |
|||
produces: |
|||
- application/json |
|||
responses: |
|||
"204": |
|||
description: City deleted |
|||
"401": |
|||
description: Authentication required |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
"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 |
|||
"503": |
|||
description: Under maintenance |
|||
schema: |
|||
$ref: ../definitions.json#/error |
|||
x-koha-authorization: |
|||
permissions: |
|||
parameters: manage_cities |
Loading…
Reference in new issue