Bug 31801: Add REST endpoint to modify a biblio
[koha.git] / api / v1 / swagger / paths / biblios.yaml
1 ---
2 "/biblios":
3   post:
4     x-mojo-to: Biblios#add
5     operationId: addBiblio
6     tags:
7       - biblios
8     summary: Add biblio
9     parameters:
10       - name: Body
11         in: body
12         description: A JSON object or the Marc string describing a biblio
13         required: true
14         schema:
15           type:
16             - string
17             - object
18       - $ref: "../swagger.yaml#/parameters/framework_id_header"
19       - $ref: "../swagger.yaml#/parameters/marc_schema_header"
20       - $ref: "../swagger.yaml#/parameters/confirm_not_duplicate_header"
21     produces:
22       - application/json
23     responses:
24       "200":
25         description: A biblio
26       "400":
27         description: Bad request
28         schema:
29           $ref: "../swagger.yaml#/definitions/error"
30       "401":
31         description: Authentication required
32         schema:
33           $ref: "../swagger.yaml#/definitions/error"
34       "403":
35         description: Access forbidden
36         schema:
37           $ref: "../swagger.yaml#/definitions/error"
38       "406":
39         description: Not acceptable
40         schema:
41           type: array
42           description: Accepted content-types
43           items:
44             type: string
45       "500":
46         description: |
47           Internal server error. Possible `error_code` attribute values:
48
49           * `internal_server_error`
50         schema:
51           $ref: "../swagger.yaml#/definitions/error"
52       "503":
53         description: Under maintenance
54         schema:
55           $ref: "../swagger.yaml#/definitions/error"
56     x-koha-authorization:
57       permissions:
58         editcatalogue: edit_catalogue
59 "/biblios/{biblio_id}":
60   get:
61     x-mojo-to: Biblios#get
62     operationId: getBiblio
63     tags:
64       - biblios
65     summary: Get biblio
66     parameters:
67       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
68     produces:
69       - application/json
70       - application/marcxml+xml
71       - application/marc-in-json
72       - application/marc
73       - text/plain
74     responses:
75       "200":
76         description: A biblio
77       "401":
78         description: Authentication required
79         schema:
80           $ref: "../swagger.yaml#/definitions/error"
81       "403":
82         description: Access forbidden
83         schema:
84           $ref: "../swagger.yaml#/definitions/error"
85       "404":
86         description: Biblio not found
87         schema:
88           $ref: "../swagger.yaml#/definitions/error"
89       "406":
90         description: Not acceptable
91         schema:
92           type: array
93           description: Accepted content-types
94           items:
95             type: string
96       "500":
97         description: |
98           Internal server error. Possible `error_code` attribute values:
99
100           * `internal_server_error`
101         schema:
102           $ref: "../swagger.yaml#/definitions/error"
103       "503":
104         description: Under maintenance
105         schema:
106           $ref: "../swagger.yaml#/definitions/error"
107     x-koha-authorization:
108       permissions:
109         catalogue: "1"
110   delete:
111     x-mojo-to: Biblios#delete
112     operationId: deleteBiblio
113     tags:
114       - biblios
115     summary: Delete biblio
116     parameters:
117       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
118     produces:
119       - application/json
120     responses:
121       "204":
122         description: Biblio deleted
123         schema:
124           type: string
125       "401":
126         description: Authentication required
127         schema:
128           $ref: "../swagger.yaml#/definitions/error"
129       "403":
130         description: Access forbidden
131         schema:
132           $ref: "../swagger.yaml#/definitions/error"
133       "404":
134         description: Biblio not found
135         schema:
136           $ref: "../swagger.yaml#/definitions/error"
137       "409":
138         description: Unable to perform action on biblio
139         schema:
140           $ref: "../swagger.yaml#/definitions/error"
141       "500":
142         description: Internal error
143         schema:
144           $ref: "../swagger.yaml#/definitions/error"
145       "503":
146         description: Under maintenance
147         schema:
148           $ref: "../swagger.yaml#/definitions/error"
149     x-koha-authorization:
150       permissions:
151         editcatalogue: edit_catalogue
152   put:
153     x-mojo-to: Biblios#update
154     operationId: updateBiblio
155     tags:
156       - biblios
157     summary: Update biblio
158     parameters:
159       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
160       - name: Body
161         in: body
162         description: A JSON object or the Marc string describing a biblio
163         required: true
164         schema:
165           type:
166             - string
167             - object
168       - $ref: "../swagger.yaml#/parameters/framework_id_header"
169       - $ref: "../swagger.yaml#/parameters/marc_schema_header"
170       - $ref: "../swagger.yaml#/parameters/confirm_not_duplicate_header"
171     produces:
172       - application/json
173     responses:
174       "200":
175         description: A biblio
176       "400":
177         description: Bad request
178         schema:
179           $ref: "../swagger.yaml#/definitions/error"
180       "401":
181         description: Authentication required
182         schema:
183           $ref: "../swagger.yaml#/definitions/error"
184       "403":
185         description: Access forbidden
186         schema:
187           $ref: "../swagger.yaml#/definitions/error"
188       "404":
189         description: Biblio not found
190         schema:
191           $ref: "../swagger.yaml#/definitions/error"
192       "406":
193         description: Not acceptable
194         schema:
195           type: array
196           description: Accepted content-types
197           items:
198             type: string
199       "500":
200         description: |
201           Internal server error. Possible `error_code` attribute values:
202
203           * `internal_server_error`
204         schema:
205           $ref: "../swagger.yaml#/definitions/error"
206       "503":
207         description: Under maintenance
208         schema:
209           $ref: "../swagger.yaml#/definitions/error"
210     x-koha-authorization:
211       permissions:
212         editcatalogue: edit_catalogue
213 "/biblios/{biblio_id}/checkouts":
214   get:
215     x-mojo-to: Biblios#get_checkouts
216     operationId: listBiblioCheckouts
217     tags:
218       - checkouts
219     summary: List checkouts for a biblio
220     parameters:
221       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
222       - $ref: "../swagger.yaml#/parameters/page"
223       - $ref: "../swagger.yaml#/parameters/per_page"
224       - $ref: "../swagger.yaml#/parameters/match"
225       - $ref: "../swagger.yaml#/parameters/order_by"
226       - $ref: "../swagger.yaml#/parameters/q_param"
227       - $ref: "../swagger.yaml#/parameters/q_body"
228       - $ref: "../swagger.yaml#/parameters/q_header"
229       - $ref: "../swagger.yaml#/parameters/request_id_header"
230       - name: x-koha-embed
231         in: header
232         required: false
233         description: Embed list sent as a request header
234         type: array
235         items:
236           type: string
237           enum:
238             - issuer
239             - item
240             - patron
241             - library
242         collectionFormat: csv
243       - name: checked_in
244         in: query
245         description: By default, current checkouts are returned, when this is true then
246           checked in checkouts are returned as result.
247         type: boolean
248     produces:
249       - application/json
250     responses:
251       "200":
252         description: A list of checkouts
253         schema:
254           $ref: "../swagger.yaml#/definitions/checkouts"
255       "403":
256         description: Access forbidden
257         schema:
258           $ref: "../swagger.yaml#/definitions/error"
259       "404":
260         description: Biblio not found
261         schema:
262           $ref: "../swagger.yaml#/definitions/error"
263       "500":
264         description: |
265           Internal server error. Possible `error_code` attribute values:
266
267           * `internal_server_error`
268         schema:
269           $ref: "../swagger.yaml#/definitions/error"
270       "503":
271         description: Under maintenance
272         schema:
273           $ref: "../swagger.yaml#/definitions/error"
274     x-koha-authorization:
275       permissions:
276         circulate: circulate_remaining_permissions
277 "/biblios/{biblio_id}/items":
278   get:
279     x-mojo-to: Biblios#get_items
280     operationId: getBiblioItems
281     tags:
282       - biblios
283     summary: Get items for a biblio
284     parameters:
285       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
286       - $ref: "../swagger.yaml#/parameters/match"
287       - $ref: "../swagger.yaml#/parameters/order_by"
288       - $ref: "../swagger.yaml#/parameters/page"
289       - $ref: "../swagger.yaml#/parameters/per_page"
290       - $ref: "../swagger.yaml#/parameters/q_param"
291       - $ref: "../swagger.yaml#/parameters/q_body"
292       - $ref: "../swagger.yaml#/parameters/q_header"
293       - $ref: "../swagger.yaml#/parameters/request_id_header"
294     consumes:
295       - application/json
296     produces:
297       - application/json
298     responses:
299       "200":
300         description: A list of the items attached to the record
301         schema:
302           type: array
303           items:
304             $ref: "../swagger.yaml#/definitions/item"
305       "401":
306         description: Authentication required
307         schema:
308           $ref: "../swagger.yaml#/definitions/error"
309       "403":
310         description: Access forbidden
311         schema:
312           $ref: "../swagger.yaml#/definitions/error"
313       "404":
314         description: Biblio not found
315         schema:
316           $ref: "../swagger.yaml#/definitions/error"
317       "406":
318         description: Not acceptable
319         schema:
320           type: array
321           description: Accepted content-types
322           items:
323             type: string
324       "500":
325         description: |
326           Internal server error. Possible `error_code` attribute values:
327
328           * `internal_server_error`
329         schema:
330           $ref: "../swagger.yaml#/definitions/error"
331       "503":
332         description: Under maintenance
333         schema:
334           $ref: "../swagger.yaml#/definitions/error"
335     x-koha-authorization:
336       permissions:
337         catalogue: "1"
338 "/biblios/{biblio_id}/pickup_locations":
339   get:
340     x-mojo-to: Biblios#pickup_locations
341     operationId: getBiblioPickupLocations
342     tags:
343       - biblios
344     summary: Get valid pickup locations for a biblio
345     parameters:
346       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
347       - name: patron_id
348         in: query
349         description: Internal patron identifier
350         required: true
351         type: integer
352       - $ref: "../swagger.yaml#/parameters/match"
353       - $ref: "../swagger.yaml#/parameters/order_by"
354       - $ref: "../swagger.yaml#/parameters/page"
355       - $ref: "../swagger.yaml#/parameters/per_page"
356       - $ref: "../swagger.yaml#/parameters/q_param"
357       - $ref: "../swagger.yaml#/parameters/q_body"
358       - $ref: "../swagger.yaml#/parameters/q_header"
359     consumes:
360       - application/json
361     produces:
362       - application/json
363     responses:
364       "200":
365         description: Biblio pickup locations
366         schema:
367           type: array
368           items:
369             $ref: "../swagger.yaml#/definitions/library"
370       "400":
371         description: Missing or wrong parameters
372         schema:
373           $ref: "../swagger.yaml#/definitions/error"
374       "401":
375         description: Authentication required
376         schema:
377           $ref: "../swagger.yaml#/definitions/error"
378       "403":
379         description: Access forbidden
380         schema:
381           $ref: "../swagger.yaml#/definitions/error"
382       "404":
383         description: Biblio not found
384         schema:
385           $ref: "../swagger.yaml#/definitions/error"
386       "500":
387         description: |
388           Internal server error. Possible `error_code` attribute values:
389
390           * `internal_server_error`
391         schema:
392           $ref: "../swagger.yaml#/definitions/error"
393       "503":
394         description: Under maintenance
395         schema:
396           $ref: "../swagger.yaml#/definitions/error"
397     x-koha-authorization:
398       permissions:
399         reserveforothers: place_holds
400 "/public/biblios/{biblio_id}":
401   get:
402     x-mojo-to: Biblios#get_public
403     operationId: getBiblioPublic
404     tags:
405       - biblios
406     summary: Get biblio (public)
407     parameters:
408       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
409     produces:
410       - application/marcxml+xml
411       - application/marc-in-json
412       - application/marc
413       - text/plain
414     responses:
415       "200":
416         description: A biblio
417       "401":
418         description: Authentication required
419         schema:
420           $ref: "../swagger.yaml#/definitions/error"
421       "403":
422         description: Access forbidden
423         schema:
424           $ref: "../swagger.yaml#/definitions/error"
425       "404":
426         description: Biblio not found
427         schema:
428           $ref: "../swagger.yaml#/definitions/error"
429       "406":
430         description: Not acceptable
431         schema:
432           type: array
433           description: Accepted content-types
434           items:
435             type: string
436       "500":
437         description: |
438           Internal server error. Possible `error_code` attribute values:
439
440           * `internal_server_error`
441         schema:
442           $ref: "../swagger.yaml#/definitions/error"
443       "503":
444         description: Under maintenance
445         schema:
446           $ref: "../swagger.yaml#/definitions/error"
447 "/public/biblios/{biblio_id}/items":
448   get:
449     x-mojo-to: Biblios#get_items_public
450     operationId: getBiblioItemsPublic
451     tags:
452       - biblios
453       - items
454     parameters:
455       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
456       - $ref: "../swagger.yaml#/parameters/match"
457       - $ref: "../swagger.yaml#/parameters/order_by"
458       - $ref: "../swagger.yaml#/parameters/page"
459       - $ref: "../swagger.yaml#/parameters/per_page"
460       - $ref: "../swagger.yaml#/parameters/q_param"
461       - $ref: "../swagger.yaml#/parameters/q_body"
462       - $ref: "../swagger.yaml#/parameters/q_header"
463     consumes:
464       - application/json
465     produces:
466       - application/json
467     responses:
468       "200":
469         description: A list of the items attached to the record
470         schema:
471           type: array
472           items:
473             $ref: "../swagger.yaml#/definitions/item"
474       "401":
475         description: Authentication required
476         schema:
477           $ref: "../swagger.yaml#/definitions/error"
478       "403":
479         description: Access forbidden
480         schema:
481           $ref: "../swagger.yaml#/definitions/error"
482       "404":
483         description: Biblio not found
484         schema:
485           $ref: "../swagger.yaml#/definitions/error"
486       "406":
487         description: Not acceptable
488         schema:
489           type: array
490           description: Accepted content-types
491           items:
492             type: string
493       "500":
494         description: |
495           Internal server error. Possible `error_code` attribute values:
496
497           * `internal_server_error`
498         schema:
499           $ref: "../swagger.yaml#/definitions/error"
500       "503":
501         description: Under maintenance
502         schema:
503           $ref: "../swagger.yaml#/definitions/error"
504 "/public/biblios/{biblio_id}/ratings":
505   post:
506     x-mojo-to: Biblios#set_rating
507     operationId: setBiblioRating
508     tags:
509       - biblios
510     summary: set biblio rating (public)
511     parameters:
512       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
513       - name: body
514         in: body
515         description: A JSON object containing rating information
516         schema:
517           type: object
518           properties:
519             rating:
520               description: the rating
521               type:
522                 - integer
523                 - "null"
524           required:
525               - rating
526           additionalProperties: false
527     produces:
528       - application/json
529     responses:
530       "200":
531         description: Rating set
532         schema:
533           type: object
534           properties:
535             rating:
536               description: user's rating
537               type:
538                 - number
539                 - "null"
540             average:
541               description: average rating
542               type: number
543             count:
544               description: number of ratings
545               type: integer
546           additionalProperties: false
547       "401":
548         description: Authentication required
549         schema:
550           $ref: "../swagger.yaml#/definitions/error"
551       "403":
552         description: Access forbidden
553         schema:
554           $ref: "../swagger.yaml#/definitions/error"
555       "404":
556         description: Biblio not found
557         schema:
558           $ref: "../swagger.yaml#/definitions/error"
559       "500":
560         description: |
561           Internal server error. Possible `error_code` attribute values:
562
563           * `internal_server_error`
564         schema:
565           $ref: "../swagger.yaml#/definitions/error"
566       "503":
567         description: Under maintenance
568         schema:
569           $ref: "../swagger.yaml#/definitions/error"