Bug 33568: Cover images
[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     description: |
10       Add a bibliographic record to Koha. An optional `x-framework-id`
11       may be passed to specify the cataloguing framework to be used (instead
12       of the default).
13
14       The request body is expected to contain a MARC record in the format specified in
15       the `Content-type` header you pass. Possible values for this header and the corresponding
16       record formats expected are listed below:
17
18       * application/marcxml+xml: MARCXML
19       * application/marc-in-json: MARC-in-JSON
20       * application/marc: Raw USMARC binary data
21     parameters:
22       - $ref: "../swagger.yaml#/parameters/framework_id_header"
23       - $ref: "../swagger.yaml#/parameters/marc_schema_header"
24       - $ref: "../swagger.yaml#/parameters/confirm_not_duplicate_header"
25     produces:
26       - application/json
27     responses:
28       "200":
29         description: A biblio
30       "400":
31         description: Bad request
32         schema:
33           $ref: "../swagger.yaml#/definitions/error"
34       "401":
35         description: Authentication required
36         schema:
37           $ref: "../swagger.yaml#/definitions/error"
38       "403":
39         description: Access forbidden
40         schema:
41           $ref: "../swagger.yaml#/definitions/error"
42       "406":
43         description: Not acceptable
44         schema:
45           type: array
46           description: Accepted content-types
47           items:
48             type: string
49       "500":
50         description: |
51           Internal server error. Possible `error_code` attribute values:
52
53           * `internal_server_error`
54         schema:
55           $ref: "../swagger.yaml#/definitions/error"
56       "503":
57         description: Under maintenance
58         schema:
59           $ref: "../swagger.yaml#/definitions/error"
60     x-koha-authorization:
61       permissions:
62         editcatalogue: edit_catalogue
63   get:
64     x-mojo-to: Biblios#list
65     operationId: listBiblio
66     tags:
67       - biblios
68     summary: List biblios
69     parameters:
70       - $ref: "../swagger.yaml#/parameters/page"
71       - $ref: "../swagger.yaml#/parameters/per_page"
72       - $ref: "../swagger.yaml#/parameters/match"
73       - $ref: "../swagger.yaml#/parameters/order_by"
74       - $ref: "../swagger.yaml#/parameters/q_param"
75       - $ref: "../swagger.yaml#/parameters/q_body"
76       - $ref: "../swagger.yaml#/parameters/request_id_header"
77     produces:
78       - application/json
79       - application/marcxml+xml
80       - application/marc-in-json
81       - application/marc
82       - text/plain
83     responses:
84       "200":
85         description: A list of biblios
86       "401":
87         description: Authentication required
88         schema:
89           $ref: "../swagger.yaml#/definitions/error"
90       "403":
91         description: Access forbidden
92         schema:
93           $ref: "../swagger.yaml#/definitions/error"
94       "404":
95         description: Biblio not found
96         schema:
97           $ref: "../swagger.yaml#/definitions/error"
98       "406":
99         description: Not acceptable
100         schema:
101           type: array
102           description: Accepted content-types
103           items:
104             type: string
105       "500":
106         description: |
107           Internal server error. Possible `error_code` attribute values:
108
109           * `internal_server_error`
110         schema:
111           $ref: "../swagger.yaml#/definitions/error"
112       "503":
113         description: Under maintenance
114         schema:
115           $ref: "../swagger.yaml#/definitions/error"
116     x-koha-authorization:
117       permissions:
118         catalogue: "1"
119 "/biblios/{biblio_id}":
120   get:
121     x-mojo-to: Biblios#get
122     operationId: getBiblio
123     tags:
124       - biblios
125     summary: Get biblio
126     parameters:
127       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
128     produces:
129       - application/json
130       - application/marcxml+xml
131       - application/marc-in-json
132       - application/marc
133       - text/plain
134     responses:
135       "200":
136         description: A biblio
137       "401":
138         description: Authentication required
139         schema:
140           $ref: "../swagger.yaml#/definitions/error"
141       "403":
142         description: Access forbidden
143         schema:
144           $ref: "../swagger.yaml#/definitions/error"
145       "404":
146         description: Biblio not found
147         schema:
148           $ref: "../swagger.yaml#/definitions/error"
149       "406":
150         description: Not acceptable
151         schema:
152           type: array
153           description: Accepted content-types
154           items:
155             type: string
156       "500":
157         description: |
158           Internal server error. Possible `error_code` attribute values:
159
160           * `internal_server_error`
161         schema:
162           $ref: "../swagger.yaml#/definitions/error"
163       "503":
164         description: Under maintenance
165         schema:
166           $ref: "../swagger.yaml#/definitions/error"
167     x-koha-authorization:
168       permissions:
169         catalogue: "1"
170   delete:
171     x-mojo-to: Biblios#delete
172     operationId: deleteBiblio
173     tags:
174       - biblios
175     summary: Delete biblio
176     parameters:
177       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
178     produces:
179       - application/json
180     responses:
181       "204":
182         description: Biblio deleted
183         schema:
184           type: string
185       "401":
186         description: Authentication required
187         schema:
188           $ref: "../swagger.yaml#/definitions/error"
189       "403":
190         description: Access forbidden
191         schema:
192           $ref: "../swagger.yaml#/definitions/error"
193       "404":
194         description: Biblio not found
195         schema:
196           $ref: "../swagger.yaml#/definitions/error"
197       "409":
198         description: Unable to perform action on biblio
199         schema:
200           $ref: "../swagger.yaml#/definitions/error"
201       "500":
202         description: Internal error
203         schema:
204           $ref: "../swagger.yaml#/definitions/error"
205       "503":
206         description: Under maintenance
207         schema:
208           $ref: "../swagger.yaml#/definitions/error"
209     x-koha-authorization:
210       permissions:
211         editcatalogue: edit_catalogue
212   put:
213     x-mojo-to: Biblios#update
214     operationId: updateBiblio
215     tags:
216       - biblios
217     summary: Update biblio
218     description: |
219       Updates a bibliographic record to Koha. An optional `x-framework-id`
220       may be passed, to specify the cataloguing framework to be used (instead
221       of the default).
222
223       The request body is expected to contain a MARC record in the format specified by
224       the `Content-type` header passed. Possible values for this headers and the corresponding
225       record formats expected are listed below:
226
227       * application/marcxml+xml: MARCXML
228       * application/marc-in-json: MARC-in-JSON
229       * application/marc: Raw USMARC binary data
230     parameters:
231       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
232       - $ref: "../swagger.yaml#/parameters/framework_id_header"
233       - $ref: "../swagger.yaml#/parameters/marc_schema_header"
234       - $ref: "../swagger.yaml#/parameters/confirm_not_duplicate_header"
235     produces:
236       - application/json
237     responses:
238       "200":
239         description: A biblio
240       "400":
241         description: Bad request
242         schema:
243           $ref: "../swagger.yaml#/definitions/error"
244       "401":
245         description: Authentication required
246         schema:
247           $ref: "../swagger.yaml#/definitions/error"
248       "403":
249         description: Access forbidden
250         schema:
251           $ref: "../swagger.yaml#/definitions/error"
252       "404":
253         description: Biblio not found
254         schema:
255           $ref: "../swagger.yaml#/definitions/error"
256       "406":
257         description: Not acceptable
258         schema:
259           type: array
260           description: Accepted content-types
261           items:
262             type: string
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         editcatalogue: edit_catalogue
277 "/biblios/{biblio_id}/bookings":
278   get:
279     x-mojo-to: Biblios#get_bookings
280     operationId: getBiblioBookings
281     tags:
282       - bookings
283     summary: Get bookings 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       - name: x-koha-embed
293         in: header
294         required: false
295         description: Embed list sent as a request header
296         type: array
297         items:
298           type: string
299           enum:
300             - item
301             - patron
302         collectionFormat: csv
303     consumes:
304       - application/json
305     produces:
306       - application/json
307     responses:
308       "200":
309         description: A list of the bookings attached to the record
310         schema:
311           type: array
312           items:
313             $ref: ../swagger.yaml#/definitions/booking
314       "401":
315         description: Authentication required
316         schema:
317           $ref: ../swagger.yaml#/definitions/error
318       "403":
319         description: Access forbidden
320         schema:
321           $ref: ../swagger.yaml#/definitions/error
322       "404":
323         description: Biblio not found
324         schema:
325           $ref: ../swagger.yaml#/definitions/error
326       "406":
327         description: Not acceptable
328         schema:
329           type: array
330           description: Accepted content-types
331           items:
332             type: string
333       "500":
334         description: Internal server error
335         schema:
336           $ref: ../swagger.yaml#/definitions/error
337       "503":
338         description: Under maintenance
339         schema:
340           $ref: ../swagger.yaml#/definitions/error
341     x-koha-authorization:
342       permissions:
343         circulate: "manage_bookings"
344 "/biblios/{biblio_id}/checkouts":
345   get:
346     x-mojo-to: Biblios#get_checkouts
347     operationId: listBiblioCheckouts
348     tags:
349       - checkouts
350     summary: List checkouts for a biblio
351     parameters:
352       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
353       - $ref: "../swagger.yaml#/parameters/page"
354       - $ref: "../swagger.yaml#/parameters/per_page"
355       - $ref: "../swagger.yaml#/parameters/match"
356       - $ref: "../swagger.yaml#/parameters/order_by"
357       - $ref: "../swagger.yaml#/parameters/q_param"
358       - $ref: "../swagger.yaml#/parameters/q_body"
359       - $ref: "../swagger.yaml#/parameters/request_id_header"
360       - name: x-koha-embed
361         in: header
362         required: false
363         description: Embed list sent as a request header
364         type: array
365         items:
366           type: string
367           enum:
368             - issuer
369             - item
370             - patron
371             - library
372         collectionFormat: csv
373       - name: checked_in
374         in: query
375         description: By default, current checkouts are returned, when this is true then
376           checked in checkouts are returned as result.
377         type: boolean
378     produces:
379       - application/json
380     responses:
381       "200":
382         description: A list of checkouts
383         schema:
384           $ref: "../swagger.yaml#/definitions/checkouts"
385       "403":
386         description: Access forbidden
387         schema:
388           $ref: "../swagger.yaml#/definitions/error"
389       "404":
390         description: Biblio not found
391         schema:
392           $ref: "../swagger.yaml#/definitions/error"
393       "500":
394         description: |
395           Internal server error. Possible `error_code` attribute values:
396
397           * `internal_server_error`
398         schema:
399           $ref: "../swagger.yaml#/definitions/error"
400       "503":
401         description: Under maintenance
402         schema:
403           $ref: "../swagger.yaml#/definitions/error"
404     x-koha-authorization:
405       permissions:
406         - circulate: circulate_remaining_permissions
407         - circulate: manage_bookings
408 "/biblios/{biblio_id}/items":
409   get:
410     x-mojo-to: Biblios#get_items
411     operationId: getBiblioItems
412     tags:
413       - biblios
414     summary: Get items for a biblio
415     parameters:
416       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
417       - name: x-koha-embed
418         in: header
419         required: false
420         description: Embed list sent as a request header
421         type: array
422         items:
423           type: string
424           enum:
425             - +strings
426             - cover_image_ids
427         collectionFormat: csv
428       - $ref: "../swagger.yaml#/parameters/match"
429       - $ref: "../swagger.yaml#/parameters/order_by"
430       - $ref: "../swagger.yaml#/parameters/page"
431       - $ref: "../swagger.yaml#/parameters/per_page"
432       - $ref: "../swagger.yaml#/parameters/q_param"
433       - $ref: "../swagger.yaml#/parameters/q_body"
434       - $ref: "../swagger.yaml#/parameters/request_id_header"
435       - name: bookable
436         in: query
437         description: Limit to items that are bookable
438         required: false
439         type: boolean
440     consumes:
441       - application/json
442     produces:
443       - application/json
444     responses:
445       "200":
446         description: A list of the items attached to the record
447         schema:
448           type: array
449           items:
450             $ref: "../swagger.yaml#/definitions/item"
451       "401":
452         description: Authentication required
453         schema:
454           $ref: "../swagger.yaml#/definitions/error"
455       "403":
456         description: Access forbidden
457         schema:
458           $ref: "../swagger.yaml#/definitions/error"
459       "404":
460         description: Biblio not found
461         schema:
462           $ref: "../swagger.yaml#/definitions/error"
463       "406":
464         description: Not acceptable
465         schema:
466           type: array
467           description: Accepted content-types
468           items:
469             type: string
470       "500":
471         description: |
472           Internal server error. Possible `error_code` attribute values:
473
474           * `internal_server_error`
475         schema:
476           $ref: "../swagger.yaml#/definitions/error"
477       "503":
478         description: Under maintenance
479         schema:
480           $ref: "../swagger.yaml#/definitions/error"
481     x-koha-authorization:
482       permissions:
483         catalogue: "1"
484   post:
485     x-mojo-to: Biblios#add_item
486     operationId: addBiblioItem
487     tags:
488       - biblios
489     summary: Add an item for a biblio
490     parameters:
491       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
492       - name: body
493         in: body
494         description: A JSON object containing information about the new item
495         required: true
496         schema:
497           $ref: "../swagger.yaml#/definitions/item"
498     produces:
499       - application/json
500     responses:
501       "201":
502         description: Item added
503         schema:
504           $ref: "../swagger.yaml#/definitions/item"
505       "400":
506         description: Bad request
507         schema:
508           $ref: "../swagger.yaml#/definitions/error"
509       "401":
510         description: Authentication required
511         schema:
512           $ref: "../swagger.yaml#/definitions/error"
513       "403":
514         description: Access forbidden
515         schema:
516           $ref: "../swagger.yaml#/definitions/error"
517       "404":
518         description: Not found
519         schema:
520           $ref: "../swagger.yaml#/definitions/error"
521       "409":
522         description: Conflict
523         schema:
524           $ref: "../swagger.yaml#/definitions/error"
525       "500":
526         description: |
527           Internal server error. Possible `error_code` attribute values:
528
529           * `internal_server_error`
530         schema:
531           $ref: "../swagger.yaml#/definitions/error"
532       "503":
533         description: Under maintenance
534         schema:
535           $ref: "../swagger.yaml#/definitions/error"
536     x-koha-authorization:
537       permissions:
538         editcatalogue: edit_catalogue
539 "/biblios/{biblio_id}/items/{item_id}":
540   put:
541     x-mojo-to: Biblios#update_item
542     operationId: updateBiblioItem
543     tags:
544       - biblios
545     summary: Update an item for a biblio
546     parameters:
547       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
548       - $ref: "../swagger.yaml#/parameters/item_id_pp"
549       - name: body
550         in: body
551         description: A JSON object containing information about the item
552         required: true
553         schema:
554           $ref: "../swagger.yaml#/definitions/item"
555     produces:
556       - application/json
557     responses:
558       "200":
559         description: Item updated
560         schema:
561           $ref: "../swagger.yaml#/definitions/item"
562       "400":
563         description: Bad request
564         schema:
565           $ref: "../swagger.yaml#/definitions/error"
566       "401":
567         description: Authentication required
568         schema:
569           $ref: "../swagger.yaml#/definitions/error"
570       "403":
571         description: Access forbidden
572         schema:
573           $ref: "../swagger.yaml#/definitions/error"
574       "404":
575         description: Not found
576         schema:
577           $ref: "../swagger.yaml#/definitions/error"
578       "409":
579         description: Conflict
580         schema:
581           $ref: "../swagger.yaml#/definitions/error"
582       "500":
583         description: |
584           Internal server error. Possible `error_code` attribute values:
585
586           * `internal_server_error`
587         schema:
588           $ref: "../swagger.yaml#/definitions/error"
589       "503":
590         description: Under maintenance
591         schema:
592           $ref: "../swagger.yaml#/definitions/error"
593     x-koha-authorization:
594       permissions:
595         editcatalogue: edit_catalogue
596 "/biblios/{biblio_id}/pickup_locations":
597   get:
598     x-mojo-to: Biblios#pickup_locations
599     operationId: getBiblioPickupLocations
600     tags:
601       - biblios
602     summary: Get valid pickup locations for a biblio
603     parameters:
604       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
605       - name: patron_id
606         in: query
607         description: Internal patron identifier
608         required: true
609         type: integer
610       - $ref: "../swagger.yaml#/parameters/match"
611       - $ref: "../swagger.yaml#/parameters/order_by"
612       - $ref: "../swagger.yaml#/parameters/page"
613       - $ref: "../swagger.yaml#/parameters/per_page"
614       - $ref: "../swagger.yaml#/parameters/q_param"
615       - $ref: "../swagger.yaml#/parameters/q_body"
616     consumes:
617       - application/json
618     produces:
619       - application/json
620     responses:
621       "200":
622         description: Biblio pickup locations
623         schema:
624           type: array
625           items:
626             $ref: "../swagger.yaml#/definitions/library"
627       "400":
628         description: Missing or wrong parameters
629         schema:
630           $ref: "../swagger.yaml#/definitions/error"
631       "401":
632         description: Authentication required
633         schema:
634           $ref: "../swagger.yaml#/definitions/error"
635       "403":
636         description: Access forbidden
637         schema:
638           $ref: "../swagger.yaml#/definitions/error"
639       "404":
640         description: Biblio not found
641         schema:
642           $ref: "../swagger.yaml#/definitions/error"
643       "500":
644         description: |
645           Internal server error. Possible `error_code` attribute values:
646
647           * `internal_server_error`
648         schema:
649           $ref: "../swagger.yaml#/definitions/error"
650       "503":
651         description: Under maintenance
652         schema:
653           $ref: "../swagger.yaml#/definitions/error"
654     x-koha-authorization:
655       permissions:
656         reserveforothers: place_holds
657 "/public/biblios/{biblio_id}":
658   get:
659     x-mojo-to: Biblios#get_public
660     operationId: getBiblioPublic
661     tags:
662       - biblios
663     summary: Get biblio (public)
664     parameters:
665       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
666     produces:
667       - application/marcxml+xml
668       - application/marc-in-json
669       - application/marc
670       - text/plain
671     responses:
672       "200":
673         description: A biblio
674       "401":
675         description: Authentication required
676         schema:
677           $ref: "../swagger.yaml#/definitions/error"
678       "403":
679         description: Access forbidden
680         schema:
681           $ref: "../swagger.yaml#/definitions/error"
682       "404":
683         description: Biblio not found
684         schema:
685           $ref: "../swagger.yaml#/definitions/error"
686       "406":
687         description: Not acceptable
688         schema:
689           type: array
690           description: Accepted content-types
691           items:
692             type: string
693       "500":
694         description: |
695           Internal server error. Possible `error_code` attribute values:
696
697           * `internal_server_error`
698         schema:
699           $ref: "../swagger.yaml#/definitions/error"
700       "503":
701         description: Under maintenance
702         schema:
703           $ref: "../swagger.yaml#/definitions/error"
704 "/public/biblios/{biblio_id}/items":
705   get:
706     x-mojo-to: Biblios#get_items_public
707     operationId: getBiblioItemsPublic
708     tags:
709       - biblios
710       - items
711     parameters:
712       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
713       - $ref: "../swagger.yaml#/parameters/match"
714       - $ref: "../swagger.yaml#/parameters/order_by"
715       - $ref: "../swagger.yaml#/parameters/page"
716       - $ref: "../swagger.yaml#/parameters/per_page"
717       - $ref: "../swagger.yaml#/parameters/q_param"
718       - $ref: "../swagger.yaml#/parameters/q_body"
719       - name: x-koha-embed
720         in: header
721         required: false
722         description: Embed list sent as a request header
723         type: array
724         items:
725           type: string
726           enum:
727             - +strings
728         collectionFormat: csv
729     consumes:
730       - application/json
731     produces:
732       - application/json
733     responses:
734       "200":
735         description: A list of the items attached to the record
736         schema:
737           type: array
738           items:
739             $ref: "../swagger.yaml#/definitions/item"
740       "401":
741         description: Authentication required
742         schema:
743           $ref: "../swagger.yaml#/definitions/error"
744       "403":
745         description: Access forbidden
746         schema:
747           $ref: "../swagger.yaml#/definitions/error"
748       "404":
749         description: Biblio not found
750         schema:
751           $ref: "../swagger.yaml#/definitions/error"
752       "406":
753         description: Not acceptable
754         schema:
755           type: array
756           description: Accepted content-types
757           items:
758             type: string
759       "500":
760         description: |
761           Internal server error. Possible `error_code` attribute values:
762
763           * `internal_server_error`
764         schema:
765           $ref: "../swagger.yaml#/definitions/error"
766       "503":
767         description: Under maintenance
768         schema:
769           $ref: "../swagger.yaml#/definitions/error"
770 "/public/biblios/{biblio_id}/ratings":
771   post:
772     x-mojo-to: Biblios#set_rating
773     operationId: setBiblioRating
774     tags:
775       - biblios
776     summary: set biblio rating (public)
777     parameters:
778       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
779       - name: body
780         in: body
781         description: A JSON object containing rating information
782         schema:
783           type: object
784           properties:
785             rating:
786               description: the rating
787               type:
788                 - integer
789                 - "null"
790           required:
791               - rating
792           additionalProperties: false
793     produces:
794       - application/json
795     responses:
796       "200":
797         description: Rating set
798         schema:
799           type: object
800           properties:
801             rating:
802               description: user's rating
803               type:
804                 - number
805                 - "null"
806             average:
807               description: average rating
808               type: number
809             count:
810               description: number of ratings
811               type: integer
812           additionalProperties: false
813       "401":
814         description: Authentication required
815         schema:
816           $ref: "../swagger.yaml#/definitions/error"
817       "403":
818         description: Access forbidden
819         schema:
820           $ref: "../swagger.yaml#/definitions/error"
821       "404":
822         description: Biblio not found
823         schema:
824           $ref: "../swagger.yaml#/definitions/error"
825       "500":
826         description: |
827           Internal server error. Possible `error_code` attribute values:
828
829           * `internal_server_error`
830         schema:
831           $ref: "../swagger.yaml#/definitions/error"
832       "503":
833         description: Under maintenance
834         schema:
835           $ref: "../swagger.yaml#/definitions/error"