Tomas Cohen Arazi
35e9ac9b0a
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>
578 lines
17 KiB
YAML
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
|