Bug 32030: ERM - related agreement - REST API
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 12 May 2022 16:27:20 +0000 (18:27 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 8 Nov 2022 12:43:51 +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>
Koha/REST/V1/ERM/Agreements.pm
api/v1/swagger/definitions/erm_agreement.yaml
api/v1/swagger/definitions/erm_agreement_relationship.yaml [new file with mode: 0644]
api/v1/swagger/paths/erm_agreements.yaml

index 09110f5..3d64e95 100644 (file)
@@ -94,11 +94,13 @@ sub add {
                 my $periods    = delete $body->{periods} // [];
                 my $user_roles = delete $body->{user_roles} // [];
                 my $agreement_licenses = delete $body->{agreement_licenses} // [];
+                my $agreement_relationships = delete $body->{agreement_relationships} // [];
 
                 my $agreement = Koha::ERM::Agreement->new_from_api($body)->store;
                 $agreement->periods($periods);
                 $agreement->user_roles($user_roles);
                 $agreement->agreement_licenses($agreement_licenses);
+                $agreement->agreement_relationships($agreement_relationships);
 
                 $c->res->headers->location($c->req->url->to_string . '/' . $agreement->agreement_id);
                 return $c->render(
@@ -173,11 +175,13 @@ sub update {
                 my $periods    = delete $body->{periods} // [];
                 my $user_roles = delete $body->{user_roles} // [];
                 my $agreement_licenses = delete $body->{agreement_licenses} // [];
+                my $agreement_relationships = delete $body->{agreement_relationships} // [];
 
                 $agreement->set_from_api($body)->store;
                 $agreement->periods($periods);
                 $agreement->user_roles($user_roles);
                 $agreement->agreement_licenses($agreement_licenses);
+                $agreement->agreement_relationships($agreement_relationships);
 
                 $c->res->headers->location($c->req->url->to_string . '/' . $agreement->agreement_id);
                 return $c->render(
index 2c23a49..c1f41f8 100644 (file)
@@ -49,6 +49,11 @@ properties:
     description: role for users
     items:
       $ref: erm_agreement_user_role.yaml
+  agreement_relationships:
+    type: array
+    description: agreement relationships
+    items:
+      $ref: erm_agreement_relationship.yaml
   agreement_licenses:
     type: array
     description: agreement licenses
diff --git a/api/v1/swagger/definitions/erm_agreement_relationship.yaml b/api/v1/swagger/definitions/erm_agreement_relationship.yaml
new file mode 100644 (file)
index 0000000..d3ba3c2
--- /dev/null
@@ -0,0 +1,30 @@
+---
+type: object
+properties:
+  agreement_id:
+    type: integer
+    description: Internal agreement identifier
+  related_agreement_id:
+    type: integer
+    description: Internal related agreement identifier
+  relationship:
+    description: relationship between the agreements
+    type: string
+    enum:
+      - supersedes
+      - is-superseded-by
+      - provides_post-cancellation_access_for
+      - has-post-cancellation-access-in
+      - tracks_demand-driven_acquisitions_for
+      - has-demand-driven-acquisitions-in
+      - has_backfile_in
+      - has_frontfile_in
+      - related_to
+  notes:
+    type:
+      - string
+      - "null"
+additionalProperties: false
+required:
+  - related_agreement_id
+  - relationship
index 8c2c31b..e8b7358 100644 (file)
       - user_roles.patron
       - agreement_licenses
       - agreement_licenses.license
+      - agreement_relationships
+      - agreement_relationships.agreement
+      - agreement_relationships.related_agreement
   put:
     x-mojo-to: ERM::Agreements#update
     operationId: updateErmAgreements
       - periods
       - user_roles
       - agreement_licenses
+      - agreement_relationships
   delete:
     x-mojo-to: ERM::Agreements#delete
     operationId: deleteErmAgreements