From 35dc25897089a6d8633068241cd8b99cf4c7243b Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 20 May 2022 11:23:51 +0200 Subject: [PATCH] Bug 32030: ERM - packages - REST API specs Signed-off-by: Jonathan Field Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Tomas Cohen Arazi --- api/v1/swagger/definitions/erm_package.yaml | 39 +++ api/v1/swagger/paths/erm_packages.yaml | 275 ++++++++++++++++++++ api/v1/swagger/swagger.yaml | 12 + 3 files changed, 326 insertions(+) create mode 100644 api/v1/swagger/definitions/erm_package.yaml create mode 100644 api/v1/swagger/paths/erm_packages.yaml diff --git a/api/v1/swagger/definitions/erm_package.yaml b/api/v1/swagger/definitions/erm_package.yaml new file mode 100644 index 0000000000..629b72a379 --- /dev/null +++ b/api/v1/swagger/definitions/erm_package.yaml @@ -0,0 +1,39 @@ +--- +type: object +properties: + package_id: + type: integer + description: internally assigned package identifier + readOnly: true + vendor_id: + description: foreign key to aqbooksellers + type: + - integer + - "null" + name: + description: name of the package + type: string + external_package_id: + description: external id of the package + type: + - string + - "null" + package_type: + description: type of the package + type: + - string + - "null" + content_type: + description: content type of the package + type: + - string + - "null" + created_on: + description: date of creation + type: + - string + - "null" + +additionalProperties: false +required: + - name diff --git a/api/v1/swagger/paths/erm_packages.yaml b/api/v1/swagger/paths/erm_packages.yaml new file mode 100644 index 0000000000..61e0afe6ff --- /dev/null +++ b/api/v1/swagger/paths/erm_packages.yaml @@ -0,0 +1,275 @@ +--- +/erm/packages: + get: + x-mojo-to: ERM::packages#list + operationId: listErmpackages + tags: + - package + summary: List packages + produces: + - application/json + parameters: + - description: Case insensitive search on package package_id + in: query + name: package_id + required: false + type: integer + - description: Case insensitive search on package vendor_id + in: query + name: vendor_id + required: false + type: integer + - description: Case insensitive search on package name + in: query + name: name + required: false + type: string + - description: Case insensitive search on package external_package_id + in: query + name: external_package_id + required: false + type: integer + - description: Case insensitive search on package type + in: query + name: package_type + required: false + type: string + - description: Case insensitive search on package content_type + in: query + name: content_type + required: false + type: string + - description: Case insensitive search on package creation date + in: query + name: created_on + required: false + type: string + - $ref: "../swagger.yaml#/parameters/match" + - $ref: "../swagger.yaml#/parameters/order_by" + - $ref: "../swagger.yaml#/parameters/page" + - $ref: "../swagger.yaml#/parameters/per_page" + - $ref: "../swagger.yaml#/parameters/q_param" + - $ref: "../swagger.yaml#/parameters/q_body" + - $ref: "../swagger.yaml#/parameters/q_header" + responses: + 200: + description: A list of package + schema: + items: + $ref: "../swagger.yaml#/definitions/erm_package" + type: array + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + erm: 1 + post: + x-mojo-to: ERM::packages#add + operationId: addErmpackages + tags: + - package + summary: Add package + consumes: + - application/json + produces: + - application/json + parameters: + - description: A JSON object containing information about the new package + in: body + name: body + required: true + schema: + $ref: "../swagger.yaml#/definitions/erm_package" + responses: + 201: + description: A successfully created package + schema: + items: + $ref: "../swagger.yaml#/definitions/erm_package" + 400: + description: Bad parameter + schema: + $ref: "../swagger.yaml#/definitions/error" + 401: + description: Authentication required + schema: + $ref: "../swagger.yaml#/definitions/error" + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 404: + description: Ressource not found + schema: + $ref: "../swagger.yaml#/definitions/error" + 409: + description: Conflict in creating resource + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + erm: 1 +"/erm/packages/{package_id}": + get: + x-mojo-to: ERM::packages#get + operationId: getErmpackages + tags: + - package + summary: Get package + produces: + - application/json + parameters: + - $ref: "../swagger.yaml#/parameters/package_id_pp" + responses: + 200: + description: Anpackage + schema: + items: + $ref: "../swagger.yaml#/definitions/erm_package" + 401: + description: Authentication required + schema: + $ref: "../swagger.yaml#/definitions/error" + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 404: + description: Ressource not found + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + erm: 1 + put: + x-mojo-to: ERM::packages#update + operationId: updateErmpackages + tags: + - package + summary: Update package + consumes: + - application/json + produces: + - application/json + parameters: + - $ref: "../swagger.yaml#/parameters/package_id_pp" + - name: body + in: body + description: A JSON object containing new information about existing package + required: true + schema: + $ref: "../swagger.yaml#/definitions/erm_package" + + responses: + 200: + description: A successfully updated package + schema: + items: + $ref: "../swagger.yaml#/definitions/erm_package" + 400: + description: Bad parameter + schema: + $ref: "../swagger.yaml#/definitions/error" + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 404: + description: Ressource not found + schema: + $ref: "../swagger.yaml#/definitions/error" + 409: + description: Conflict in updating resource + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + erm: 1 + delete: + x-mojo-to: ERM::packages#delete + operationId: deleteErmpackages + tags: + - package + summary: Delete package + produces: + - application/json + parameters: + - $ref: "../swagger.yaml#/parameters/package_id_pp" + responses: + 204: + description: package deleted + 400: + description: package deletion failed + schema: + $ref: "../swagger.yaml#/definitions/error" + 401: + description: Authentication required + schema: + $ref: "../swagger.yaml#/definitions/error" + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 404: + description: Ressource not found + schema: + $ref: "../swagger.yaml#/definitions/error" + 409: + description: Conflict in deleting resource + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + erm: 1 diff --git a/api/v1/swagger/swagger.yaml b/api/v1/swagger/swagger.yaml index 57e69db401..e0962d408c 100644 --- a/api/v1/swagger/swagger.yaml +++ b/api/v1/swagger/swagger.yaml @@ -26,6 +26,8 @@ definitions: $ref: ./definitions/erm_agreement.yaml erm_license: $ref: ./definitions/erm_license.yaml + erm_package: + $ref: ./definitions/erm_package.yaml error: $ref: ./definitions/error.yaml fund: @@ -169,6 +171,10 @@ paths: $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses "/erm/licenses/{license_id}": $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}" + /erm/packages: + $ref: ./paths/erm_packages.yaml#/~1erm~1packages + "/erm/packages/{package_id}": + $ref: "./paths/erm_packages.yaml#/~1erm~1packages~1{package_id}" /erm/users: $ref: ./paths/erm_users.yaml#/~1erm~1users /holds: @@ -412,6 +418,12 @@ parameters: name: order_id required: true type: integer + package_id_pp: + description: Package internal identifier + in: path + name: package_id + required: true + type: integer page: description: "Page number, for paginated object listing" in: query -- 2.39.5