Martin Renvoize
e08639129a
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>
233 lines
5.8 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|