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