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