Bug 29593: Fix wrong tag in GET /public/libraries spec
[koha.git] / api / v1 / swagger / paths / patrons.json
1 {
2   "/patrons": {
3     "get": {
4       "x-mojo-to": "Patrons#list",
5       "operationId": "listPatrons",
6       "tags": ["patrons"],
7       "summary": "List patrons",
8       "produces": [
9           "application/json"
10       ],
11       "parameters": [{
12         "name": "patron_id",
13         "in": "query",
14         "description": "Search on patron_id",
15         "required": false,
16         "type": "string"
17       }, {
18         "name": "cardnumber",
19         "in": "query",
20         "description": "Case insensitive search on cardnumber",
21         "required": false,
22         "type": "string"
23       }, {
24         "name": "surname",
25         "in": "query",
26         "description": "Case insensitive search on surname",
27         "required": false,
28         "type": "string"
29       }, {
30         "name": "firstname",
31         "in": "query",
32         "description": "Case insensitive search on firstname",
33         "required": false,
34         "type": "string"
35       }, {
36         "name": "title",
37         "in": "query",
38         "description": "Case insensitive search on title",
39         "required": false,
40         "type": "string"
41       }, {
42         "name": "other_name",
43         "in": "query",
44         "description": "Case insensitive search on othernames",
45         "required": false,
46         "type": "string"
47       }, {
48         "name": "initials",
49         "in": "query",
50         "description": "Case insensitive search on initials",
51         "required": false,
52         "type": "string"
53       }, {
54         "name": "street_number",
55         "in": "query",
56         "description": "Case insensitive search on streetnumber",
57         "required": false,
58         "type": "string"
59       }, {
60         "name": "street_type",
61         "in": "query",
62         "description": "Case insensitive search on streettype",
63         "required": false,
64         "type": "string"
65       }, {
66         "name": "address",
67         "in": "query",
68         "description": "Case insensitive search on address",
69         "required": false,
70         "type": "string"
71       }, {
72         "name": "address2",
73         "in": "query",
74         "description": "Case insensitive search on address2",
75         "required": false,
76         "type": "string"
77       }, {
78         "name": "city",
79         "in": "query",
80         "description": "Case insensitive search on city",
81         "required": false,
82         "type": "string"
83       }, {
84         "name": "state",
85         "in": "query",
86         "description": "Case insensitive search on state",
87         "required": false,
88         "type": "string"
89       }, {
90         "name": "postal_code",
91         "in": "query",
92         "description": "Case insensitive search on zipcode",
93         "required": false,
94         "type": "string"
95       }, {
96         "name": "country",
97         "in": "query",
98         "description": "Case insensitive search on country",
99         "required": false,
100         "type": "string"
101       }, {
102         "name": "email",
103         "in": "query",
104         "description": "Case insensitive search on email",
105         "required": false,
106         "type": "string"
107       }, {
108         "name": "phone",
109         "in": "query",
110         "description": "Case insensitive search on phone",
111         "required": false,
112         "type": "string"
113       }, {
114         "name": "mobile",
115         "in": "query",
116         "description": "Case insensitive search on mobile",
117         "required": false,
118         "type": "string"
119       }, {
120         "name": "fax",
121         "in": "query",
122         "description": "Case insensitive search on fax",
123         "required": false,
124         "type": "string"
125       }, {
126         "name": "secondary_email",
127         "in": "query",
128         "description": "Case insensitive search on secondary_email",
129         "required": false,
130         "type": "string"
131       }, {
132         "name": "secondary_phone",
133         "in": "query",
134         "description": "Case insensitive search on secondary_phone",
135         "required": false,
136         "type": "string"
137       }, {
138         "name": "altaddress_street_number",
139         "in": "query",
140         "description": "Case insensitive search on altaddress_street_number",
141         "required": false,
142         "type": "string"
143       }, {
144         "name": "altaddress_street_type",
145         "in": "query",
146         "description": "Case insensitive search on altaddress_street_type",
147         "required": false,
148         "type": "string"
149       }, {
150         "name": "altaddress_address",
151         "in": "query",
152         "description": "Case insensitive search on altaddress_address",
153         "required": false,
154         "type": "string"
155       }, {
156         "name": "altaddress_address2",
157         "in": "query",
158         "description": "Case insensitive search on altaddress_address2",
159         "required": false,
160         "type": "string"
161       }, {
162         "name": "altaddress_city",
163         "in": "query",
164         "description": "Case insensitive search on altaddress_city",
165         "required": false,
166         "type": "string"
167       }, {
168         "name": "altaddress_state",
169         "in": "query",
170         "description": "Case insensitive search on altaddress_state",
171         "required": false,
172         "type": "string"
173       }, {
174         "name": "altaddress_postal_code",
175         "in": "query",
176         "description": "Case insensitive search on altaddress_postal_code",
177         "required": false,
178         "type": "string"
179       }, {
180         "name": "altaddress_country",
181         "in": "query",
182         "description": "Case insensitive search on altaddress_country",
183         "required": false,
184         "type": "string"
185       }, {
186         "name": "altaddress_email",
187         "in": "query",
188         "description": "Case insensitive search on altaddress_email",
189         "required": false,
190         "type": "string"
191       }, {
192         "name": "altaddress_phone",
193         "in": "query",
194         "description": "Case insensitive search on altaddress_phone",
195         "required": false,
196         "type": "string"
197       }, {
198         "name": "date_of_birth",
199         "in": "query",
200         "description": "Case insensitive search on date_of_birth",
201         "required": false,
202         "type": "string"
203       }, {
204         "name": "library_id",
205         "in": "query",
206         "description": "Case insensitive search on library_id",
207         "required": false,
208         "type": "string"
209       }, {
210         "name": "category_id",
211         "in": "query",
212         "description": "Case insensitive search on category_id",
213         "required": false,
214         "type": "string"
215       }, {
216         "name": "date_enrolled",
217         "in": "query",
218         "description": "Case insensitive search on date_enrolled",
219         "required": false,
220         "type": "string"
221       }, {
222         "name": "expiry_date",
223         "in": "query",
224         "description": "Case insensitive search on expiry_date",
225         "required": false,
226         "type": "string"
227       }, {
228         "name": "incorrect_address",
229         "in": "query",
230         "description": "Search on incorrect_address",
231         "required": false,
232         "type": "boolean"
233       }, {
234         "name": "patron_card_lost",
235         "in": "query",
236         "description": "Search on patron_card_lost",
237         "required": false,
238         "type": "boolean"
239       }, {
240         "name": "restricted",
241         "in": "query",
242         "description": "Filter search by restricted",
243         "required": false,
244         "type": "boolean"
245       }, {
246         "name": "guarantor_id",
247         "in": "query",
248         "description": "Search on guarantor_id",
249         "required": false,
250         "type": "string"
251       }, {
252         "name": "staff_notes",
253         "in": "query",
254         "description": "Case insensitive search on staff_notes",
255         "required": false,
256         "type": "string"
257       }, {
258         "name": "relationship_type",
259         "in": "query",
260         "description": "Case insensitive search on relationship_type",
261         "required": false,
262         "type": "string"
263       }, {
264         "name": "gender",
265         "in": "query",
266         "description": "Case insensitive search on gender",
267         "required": false,
268         "type": "string"
269       }, {
270         "name": "userid",
271         "in": "query",
272         "description": "Case insensitive search on userid",
273         "required": false,
274         "type": "string"
275       }, {
276         "name": "opac_notes",
277         "in": "query",
278         "description": "Case insensitive search on opac_notes",
279         "required": false,
280         "type": "string"
281       }, {
282         "name": "altaddress_notes",
283         "in": "query",
284         "description": "Case insensitive search on altaddress_notes",
285         "required": false,
286         "type": "string"
287       }, {
288         "name": "statistics_1",
289         "in": "query",
290         "description": "Case insensitive search on statistics_1",
291         "required": false,
292         "type": "string"
293       }, {
294         "name": "statistics_2",
295         "in": "query",
296         "description": "Case insensitive search on statistics_2",
297         "required": false,
298         "type": "string"
299       }, {
300         "name": "autorenew_checkouts",
301         "in": "query",
302         "description": "Search on autorenew_checkouts",
303         "required": false,
304         "type": "boolean"
305       }, {
306         "name": "altcontact_firstname",
307         "in": "query",
308         "description": "Case insensitive search on altcontact_firstname",
309         "required": false,
310         "type": "string"
311       }, {
312         "name": "altcontact_surname",
313         "in": "query",
314         "description": "Case insensitive search on altcontact_surname",
315         "required": false,
316         "type": "string"
317       }, {
318         "name": "altcontact_address",
319         "in": "query",
320         "description": "Case insensitive search on altcontact_address",
321         "required": false,
322         "type": "string"
323       }, {
324         "name": "altcontact_address2",
325         "in": "query",
326         "description": "Case insensitive search on altcontact_address2",
327         "required": false,
328         "type": "string"
329       }, {
330         "name": "altcontact_city",
331         "in": "query",
332         "description": "Case insensitive search on altcontact_city",
333         "required": false,
334         "type": "string"
335       }, {
336         "name": "altcontact_state",
337         "in": "query",
338         "description": "Case insensitive search on altcontact_state",
339         "required": false,
340         "type": "string"
341       }, {
342         "name": "altcontact_postal_code",
343         "in": "query",
344         "description": "Case insensitive search on altcontact_postal_code",
345         "required": false,
346         "type": "string"
347       }, {
348         "name": "altcontact_country",
349         "in": "query",
350         "description": "Case insensitive search on altcontact_country",
351         "required": false,
352         "type": "string"
353       }, {
354         "name": "altcontact_phone",
355         "in": "query",
356         "description": "Case insensitive search on altcontact_phone",
357         "required": false,
358         "type": "string"
359       }, {
360         "name": "sms_number",
361         "in": "query",
362         "description": "Case insensitive search on sms_number",
363         "required": false,
364         "type": "string"
365       }, {
366         "name": "sms_provider_id",
367         "in": "query",
368         "description": "Case insensitive search on sms_provider_id",
369         "required": false,
370         "type": "string"
371       }, {
372         "name": "privacy",
373         "in": "query",
374         "description": "Search on privacy",
375         "required": false,
376         "type": "string"
377       }, {
378         "name": "privacy_guarantor_checkouts",
379         "in": "query",
380         "description": "Search on privacy_guarantor_checkouts",
381         "required": false,
382         "type": "string"
383       }, {
384         "name": "check_previous_checkout",
385         "in": "query",
386         "description": "Case insensitive search on check_previous_checkout",
387         "required": false,
388         "type": "string"
389       }, {
390         "name": "updated_on",
391         "in": "query",
392         "description": "Search on updated_on",
393         "required": false,
394         "type": "string"
395       }, {
396         "name": "last_seen",
397         "in": "query",
398         "description": "Case insensitive search on last_seen",
399         "required": false,
400         "type": "string"
401       }, {
402         "name": "lang",
403         "in": "query",
404         "description": "Case insensitive search on lang",
405         "required": false,
406         "type": "string"
407       }, {
408         "name": "login_attempts",
409         "in": "query",
410         "description": "Search on login_attempts",
411         "required": false,
412         "type": "string"
413       }, {
414         "$ref": "../parameters.json#/match"
415       }, {
416         "$ref": "../parameters.json#/order_by"
417       }, {
418         "$ref": "../parameters.json#/page"
419       }, {
420         "$ref": "../parameters.json#/per_page"
421       }, {
422         "$ref": "../parameters.json#/q_param"
423       }, {
424         "$ref": "../parameters.json#/q_body"
425       }, {
426         "$ref": "../parameters.json#/q_header"
427       }],
428       "responses": {
429         "200": {
430           "description": "A list of patrons",
431           "schema": {
432             "type": "array",
433             "items": {
434               "$ref": "../definitions.json#/patron"
435             }
436           }
437         },
438         "401": {
439           "description": "Authentication required",
440           "schema": {
441             "$ref": "../definitions.json#/error"
442           }
443         },
444         "403": {
445           "description": "Access forbidden",
446           "schema": {
447             "$ref": "../definitions.json#/error"
448           }
449         },
450         "500": {
451           "description": "Internal server error",
452           "schema": {
453             "$ref": "../definitions.json#/error"
454           }
455         }
456       },
457       "x-koha-authorization": {
458         "permissions": {
459           "borrowers": "1"
460         }
461       },
462       "x-koha-embed": [
463         "extended_attributes"
464       ]
465     },
466     "post": {
467       "x-mojo-to": "Patrons#add",
468       "operationId": "addPatron",
469       "tags": ["patrons"],
470       "summary": "Add patron",
471       "parameters": [{
472         "name": "body",
473         "in": "body",
474         "description": "A JSON object containing information about the new patron",
475         "required": true,
476         "schema": {
477           "$ref": "../definitions.json#/patron"
478         }
479       }],
480       "consumes": ["application/json"],
481       "produces": ["application/json"],
482       "responses": {
483         "201": {
484           "description": "A successfully created patron",
485           "schema": {
486             "items": {
487               "$ref": "../definitions.json#/patron"
488             }
489           }
490         },
491         "400": {
492           "description": "Bad parameter",
493           "schema": {
494             "$ref": "../definitions.json#/error"
495           }
496         },
497         "401": {
498           "description": "Authentication required",
499           "schema": {
500             "$ref": "../definitions.json#/error"
501           }
502         },
503         "403": {
504           "description": "Access forbidden",
505           "schema": {
506             "$ref": "../definitions.json#/error"
507           }
508         },
509         "404": {
510           "description": "Resource not found",
511           "schema": {
512             "$ref": "../definitions.json#/error"
513           }
514         },
515         "409": {
516           "description": "Conflict in creating resource",
517           "schema": {
518             "$ref": "../definitions.json#/error"
519           }
520         },
521         "500": {
522           "description": "Internal server error",
523           "schema": {
524             "$ref": "../definitions.json#/error"
525           }
526         },
527         "503": {
528           "description": "Under maintenance",
529           "schema": {
530             "$ref": "../definitions.json#/error"
531           }
532         }
533       },
534       "x-koha-authorization": {
535         "permissions": {
536           "borrowers": "edit_borrowers"
537         }
538       }
539     }
540   },
541   "/patrons/{patron_id}": {
542     "get": {
543       "x-mojo-to": "Patrons#get",
544       "operationId": "getPatron",
545       "tags": ["patrons"],
546       "summary": "Get patron",
547       "parameters": [{
548           "$ref": "../parameters.json#/patron_id_pp"
549       }],
550       "produces": [
551         "application/json"
552       ],
553       "responses": {
554         "200": {
555           "description": "A patron",
556           "schema": {
557             "$ref": "../definitions.json#/patron"
558           }
559         },
560         "401": {
561           "description": "Authentication required",
562           "schema": {
563             "$ref": "../definitions.json#/error"
564           }
565         },
566         "403": {
567           "description": "Access forbidden",
568           "schema": {
569             "$ref": "../definitions.json#/error"
570           }
571         },
572         "404": {
573           "description": "Patron not found",
574           "schema": {
575             "$ref": "../definitions.json#/error"
576           }
577         },
578         "500": {
579           "description": "Internal server error",
580           "schema": {
581             "$ref": "../definitions.json#/error"
582           }
583         },
584         "503": {
585           "description": "Under maintenance",
586           "schema": {
587             "$ref": "../definitions.json#/error"
588           }
589         }
590       },
591       "x-koha-authorization": {
592         "permissions": {
593           "borrowers": "edit_borrowers"
594         }
595       },
596       "x-koha-embed": [
597         "extended_attributes"
598       ]
599     },
600     "put": {
601       "x-mojo-to": "Patrons#update",
602       "operationId": "updatePatron",
603       "tags": ["patrons"],
604       "summary": "Update patron",
605       "parameters": [
606         {
607           "$ref": "../parameters.json#/patron_id_pp"
608         },
609         {
610           "name": "body",
611           "in": "body",
612           "description": "A JSON object containing new information about existing patron",
613           "required": true,
614           "schema": {
615             "$ref": "../definitions.json#/patron"
616           }
617         }
618       ],
619       "consumes": ["application/json"],
620       "produces": ["application/json"],
621       "responses": {
622         "200": {
623           "description": "A successfully updated patron",
624           "schema": {
625             "items": {
626               "$ref": "../definitions.json#/patron"
627             }
628           }
629         },
630         "400": {
631           "description": "Bad parameter",
632           "schema": {
633             "$ref": "../definitions.json#/error"
634           }
635         },
636         "403": {
637           "description": "Access forbidden",
638           "schema": {
639             "$ref": "../definitions.json#/error"
640           }
641         },
642         "404": {
643           "description": "Resource not found",
644           "schema": {
645             "$ref": "../definitions.json#/error"
646           }
647         },
648         "409": {
649           "description": "Conflict in updating resource",
650           "schema": {
651             "$ref": "../definitions.json#/error"
652           }
653         },
654         "500": {
655           "description": "Internal server error",
656           "schema": {
657             "$ref": "../definitions.json#/error"
658           }
659         }
660       },
661       "x-koha-authorization": {
662         "permissions": {
663           "borrowers": "1"
664         }
665       }
666     },
667     "delete": {
668       "x-mojo-to": "Patrons#delete",
669       "operationId": "deletePatron",
670       "tags": ["patrons"],
671       "summary": "Delete patron",
672       "parameters": [{
673         "$ref": "../parameters.json#/patron_id_pp"
674       }],
675       "produces": ["application/json"],
676       "responses": {
677         "204": {
678           "description": "Patron deleted"
679         },
680         "400": {
681           "description": "Patron deletion failed",
682           "schema": {
683             "$ref": "../definitions.json#/error"
684           }
685         },
686         "401": {
687           "description": "Authentication required",
688           "schema": {
689             "$ref": "../definitions.json#/error"
690           }
691         },
692         "403": {
693           "description": "Access forbidden",
694           "schema": {
695             "$ref": "../definitions.json#/error"
696           }
697         },
698         "404": {
699           "description": "Patron not found",
700           "schema": {
701             "$ref": "../definitions.json#/error"
702           }
703         }
704       },
705       "x-koha-authorization": {
706         "permissions": {
707           "borrowers": "delete_borrowers"
708         }
709       }
710     }
711   }
712 }