Currently, when the check-out process (POST /circulation/check-out-by-barcode) runs into an error, it stops processing and responds with information about this error.
This behavior needs to be changed. The check-out endpoint should return a full list (or as many as possible) of errors that prevent the user from completing a check-out action. Also, it should differentiate between overridable blocks and errors that can't be overridden. According to the design doc https://wiki.folio.org/display/DD/Overriding+blocks+in+mod-circulation :
If there are overridable blocks, an error needs to be added to the errors field with parameter array containing:
- key: "overridableBlocks", value: comma-separated string
A list of blocks that need to be overridden in order to complete this action. If this is the only error returned by the server and there are no other parameters, the client will know that it is possible to complete this action by overriding existing blocks. Existence of other kinds of errors tells the client that it doesn't make sense to override these blocks.
- key: "missingOverridePermissions", value: comma-separated string (optional)
If there are overridableBlocks, server may also include a list of missing override permissions. The user won't be able to complete this action, but he or she may want to request permission escalation ( UXPROD-2645 - Permission escalation for override OPEN ) based on this information.
Overridable blocks keys: