Bug 33568: Status
[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             - checkout
427             - checkout.patron
428             - transfer
429             - first_hold
430             - first_hold.patron
431             - recall
432             - recall.patron
433             - item_type
434             - in_bundle
435             - bundle_host
436             - cover_image_ids
437             - item_group_item.item_group.description
438             - serialitem.serial
439         collectionFormat: csv
440       - $ref: "../swagger.yaml#/parameters/match"
441       - $ref: "../swagger.yaml#/parameters/order_by"
442       - $ref: "../swagger.yaml#/parameters/page"
443       - $ref: "../swagger.yaml#/parameters/per_page"
444       - $ref: "../swagger.yaml#/parameters/q_param"
445       - $ref: "../swagger.yaml#/parameters/q_body"
446       - $ref: "../swagger.yaml#/parameters/request_id_header"
447       - name: bookable
448         in: query
449         description: Limit to items that are bookable
450         required: false
451         type: boolean
452     consumes:
453       - application/json
454     produces:
455       - application/json
456     responses:
457       "200":
458         description: A list of the items attached to the record
459         schema:
460           type: array
461           items:
462             $ref: "../swagger.yaml#/definitions/item"
463       "401":
464         description: Authentication required
465         schema:
466           $ref: "../swagger.yaml#/definitions/error"
467       "403":
468         description: Access forbidden
469         schema:
470           $ref: "../swagger.yaml#/definitions/error"
471       "404":
472         description: Biblio not found
473         schema:
474           $ref: "../swagger.yaml#/definitions/error"
475       "406":
476         description: Not acceptable
477         schema:
478           type: array
479           description: Accepted content-types
480           items:
481             type: string
482       "500":
483         description: |
484           Internal server error. Possible `error_code` attribute values:
485
486           * `internal_server_error`
487         schema:
488           $ref: "../swagger.yaml#/definitions/error"
489       "503":
490         description: Under maintenance
491         schema:
492           $ref: "../swagger.yaml#/definitions/error"
493     x-koha-authorization:
494       permissions:
495         catalogue: "1"
496   post:
497     x-mojo-to: Biblios#add_item
498     operationId: addBiblioItem
499     tags:
500       - biblios
501     summary: Add an item for a biblio
502     parameters:
503       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
504       - name: body
505         in: body
506         description: A JSON object containing information about the new item
507         required: true
508         schema:
509           $ref: "../swagger.yaml#/definitions/item"
510     produces:
511       - application/json
512     responses:
513       "201":
514         description: Item added
515         schema:
516           $ref: "../swagger.yaml#/definitions/item"
517       "400":
518         description: Bad request
519         schema:
520           $ref: "../swagger.yaml#/definitions/error"
521       "401":
522         description: Authentication required
523         schema:
524           $ref: "../swagger.yaml#/definitions/error"
525       "403":
526         description: Access forbidden
527         schema:
528           $ref: "../swagger.yaml#/definitions/error"
529       "404":
530         description: Not found
531         schema:
532           $ref: "../swagger.yaml#/definitions/error"
533       "409":
534         description: Conflict
535         schema:
536           $ref: "../swagger.yaml#/definitions/error"
537       "500":
538         description: |
539           Internal server error. Possible `error_code` attribute values:
540
541           * `internal_server_error`
542         schema:
543           $ref: "../swagger.yaml#/definitions/error"
544       "503":
545         description: Under maintenance
546         schema:
547           $ref: "../swagger.yaml#/definitions/error"
548     x-koha-authorization:
549       permissions:
550         editcatalogue: edit_catalogue
551 "/biblios/{biblio_id}/items/{item_id}":
552   put:
553     x-mojo-to: Biblios#update_item
554     operationId: updateBiblioItem
555     tags:
556       - biblios
557     summary: Update an item for a biblio
558     parameters:
559       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
560       - $ref: "../swagger.yaml#/parameters/item_id_pp"
561       - name: body
562         in: body
563         description: A JSON object containing information about the item
564         required: true
565         schema:
566           $ref: "../swagger.yaml#/definitions/item"
567     produces:
568       - application/json
569     responses:
570       "200":
571         description: Item updated
572         schema:
573           $ref: "../swagger.yaml#/definitions/item"
574       "400":
575         description: Bad request
576         schema:
577           $ref: "../swagger.yaml#/definitions/error"
578       "401":
579         description: Authentication required
580         schema:
581           $ref: "../swagger.yaml#/definitions/error"
582       "403":
583         description: Access forbidden
584         schema:
585           $ref: "../swagger.yaml#/definitions/error"
586       "404":
587         description: Not found
588         schema:
589           $ref: "../swagger.yaml#/definitions/error"
590       "409":
591         description: Conflict
592         schema:
593           $ref: "../swagger.yaml#/definitions/error"
594       "500":
595         description: |
596           Internal server error. Possible `error_code` attribute values:
597
598           * `internal_server_error`
599         schema:
600           $ref: "../swagger.yaml#/definitions/error"
601       "503":
602         description: Under maintenance
603         schema:
604           $ref: "../swagger.yaml#/definitions/error"
605     x-koha-authorization:
606       permissions:
607         editcatalogue: edit_catalogue
608 "/biblios/{biblio_id}/pickup_locations":
609   get:
610     x-mojo-to: Biblios#pickup_locations
611     operationId: getBiblioPickupLocations
612     tags:
613       - biblios
614     summary: Get valid pickup locations for a biblio
615     parameters:
616       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
617       - name: patron_id
618         in: query
619         description: Internal patron identifier
620         required: true
621         type: integer
622       - $ref: "../swagger.yaml#/parameters/match"
623       - $ref: "../swagger.yaml#/parameters/order_by"
624       - $ref: "../swagger.yaml#/parameters/page"
625       - $ref: "../swagger.yaml#/parameters/per_page"
626       - $ref: "../swagger.yaml#/parameters/q_param"
627       - $ref: "../swagger.yaml#/parameters/q_body"
628     consumes:
629       - application/json
630     produces:
631       - application/json
632     responses:
633       "200":
634         description: Biblio pickup locations
635         schema:
636           type: array
637           items:
638             $ref: "../swagger.yaml#/definitions/library"
639       "400":
640         description: Missing or wrong parameters
641         schema:
642           $ref: "../swagger.yaml#/definitions/error"
643       "401":
644         description: Authentication required
645         schema:
646           $ref: "../swagger.yaml#/definitions/error"
647       "403":
648         description: Access forbidden
649         schema:
650           $ref: "../swagger.yaml#/definitions/error"
651       "404":
652         description: Biblio not found
653         schema:
654           $ref: "../swagger.yaml#/definitions/error"
655       "500":
656         description: |
657           Internal server error. Possible `error_code` attribute values:
658
659           * `internal_server_error`
660         schema:
661           $ref: "../swagger.yaml#/definitions/error"
662       "503":
663         description: Under maintenance
664         schema:
665           $ref: "../swagger.yaml#/definitions/error"
666     x-koha-authorization:
667       permissions:
668         reserveforothers: place_holds
669 "/public/biblios/{biblio_id}":
670   get:
671     x-mojo-to: Biblios#get_public
672     operationId: getBiblioPublic
673     tags:
674       - biblios
675     summary: Get biblio (public)
676     parameters:
677       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
678     produces:
679       - application/marcxml+xml
680       - application/marc-in-json
681       - application/marc
682       - text/plain
683     responses:
684       "200":
685         description: A biblio
686       "401":
687         description: Authentication required
688         schema:
689           $ref: "../swagger.yaml#/definitions/error"
690       "403":
691         description: Access forbidden
692         schema:
693           $ref: "../swagger.yaml#/definitions/error"
694       "404":
695         description: Biblio not found
696         schema:
697           $ref: "../swagger.yaml#/definitions/error"
698       "406":
699         description: Not acceptable
700         schema:
701           type: array
702           description: Accepted content-types
703           items:
704             type: string
705       "500":
706         description: |
707           Internal server error. Possible `error_code` attribute values:
708
709           * `internal_server_error`
710         schema:
711           $ref: "../swagger.yaml#/definitions/error"
712       "503":
713         description: Under maintenance
714         schema:
715           $ref: "../swagger.yaml#/definitions/error"
716 "/public/biblios/{biblio_id}/items":
717   get:
718     x-mojo-to: Biblios#get_items_public
719     operationId: getBiblioItemsPublic
720     tags:
721       - biblios
722       - items
723     parameters:
724       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
725       - $ref: "../swagger.yaml#/parameters/match"
726       - $ref: "../swagger.yaml#/parameters/order_by"
727       - $ref: "../swagger.yaml#/parameters/page"
728       - $ref: "../swagger.yaml#/parameters/per_page"
729       - $ref: "../swagger.yaml#/parameters/q_param"
730       - $ref: "../swagger.yaml#/parameters/q_body"
731       - name: x-koha-embed
732         in: header
733         required: false
734         description: Embed list sent as a request header
735         type: array
736         items:
737           type: string
738           enum:
739             - +strings
740         collectionFormat: csv
741     consumes:
742       - application/json
743     produces:
744       - application/json
745     responses:
746       "200":
747         description: A list of the items attached to the record
748         schema:
749           type: array
750           items:
751             $ref: "../swagger.yaml#/definitions/item"
752       "401":
753         description: Authentication required
754         schema:
755           $ref: "../swagger.yaml#/definitions/error"
756       "403":
757         description: Access forbidden
758         schema:
759           $ref: "../swagger.yaml#/definitions/error"
760       "404":
761         description: Biblio not found
762         schema:
763           $ref: "../swagger.yaml#/definitions/error"
764       "406":
765         description: Not acceptable
766         schema:
767           type: array
768           description: Accepted content-types
769           items:
770             type: string
771       "500":
772         description: |
773           Internal server error. Possible `error_code` attribute values:
774
775           * `internal_server_error`
776         schema:
777           $ref: "../swagger.yaml#/definitions/error"
778       "503":
779         description: Under maintenance
780         schema:
781           $ref: "../swagger.yaml#/definitions/error"
782 "/public/biblios/{biblio_id}/ratings":
783   post:
784     x-mojo-to: Biblios#set_rating
785     operationId: setBiblioRating
786     tags:
787       - biblios
788     summary: set biblio rating (public)
789     parameters:
790       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
791       - name: body
792         in: body
793         description: A JSON object containing rating information
794         schema:
795           type: object
796           properties:
797             rating:
798               description: the rating
799               type:
800                 - integer
801                 - "null"
802           required:
803               - rating
804           additionalProperties: false
805     produces:
806       - application/json
807     responses:
808       "200":
809         description: Rating set
810         schema:
811           type: object
812           properties:
813             rating:
814               description: user's rating
815               type:
816                 - number
817                 - "null"
818             average:
819               description: average rating
820               type: number
821             count:
822               description: number of ratings
823               type: integer
824           additionalProperties: false
825       "401":
826         description: Authentication required
827         schema:
828           $ref: "../swagger.yaml#/definitions/error"
829       "403":
830         description: Access forbidden
831         schema:
832           $ref: "../swagger.yaml#/definitions/error"
833       "404":
834         description: Biblio not found
835         schema:
836           $ref: "../swagger.yaml#/definitions/error"
837       "500":
838         description: |
839           Internal server error. Possible `error_code` attribute values:
840
841           * `internal_server_error`
842         schema:
843           $ref: "../swagger.yaml#/definitions/error"
844       "503":
845         description: Under maintenance
846         schema:
847           $ref: "../swagger.yaml#/definitions/error"