Bug 31797: Add DELETE /items/:item_id endpoint
[koha.git] / api / v1 / swagger / paths / items.yaml
1 ---
2 /items:
3   get:
4     x-mojo-to: Items#list
5     operationId: listItems
6     tags:
7       - items
8     summary: List items
9     parameters:
10       - name: external_id
11         in: query
12         description: Search on the item's barcode
13         required: false
14         type: string
15       - $ref: "../swagger.yaml#/parameters/match"
16       - $ref: "../swagger.yaml#/parameters/order_by"
17       - $ref: "../swagger.yaml#/parameters/page"
18       - $ref: "../swagger.yaml#/parameters/per_page"
19       - $ref: "../swagger.yaml#/parameters/q_param"
20       - $ref: "../swagger.yaml#/parameters/q_body"
21       - $ref: "../swagger.yaml#/parameters/q_header"
22       - $ref: "../swagger.yaml#/parameters/request_id_header"
23     consumes:
24       - application/json
25     produces:
26       - application/json
27     responses:
28       "200":
29         description: A list of item
30         schema:
31           type: array
32           items:
33             $ref: "../swagger.yaml#/definitions/item"
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       "500":
43         description: |
44           Internal server error. Possible `error_code` attribute values:
45
46           * `internal_server_error`
47         schema:
48           $ref: "../swagger.yaml#/definitions/error"
49       "503":
50         description: Under maintenance
51         schema:
52           $ref: "../swagger.yaml#/definitions/error"
53     x-koha-authorization:
54       permissions:
55         catalogue: "1"
56 "/items/{item_id}":
57   get:
58     x-mojo-to: Items#get
59     operationId: getItem
60     tags:
61       - items
62     summary: Get item
63     parameters:
64       - $ref: "../swagger.yaml#/parameters/item_id_pp"
65     consumes:
66       - application/json
67     produces:
68       - application/json
69     responses:
70       "200":
71         description: An item
72         schema:
73           $ref: "../swagger.yaml#/definitions/item"
74       "400":
75         description: Missing or wrong parameters
76         schema:
77           $ref: "../swagger.yaml#/definitions/error"
78       "404":
79         description: Item not found
80         schema:
81           $ref: "../swagger.yaml#/definitions/error"
82       "500":
83         description: |
84           Internal server error. Possible `error_code` attribute values:
85
86           * `internal_server_error`
87         schema:
88           $ref: "../swagger.yaml#/definitions/error"
89       "503":
90         description: Under maintenance
91         schema:
92           $ref: "../swagger.yaml#/definitions/error"
93     x-koha-authorization:
94       permissions:
95         catalogue: "1"
96   delete:
97     x-mojo-to: Items#delete
98     operationId: deleteItem
99     tags:
100       - items
101     summary: Delete item
102     parameters:
103       - $ref: "../swagger.yaml#/parameters/item_id_pp"
104     consumes:
105       - application/json
106     produces:
107       - application/json
108     responses:
109       "204":
110         description: Deleted item
111       "400":
112         description: Missing or wrong parameters
113         schema:
114           $ref: "../swagger.yaml#/definitions/error"
115       "403":
116         description: Access forbidden
117         schema:
118           $ref: "../swagger.yaml#/definitions/error"
119       "404":
120         description: Item not found
121         schema:
122           $ref: "../swagger.yaml#/definitions/error"
123       "409":
124         description: |
125           Conflict. Possible `error_code` attribute values:
126
127             * book_on_loan: The item is checked out
128             * book_reserved: Waiting or in-transit hold for the item
129             * last_item_for_hold: The item is the last one on a record on which a biblio-level hold is placed
130             * linked_analytics: The item has linked analytic records
131             * not_same_branch: The item is blocked by independent branches
132         schema:
133               $ref: "../swagger.yaml#/definitions/error"
134       "500":
135         description: |
136           Internal server error. Possible `error_code` attribute values:
137
138           * `internal_server_error`
139         schema:
140           $ref: "../swagger.yaml#/definitions/error"
141       "503":
142         description: Under maintenance
143         schema:
144           $ref: "../swagger.yaml#/definitions/error"
145     x-koha-authorization:
146       permissions:
147         editcatalogue: edit_catalogue
148 "/items/{item_id}/bundled_items":
149   post:
150     x-mojo-to: Items#add_to_bundle
151     operationId: addToBundle
152     tags:
153       - items
154     summary: Add item to bundle
155     parameters:
156       - $ref: "../swagger.yaml#/parameters/item_id_pp"
157       - name: body
158         in: body
159         description: A JSON object containing information about the new bundle link
160         required: true
161         schema:
162           $ref: "../swagger.yaml#/definitions/bundle_link"
163     consumes:
164       - application/json
165     produces:
166       - application/json
167     responses:
168       "201":
169         description: A successfully created bundle link
170         schema:
171           items:
172             $ref: "../swagger.yaml#/definitions/item"
173       "400":
174         description: Bad parameter
175         schema:
176           $ref: "../swagger.yaml#/definitions/error"
177       "401":
178         description: Authentication required
179         schema:
180           $ref: "../swagger.yaml#/definitions/error"
181       "403":
182         description: Access forbidden
183         schema:
184           $ref: "../swagger.yaml#/definitions/error"
185       "404":
186         description: Resource not found
187         schema:
188           $ref: "../swagger.yaml#/definitions/error"
189       "409":
190         description: Conflict in creating resource
191         schema:
192           $ref: "../swagger.yaml#/definitions/error"
193       "500":
194         description: Internal server error
195         schema:
196           $ref: "../swagger.yaml#/definitions/error"
197       "503":
198         description: Under maintenance
199         schema:
200           $ref: "../swagger.yaml#/definitions/error"
201     x-koha-authorization:
202       permissions:
203         catalogue: 1
204   get:
205     x-mojo-to: Items#bundled_items
206     operationId: bundledItems
207     tags:
208       - items
209     summary: List bundled items
210     parameters:
211       - $ref: "../swagger.yaml#/parameters/item_id_pp"
212       - name: external_id
213         in: query
214         description: Search on the item's barcode
215         required: false
216         type: string
217       - $ref: "../swagger.yaml#/parameters/match"
218       - $ref: "../swagger.yaml#/parameters/order_by"
219       - $ref: "../swagger.yaml#/parameters/page"
220       - $ref: "../swagger.yaml#/parameters/per_page"
221       - $ref: "../swagger.yaml#/parameters/q_param"
222       - $ref: "../swagger.yaml#/parameters/q_body"
223       - $ref: "../swagger.yaml#/parameters/q_header"
224     consumes:
225       - application/json
226     produces:
227       - application/json
228     responses:
229       "200":
230         description: A list of item
231         schema:
232           type: array
233           items:
234             $ref: "../swagger.yaml#/definitions/item"
235       "401":
236         description: Authentication required
237         schema:
238           $ref: "../swagger.yaml#/definitions/error"
239       "403":
240         description: Access forbidden
241         schema:
242           $ref: "../swagger.yaml#/definitions/error"
243       "500":
244         description: Internal server error
245         schema:
246           $ref: "../swagger.yaml#/definitions/error"
247       "503":
248         description: Under maintenance
249         schema:
250           $ref: "../swagger.yaml#/definitions/error"
251     x-koha-authorization:
252       permissions:
253         catalogue: "1"
254     x-koha-embed:
255       - biblio
256       - checkout
257       - return_claims
258       - return_claim
259       - return_claim.patron
260 "/items/{item_id}/bundled_items/{bundled_item_id}":
261   delete:
262     x-mojo-to: Items#remove_from_bundle
263     operationId: removeFromBundle
264     tags:
265       - items
266     summary: Remove item from bundle
267     parameters:
268       - $ref: "../swagger.yaml#/parameters/item_id_pp"
269       - name: bundled_item_id
270         in: path
271         description: Internal identifier for the bundled item
272         required: true
273         type: string
274     consumes:
275       - application/json
276     produces:
277       - application/json
278     responses:
279       "204":
280         description: Bundle link deleted
281       "400":
282         description: Bad parameter
283         schema:
284           $ref: "../swagger.yaml#/definitions/error"
285       "401":
286         description: Authentication required
287         schema:
288           $ref: "../swagger.yaml#/definitions/error"
289       "403":
290         description: Access forbidden
291         schema:
292           $ref: "../swagger.yaml#/definitions/error"
293       "404":
294         description: Resource not found
295         schema:
296           $ref: "../swagger.yaml#/definitions/error"
297       "500":
298         description: Internal server error
299         schema:
300           $ref: "../swagger.yaml#/definitions/error"
301       "503":
302         description: Under maintenance
303         schema:
304           $ref: "../swagger.yaml#/definitions/error"
305     x-koha-authorization:
306       permissions:
307         catalogue: 1
308 "/items/{item_id}/pickup_locations":
309   get:
310     x-mojo-to: Items#pickup_locations
311     operationId: getItemPickupLocations
312     summary: Get valid pickup locations for an item
313     tags:
314       - items
315     parameters:
316       - $ref: "../swagger.yaml#/parameters/item_id_pp"
317       - name: patron_id
318         in: query
319         description: Internal patron identifier
320         required: true
321         type: integer
322       - $ref: "../swagger.yaml#/parameters/match"
323       - $ref: "../swagger.yaml#/parameters/order_by"
324       - $ref: "../swagger.yaml#/parameters/page"
325       - $ref: "../swagger.yaml#/parameters/per_page"
326       - $ref: "../swagger.yaml#/parameters/q_param"
327       - $ref: "../swagger.yaml#/parameters/q_body"
328       - $ref: "../swagger.yaml#/parameters/q_header"
329       - $ref: "../swagger.yaml#/parameters/request_id_header"
330     consumes:
331       - application/json
332     produces:
333       - application/json
334     responses:
335       "200":
336         description: Item pickup locations
337         schema:
338           type: array
339           items:
340             $ref: "../swagger.yaml#/definitions/library"
341       "400":
342         description: Missing or wrong parameters
343         schema:
344           $ref: "../swagger.yaml#/definitions/error"
345       "401":
346         description: Authentication required
347         schema:
348           $ref: "../swagger.yaml#/definitions/error"
349       "403":
350         description: Access forbidden
351         schema:
352           $ref: "../swagger.yaml#/definitions/error"
353       "404":
354         description: Biblio not found
355         schema:
356           $ref: "../swagger.yaml#/definitions/error"
357       "500":
358         description: |
359           Internal server error. Possible `error_code` attribute values:
360
361           * `internal_server_error`
362         schema:
363           $ref: "../swagger.yaml#/definitions/error"
364       "503":
365         description: Under maintenance
366         schema:
367           $ref: "../swagger.yaml#/definitions/error"
368     x-koha-authorization:
369       permissions:
370         reserveforothers: place_holds