Bug 32030: ERM - packages - REST API specs
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 20 May 2022 09:23:51 +0000 (11:23 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 8 Nov 2022 12:43:56 +0000 (09:43 -0300)
Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
api/v1/swagger/definitions/erm_package.yaml [new file with mode: 0644]
api/v1/swagger/paths/erm_packages.yaml [new file with mode: 0644]
api/v1/swagger/swagger.yaml

diff --git a/api/v1/swagger/definitions/erm_package.yaml b/api/v1/swagger/definitions/erm_package.yaml
new file mode 100644 (file)
index 0000000..629b72a
--- /dev/null
@@ -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 (file)
index 0000000..61e0afe
--- /dev/null
@@ -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
index 57e69db..e0962d4 100644 (file)
@@ -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