Bug 31800: Add REST endpoint to add a biblio
[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 "/biblios/{biblio_id}":
60   get:
61     x-mojo-to: Biblios#get
62     operationId: getBiblio
63     tags:
64       - biblios
65     summary: Get biblio
66     parameters:
67       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
68     produces:
69       - application/json
70       - application/marcxml+xml
71       - application/marc-in-json
72       - application/marc
73       - text/plain
74     responses:
75       "200":
76         description: A biblio
77       "401":
78         description: Authentication required
79         schema:
80           $ref: "../swagger.yaml#/definitions/error"
81       "403":
82         description: Access forbidden
83         schema:
84           $ref: "../swagger.yaml#/definitions/error"
85       "404":
86         description: Biblio not found
87         schema:
88           $ref: "../swagger.yaml#/definitions/error"
89       "406":
90         description: Not acceptable
91         schema:
92           type: array
93           description: Accepted content-types
94           items:
95             type: string
96       "500":
97         description: |
98           Internal server error. Possible `error_code` attribute values:
99
100           * `internal_server_error`
101         schema:
102           $ref: "../swagger.yaml#/definitions/error"
103       "503":
104         description: Under maintenance
105         schema:
106           $ref: "../swagger.yaml#/definitions/error"
107     x-koha-authorization:
108       permissions:
109         catalogue: "1"
110   delete:
111     x-mojo-to: Biblios#delete
112     operationId: deleteBiblio
113     tags:
114       - biblios
115     summary: Delete biblio
116     parameters:
117       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
118     produces:
119       - application/json
120     responses:
121       "204":
122         description: Biblio deleted
123         schema:
124           type: string
125       "401":
126         description: Authentication required
127         schema:
128           $ref: "../swagger.yaml#/definitions/error"
129       "403":
130         description: Access forbidden
131         schema:
132           $ref: "../swagger.yaml#/definitions/error"
133       "404":
134         description: Biblio not found
135         schema:
136           $ref: "../swagger.yaml#/definitions/error"
137       "409":
138         description: Unable to perform action on biblio
139         schema:
140           $ref: "../swagger.yaml#/definitions/error"
141       "500":
142         description: Internal error
143         schema:
144           $ref: "../swagger.yaml#/definitions/error"
145       "503":
146         description: Under maintenance
147         schema:
148           $ref: "../swagger.yaml#/definitions/error"
149     x-koha-authorization:
150       permissions:
151         editcatalogue: edit_catalogue
152 "/biblios/{biblio_id}/checkouts":
153   get:
154     x-mojo-to: Biblios#get_checkouts
155     operationId: listBiblioCheckouts
156     tags:
157       - checkouts
158     summary: List checkouts for a biblio
159     parameters:
160       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
161       - $ref: "../swagger.yaml#/parameters/page"
162       - $ref: "../swagger.yaml#/parameters/per_page"
163       - $ref: "../swagger.yaml#/parameters/match"
164       - $ref: "../swagger.yaml#/parameters/order_by"
165       - $ref: "../swagger.yaml#/parameters/q_param"
166       - $ref: "../swagger.yaml#/parameters/q_body"
167       - $ref: "../swagger.yaml#/parameters/q_header"
168       - $ref: "../swagger.yaml#/parameters/request_id_header"
169       - name: x-koha-embed
170         in: header
171         required: false
172         description: Embed list sent as a request header
173         type: array
174         items:
175           type: string
176           enum:
177             - issuer
178             - item
179             - patron
180             - library
181         collectionFormat: csv
182       - name: checked_in
183         in: query
184         description: By default, current checkouts are returned, when this is true then
185           checked in checkouts are returned as result.
186         type: boolean
187     produces:
188       - application/json
189     responses:
190       "200":
191         description: A list of checkouts
192         schema:
193           $ref: "../swagger.yaml#/definitions/checkouts"
194       "403":
195         description: Access forbidden
196         schema:
197           $ref: "../swagger.yaml#/definitions/error"
198       "404":
199         description: Biblio not found
200         schema:
201           $ref: "../swagger.yaml#/definitions/error"
202       "500":
203         description: |
204           Internal server error. Possible `error_code` attribute values:
205
206           * `internal_server_error`
207         schema:
208           $ref: "../swagger.yaml#/definitions/error"
209       "503":
210         description: Under maintenance
211         schema:
212           $ref: "../swagger.yaml#/definitions/error"
213     x-koha-authorization:
214       permissions:
215         circulate: circulate_remaining_permissions
216 "/biblios/{biblio_id}/items":
217   get:
218     x-mojo-to: Biblios#get_items
219     operationId: getBiblioItems
220     tags:
221       - biblios
222     summary: Get items for a biblio
223     parameters:
224       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
225       - $ref: "../swagger.yaml#/parameters/match"
226       - $ref: "../swagger.yaml#/parameters/order_by"
227       - $ref: "../swagger.yaml#/parameters/page"
228       - $ref: "../swagger.yaml#/parameters/per_page"
229       - $ref: "../swagger.yaml#/parameters/q_param"
230       - $ref: "../swagger.yaml#/parameters/q_body"
231       - $ref: "../swagger.yaml#/parameters/q_header"
232       - $ref: "../swagger.yaml#/parameters/request_id_header"
233     consumes:
234       - application/json
235     produces:
236       - application/json
237     responses:
238       "200":
239         description: A list of the items attached to the record
240         schema:
241           type: array
242           items:
243             $ref: "../swagger.yaml#/definitions/item"
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         catalogue: "1"
277 "/biblios/{biblio_id}/pickup_locations":
278   get:
279     x-mojo-to: Biblios#pickup_locations
280     operationId: getBiblioPickupLocations
281     tags:
282       - biblios
283     summary: Get valid pickup locations for a biblio
284     parameters:
285       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
286       - name: patron_id
287         in: query
288         description: Internal patron identifier
289         required: true
290         type: integer
291       - $ref: "../swagger.yaml#/parameters/match"
292       - $ref: "../swagger.yaml#/parameters/order_by"
293       - $ref: "../swagger.yaml#/parameters/page"
294       - $ref: "../swagger.yaml#/parameters/per_page"
295       - $ref: "../swagger.yaml#/parameters/q_param"
296       - $ref: "../swagger.yaml#/parameters/q_body"
297       - $ref: "../swagger.yaml#/parameters/q_header"
298     consumes:
299       - application/json
300     produces:
301       - application/json
302     responses:
303       "200":
304         description: Biblio pickup locations
305         schema:
306           type: array
307           items:
308             $ref: "../swagger.yaml#/definitions/library"
309       "400":
310         description: Missing or wrong parameters
311         schema:
312           $ref: "../swagger.yaml#/definitions/error"
313       "401":
314         description: Authentication required
315         schema:
316           $ref: "../swagger.yaml#/definitions/error"
317       "403":
318         description: Access forbidden
319         schema:
320           $ref: "../swagger.yaml#/definitions/error"
321       "404":
322         description: Biblio not found
323         schema:
324           $ref: "../swagger.yaml#/definitions/error"
325       "500":
326         description: |
327           Internal server error. Possible `error_code` attribute values:
328
329           * `internal_server_error`
330         schema:
331           $ref: "../swagger.yaml#/definitions/error"
332       "503":
333         description: Under maintenance
334         schema:
335           $ref: "../swagger.yaml#/definitions/error"
336     x-koha-authorization:
337       permissions:
338         reserveforothers: place_holds
339 "/public/biblios/{biblio_id}":
340   get:
341     x-mojo-to: Biblios#get_public
342     operationId: getBiblioPublic
343     tags:
344       - biblios
345     summary: Get biblio (public)
346     parameters:
347       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
348     produces:
349       - application/marcxml+xml
350       - application/marc-in-json
351       - application/marc
352       - text/plain
353     responses:
354       "200":
355         description: A biblio
356       "401":
357         description: Authentication required
358         schema:
359           $ref: "../swagger.yaml#/definitions/error"
360       "403":
361         description: Access forbidden
362         schema:
363           $ref: "../swagger.yaml#/definitions/error"
364       "404":
365         description: Biblio not found
366         schema:
367           $ref: "../swagger.yaml#/definitions/error"
368       "406":
369         description: Not acceptable
370         schema:
371           type: array
372           description: Accepted content-types
373           items:
374             type: string
375       "500":
376         description: |
377           Internal server error. Possible `error_code` attribute values:
378
379           * `internal_server_error`
380         schema:
381           $ref: "../swagger.yaml#/definitions/error"
382       "503":
383         description: Under maintenance
384         schema:
385           $ref: "../swagger.yaml#/definitions/error"
386 "/public/biblios/{biblio_id}/items":
387   get:
388     x-mojo-to: Biblios#get_items_public
389     operationId: getBiblioItemsPublic
390     tags:
391       - biblios
392       - items
393     parameters:
394       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
395       - $ref: "../swagger.yaml#/parameters/match"
396       - $ref: "../swagger.yaml#/parameters/order_by"
397       - $ref: "../swagger.yaml#/parameters/page"
398       - $ref: "../swagger.yaml#/parameters/per_page"
399       - $ref: "../swagger.yaml#/parameters/q_param"
400       - $ref: "../swagger.yaml#/parameters/q_body"
401       - $ref: "../swagger.yaml#/parameters/q_header"
402     consumes:
403       - application/json
404     produces:
405       - application/json
406     responses:
407       "200":
408         description: A list of the items attached to the record
409         schema:
410           type: array
411           items:
412             $ref: "../swagger.yaml#/definitions/item"
413       "401":
414         description: Authentication required
415         schema:
416           $ref: "../swagger.yaml#/definitions/error"
417       "403":
418         description: Access forbidden
419         schema:
420           $ref: "../swagger.yaml#/definitions/error"
421       "404":
422         description: Biblio not found
423         schema:
424           $ref: "../swagger.yaml#/definitions/error"
425       "406":
426         description: Not acceptable
427         schema:
428           type: array
429           description: Accepted content-types
430           items:
431             type: string
432       "500":
433         description: |
434           Internal server error. Possible `error_code` attribute values:
435
436           * `internal_server_error`
437         schema:
438           $ref: "../swagger.yaml#/definitions/error"
439       "503":
440         description: Under maintenance
441         schema:
442           $ref: "../swagger.yaml#/definitions/error"
443 "/public/biblios/{biblio_id}/ratings":
444   post:
445     x-mojo-to: Biblios#set_rating
446     operationId: setBiblioRating
447     tags:
448       - biblios
449     summary: set biblio rating (public)
450     parameters:
451       - $ref: "../swagger.yaml#/parameters/biblio_id_pp"
452       - name: body
453         in: body
454         description: A JSON object containing rating information
455         schema:
456           type: object
457           properties:
458             rating:
459               description: the rating
460               type:
461                 - integer
462                 - "null"
463           required:
464               - rating
465           additionalProperties: false
466     produces:
467       - application/json
468     responses:
469       "200":
470         description: Rating set
471         schema:
472           type: object
473           properties:
474             rating:
475               description: user's rating
476               type:
477                 - number
478                 - "null"
479             average:
480               description: average rating
481               type: number
482             count:
483               description: number of ratings
484               type: integer
485           additionalProperties: false
486       "401":
487         description: Authentication required
488         schema:
489           $ref: "../swagger.yaml#/definitions/error"
490       "403":
491         description: Access forbidden
492         schema:
493           $ref: "../swagger.yaml#/definitions/error"
494       "404":
495         description: Biblio not found
496         schema:
497           $ref: "../swagger.yaml#/definitions/error"
498       "500":
499         description: |
500           Internal server error. Possible `error_code` attribute values:
501
502           * `internal_server_error`
503         schema:
504           $ref: "../swagger.yaml#/definitions/error"
505       "503":
506         description: Under maintenance
507         schema:
508           $ref: "../swagger.yaml#/definitions/error"