Details
-
Story
-
Status: Open (View Workflow)
-
P3
-
Resolution: Unresolved
-
None
-
None
-
-
Vega
Description
Context
At the moment, breaking changes to the circulation interface involves assessment of at least 7 dependent modules:
- ui-checkin
- ui-checkout
- ui-circulation
- ui-inventory
- ui-users
- mod-rtac
- mod-patron
Often, a change does not impact many of these modules. That suggests that there are different aspects of the interface that are relevant to different clients.
Making those aspects more explicit, by separating the interface into multiple interfaces, could reduce the cascade and make it easier to understand the impact of changes.
Trade offs
- Record representations that are used across the interfaces will need to be more carefully managed
- the impact of these could be missed during changes
- this could still lead to a cascade of breaking changes under some circumstances
Proposal for separation
I'm proposing the following aspects as a starting point for discussion.
Check Out (circulation.item-check-out)
For check out workflow related endpoints
- /circulation/check-out-by-barcode
- /circulation/
Check In (circulation.item-check-in)
For check in workflow related endpoints
- /circulation/check-in-by-barcode
Renewal (circulation.loan-renewal)
For renewal workflow related endpoints
- /circulation/renew-by-barcode
- /circulation/renew-by-id
- /circulation/override-renewal-by-barcode
Rules (circulation.rules)
For the endpoints for rule management and applying them to determine the relevant policies.
- /circulation/rules
- /circulation/rules/loan-policy
- /circulation/rules/loan-policy-all
- /circulation/rules/request-policy
- /circulation/rules/request-policy-all
Loans (circulation.loans)
For general loans endpoints.
- /circulation/loans
Requests (circulation.requests)
For general request endpoints.
- /circulation/requests
- /circulation/requests/queue
Questions
- Can Okapi support for multiple interfaces that share parts of a path e.g. /circulation?
- Can RAML Module Builder support for multiple interfaces that share parts of a path e.g. /circulation?
- How do we want to name these interfaces, would . or - be a better separator?