Koha/api/v1/swagger/paths/erm_eholdings_titles.yaml
Jonathan Druart 94c67c439e
Bug 32030: Create eHolding titles from a list
Add the ability to create new titles and attach them to a package.
The MARC to KBART2 mapping is the following (based on
https://github.com/adambuttrick/marc_to_kbart/blob/master/convert.py):

publication_title = biblio.title
print_identifier  = 020$a||020$z||022$a||022$y
online_identifier = 020$a||020$z||022$a||022$y
date_first_issue_online = 866$a (before '-')
date_last_issue_online  = 866$a (after '-')
num_first_vol_online    = 863$a (before '-')
num_last_vol_online     = 863$a (after '-')
num_first_issue_online  = ?
num_last_issue_online   = ?
title_url = 856$u
first_author = biblio.first_author
embargo_info = ?
coverage_depth = title_url ? 'fulltext' : 'print'
notes = $852$z
publisher_name = 260$b
publication_type = ?
date_monograph_published_print = ?
date_monograph_published_online = ?
monograph_volume = ?
monograph_edition = ?
first_editor = ?
parent_publication_title_id = ?
preceeding_publication_title_id = ?
access_type = ?

Note that title is not created (and so the resource) if a title from
this package already has a link to this bibliographic record.
Is that correct, or should we create another resource?

Should the import screen also have "start date" and "end date" to set for the
resource?

QA note: Ideally we would like to fetch the list from the REST API but the routes
are not there yet.

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-11-08 09:44:20 -03:00

455 lines
13 KiB
YAML

---
/erm/eholdings/{provider}/titles:
get:
x-mojo-to: ERM::EHoldings::Titles#list
operationId: listErmEHoldingsTitles
tags:
- eholdings
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
- $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:
- eholdings
summary: Add eholding
consumes:
- application/json
produces:
- application/json
parameters:
- 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:
- eholdings
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"
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
x-koha-embed:
- resources
- resources.package
put:
x-mojo-to: ERM::EHoldings::Titles#update
operationId: updateErmEHoldingsTitles
tags:
- eholdings
summary: Update titles
consumes:
- application/json
produces:
- application/json
parameters:
- $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"
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
x-koha-embed:
- resources
- resources.package
delete:
x-mojo-to: ERM::EHoldings::Titles#delete
operationId: deleteErmEHoldingsTitles
tags:
- eholdings
summary: Delete eHolding title
produces:
- application/json
parameters:
- $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:
- eholdings
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
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