Koha/api/v1/swagger/paths/erm_eholdings_titles.yaml
Tomas Cohen Arazi 35e9ac9b0a
Bug 37018: Add 400 response definition to all routes
This patch adds a test for well defined 400 responses on all verbs and
paths on the API spec.

The tests verify:

* Presence of 400 response definition
* The description must start with 'Bad request' (needs coding guideline)
* If DBIC queries are allowed on the route, then `invalid_query` needs
  to be mentioned in the description.

All routes get fixed to make the tests pass.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ yarn api:bundle
  k$ prove xt/api.t
=> SUCCESS: Tests pass!

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-08-01 17:26:44 +02:00

578 lines
17 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 preceding_publication_title_id
in: query
name: preceding_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"
responses:
200:
description: A list of eHoldings titles
schema:
items:
$ref: "../swagger.yaml#/definitions/erm_eholdings_title"
type: array
"400":
description: |
Bad request. Possible `error_code` attribute values:
* `invalid_query`
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 request
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"
"400":
description: Bad request
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"
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 request
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: Bad request
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 request
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/local/titles/import_kbart:
post:
x-mojo-to: ERM::EHoldings::Titles#import_from_kbart_file
operationId: importErmEHoldingsTitlesFromKbart
tags:
- erm_eholdings_titles
summary: Import local titles from a KBART file
consumes:
- application/json
produces:
- application/json
parameters:
- description: The file to import
in: body
name: body
required: true
schema:
type: object
properties:
file:
type: object
package_id:
type: string
create_linked_biblio:
type: boolean
additionalProperties: false
responses:
201:
description: Successfully enqueued the import job
schema:
type: object
properties:
job_ids:
type: array
invalid_columns:
type: array
valid_columns:
type: array
invalid_filetype:
type: integer
warnings:
type: object
additionalProperties: false
400:
description: Bad request
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