Koha/api/v1/swagger/paths/erm_eholdings_titles.yaml
Tomas Cohen Arazi 355d7dc52c Bug 34387: Improve API docs naming consistency
This patch aims to make our API docs be more consistent.
It addresses two particular things:

* There's no consistency on the `tags` used across the spec, and not all
  of them are correctly described and have an `x-displayName` entry.
  More on this later.
* This are not sorted either by some for of grouping, or at least
  alphabetically.

For the former, I did my best trying to harmonize (specially on the ERM
front) with what we do in the rest of the use cases.

For the latter, I opted for sorting everything alphabetically, as a
first step. Hoping someone else could work on grouping things.

To test (ON YOUR HOST MACHINE):
1. On current master run:
   $ cd api/v1/swagger
   $ docker run --rm -v $(pwd):/api --workdir /api redocly/cli \
           build-docs swagger.yaml --output index.html
=> SUCCESS: It doesn't break or anything
2. Open your browser, open the generated api/v1/swagger/index.html file
=> FAIL: The left column has
         * several lower case entries
         * not everything is correctly grouped (ERM? packages?)
         * Things are not sorted. There's an attempt but looks messy
3. Apply this patch
4. Repeat 1 and 2
=> SUCCESS: Things look much better!
5. Sign off :-D

CAVEAT1: I'm not sure why, but import_batches doesn't work. Ideas are
welcome, I'll keep looking for fixes.
CAVEAT2: I don't have enough eHoldings background to weight in, but I
feel like 'ERM eHoldings packages' could just be 'ERM packages'.
Follw-up patches with better ideas are welcome.
CAVEAT3: Patron credits, debits, balance... They could all go in to
'Patrons accounts' or similar. Open to ideas.
CAVEAT4: Old redocly didn't support mapping an endpoint to more than one
target section. Something to explore if we want (for example) to reach
'credits' through the 'Patrons' section but also from 'Accounting'.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-08-17 08:41:10 -10:00

496 lines
15 KiB
YAML

---
/erm/eholdings/{provider}/titles:
get:
x-mojo-to: ERM::EHoldings::Titles#list
operationId: listErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: List eholdings titles
produces:
- application/json
parameters:
- description: Provider name
in: path
name: provider
required: true
type: string
- description: Case insensitive search on title title_id
in: query
name: title_id
required: false
type: integer
- description: Case insensitive search on title publication_title
in: query
name: publication_title
required: false
type: string
- description: Case insensitive search on title external_id
in: query
name: external_id
required: false
type: string
- description: Case insensitive search on title print_identifier
in: query
name: print_identifier
required: false
type: string
- description: Case insensitive search on title online_identifier
in: query
name: online_identifier
required: false
type: string
- description: Case insensitive search on title date_first_issue_online
in: query
name: date_first_issue_online
required: false
type: string
- description: Case insensitive search on title num_first_vol_online
in: query
name: num_first_vol_online
required: false
type: string
- description: Case insensitive search on title num_first_issue_online
in: query
name: num_first_issue_online
required: false
type: string
- description: Case insensitive search on title date_last_issue_online
in: query
name: date_last_issue_online
required: false
type: string
- description: Case insensitive search on title num_last_vol_online
in: query
name: num_last_vol_online
required: false
type: string
- description: Case insensitive search on title num_last_issue_online
in: query
name: num_last_issue_online
required: false
type: string
- description: Case insensitive search on title title_url
in: query
name: title_url
required: false
type: string
- description: Case insensitive search on title first_author
in: query
name: first_author
required: false
type: string
- description: Case insensitive search on title embargo_info
in: query
name: embargo_info
required: false
type: string
- description: Case insensitive search on title coverage_depth
in: query
name: coverage_depth
required: false
type: string
- description: Case insensitive search on title notes
in: query
name: notes
required: false
type: string
- description: Case insensitive search on title publisher_name
in: query
name: publisher_name
required: false
type: string
- description: Case insensitive search on title publication_type
in: query
name: publication_type
required: false
type: string
- description: Case insensitive search on title date_monograph_published_print
in: query
name: date_monograph_published_print
required: false
type: string
- description: Case insensitive search on title date_monograph_published_online
in: query
name: date_monograph_published_online
required: false
type: string
- description: Case insensitive search on title monograph_volume
in: query
name: monograph_volume
required: false
type: string
- description: Case insensitive search on title monograph_edition
in: query
name: monograph_edition
required: false
type: string
- description: Case insensitive search on title first_editor
in: query
name: first_editor
required: false
type: string
- description: Case insensitive search on title parent_publication_title_id
in: query
name: parent_publication_title_id
required: false
type: string
- description: Case insensitive search on title preceeding_publication_title_id
in: query
name: preceeding_publication_title_id
required: false
type: string
- description: Case insensitive search on title access_type
in: query
name: access_type
required: false
type: string
- name: x-koha-embed
in: header
required: false
description: Embed list sent as a request header
type: array
items:
type: string
enum:
- resources.package
collectionFormat: csv
- $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 eHoldings titles
schema:
items:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
type: array
400:
description: Bad request
schema:
$ref: "../swagger.yaml#/definitions/error"
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::EHoldings::Titles#add
operationId: addErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: Add eholding
consumes:
- application/json
produces:
- application/json
parameters:
- description: Provider name
in: path
name: provider
required: true
type: string
- description: A JSON object containing information about the new title
in: body
name: body
required: true
schema:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
responses:
201:
description: A successfully created title
schema:
items:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
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/eholdings/{provider}/titles/{title_id}":
get:
x-mojo-to: ERM::EHoldings::Titles#get
operationId: getErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: Get titles
produces:
- application/json
parameters:
- description: Provider name
in: path
name: provider
required: true
type: string
- $ref: "../swagger.yaml#/parameters/eholdings_title_id_pp"
- name: x-koha-embed
in: header
required: false
description: Embed list sent as a request header
type: array
items:
type: string
enum:
- resources
- resources.package
collectionFormat: csv
responses:
200:
description: An eHolding title
schema:
items:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
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::EHoldings::Titles#update
operationId: updateErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: Update titles
consumes:
- application/json
produces:
- application/json
parameters:
- description: Provider name
in: path
name: provider
required: true
type: string
- $ref: "../swagger.yaml#/parameters/eholdings_title_id_pp"
- name: body
in: body
description: A JSON object containing new information about existing title
required: true
schema:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
- name: x-koha-embed
in: header
required: false
description: Embed list sent as a request header
type: array
items:
type: string
enum:
- resources
- resources.package
collectionFormat: csv
responses:
200:
description: A successfully updated title
schema:
items:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
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::EHoldings::Titles#delete
operationId: deleteErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: Delete eHolding title
produces:
- application/json
parameters:
- description: Provider name
in: path
name: provider
required: true
type: string
- $ref: "../swagger.yaml#/parameters/eholdings_title_id_pp"
responses:
204:
description: title deleted
400:
description: title 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
/erm/eholdings/local/titles/import:
post:
x-mojo-to: ERM::EHoldings::Titles#import_from_list
operationId: importErmEHoldingsTitles
tags:
- erm_eholdings_titles
summary: Import local titles
consumes:
- application/json
produces:
- application/json
parameters:
- description: The list_id of the list to import
in: body
name: body
required: true
schema:
type: object
properties:
list_id:
type: string
package_id:
type: string
additionalProperties: false
responses:
201:
description: Successfully enqueued the import job
schema:
type: object
properties:
job_id:
type: string
additionalProperties: false
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