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