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