Koha/api/v1/swagger/paths/cities.json
Martin Renvoize e08639129a Bug 17428: [REST] best practice followup
This followup alters a few area's to be aligned more closely with
RESTfull best practices:

* PUT should always be full objects, and not partial updates (use PATCH
  for partials)
* Validate query parameters instead of blindly passing them to the model
  * Functional Change: Convert filter params from 'equality' to 'starts with'
    matching
* Update tests to check for swagger validation errors instead of koha exceptions
* Mark 'id' as readOnly so swagger may prevent, via validation, id
  changes.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2016-10-28 14:42:49 +00:00

233 lines
5.8 KiB
JSON

{
"/cities": {
"get": {
"x-mojo-controller": "Koha::REST::V1::Cities",
"operationId": "list",
"tags": ["cities"],
"produces": [
"application/json"
],
"parameters": [{
"name": "city_name",
"in": "query",
"description": "Case insensative 'starts-with' search on city name",
"required": false,
"type": "string"
}, {
"name": "city_state",
"in": "query",
"description": "Case insensative 'starts-with' search on city state",
"required": false,
"type": "string"
}, {
"name": "city_country",
"in": "query",
"description": "Case insensative 'starts_with' search on city country",
"required": false,
"type": "string"
}, {
"name": "city_zipcode",
"in": "query",
"description": "Case Insensative 'starts-with' search on zipcode",
"required": false,
"type": "string"
}],
"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"
}
}
}
}
}