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