Bug 30055: Use /patrons for patron's cards
[srvgit] / 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: "../swagger.yaml#/parameters/match"
348       - $ref: "../swagger.yaml#/parameters/order_by"
349       - $ref: "../swagger.yaml#/parameters/page"
350       - $ref: "../swagger.yaml#/parameters/per_page"
351       - $ref: "../swagger.yaml#/parameters/q_param"
352       - $ref: "../swagger.yaml#/parameters/q_body"
353       - $ref: "../swagger.yaml#/parameters/q_header"
354     responses:
355       "200":
356         description: A list of patrons
357         schema:
358           type: array
359           items:
360             $ref: "../swagger.yaml#/definitions/patron"
361       "401":
362         description: Authentication required
363         schema:
364           $ref: "../swagger.yaml#/definitions/error"
365       "403":
366         description: Access forbidden
367         schema:
368           $ref: "../swagger.yaml#/definitions/error"
369       "500":
370         description: |
371           Internal server error. Possible `error_code` attribute values:
372
373           * `internal_server_error`
374         schema:
375           $ref: "../swagger.yaml#/definitions/error"
376       "503":
377         description: Under maintenance
378         schema:
379           $ref: "../swagger.yaml#/definitions/error"
380     x-koha-authorization:
381       permissions:
382         - borrowers: "1"
383         - tools: "label_creator"
384     x-koha-embed:
385       - extended_attributes
386   post:
387     x-mojo-to: Patrons#add
388     operationId: addPatron
389     tags:
390       - patrons
391     summary: Add patron
392     parameters:
393       - name: body
394         in: body
395         description: A JSON object containing information about the new patron
396         required: true
397         schema:
398           $ref: "../swagger.yaml#/definitions/patron"
399     consumes:
400       - application/json
401     produces:
402       - application/json
403     responses:
404       "201":
405         description: A successfully created patron
406         schema:
407           items:
408             $ref: "../swagger.yaml#/definitions/patron"
409       "400":
410         description: Bad parameter
411         schema:
412           $ref: "../swagger.yaml#/definitions/error"
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: Resource not found
423         schema:
424           $ref: "../swagger.yaml#/definitions/error"
425       "409":
426         description: Conflict in creating resource
427         schema:
428           $ref: "../swagger.yaml#/definitions/error"
429       "500":
430         description: |
431           Internal server error. Possible `error_code` attribute values:
432
433           * `internal_server_error`
434         schema:
435           $ref: "../swagger.yaml#/definitions/error"
436       "503":
437         description: Under maintenance
438         schema:
439           $ref: "../swagger.yaml#/definitions/error"
440     x-koha-authorization:
441       permissions:
442         borrowers: edit_borrowers
443 "/patrons/{patron_id}":
444   get:
445     x-mojo-to: Patrons#get
446     operationId: getPatron
447     tags:
448       - patrons
449     summary: Get patron
450     parameters:
451       - $ref: "../swagger.yaml#/parameters/patron_id_pp"
452     produces:
453       - application/json
454     responses:
455       "200":
456         description: A patron
457         schema:
458           $ref: "../swagger.yaml#/definitions/patron"
459       "401":
460         description: Authentication required
461         schema:
462           $ref: "../swagger.yaml#/definitions/error"
463       "403":
464         description: Access forbidden
465         schema:
466           $ref: "../swagger.yaml#/definitions/error"
467       "404":
468         description: Patron not found
469         schema:
470           $ref: "../swagger.yaml#/definitions/error"
471       "500":
472         description: |
473           Internal server error. Possible `error_code` attribute values:
474
475           * `internal_server_error`
476         schema:
477           $ref: "../swagger.yaml#/definitions/error"
478       "503":
479         description: Under maintenance
480         schema:
481           $ref: "../swagger.yaml#/definitions/error"
482     x-koha-authorization:
483       permissions:
484         borrowers: edit_borrowers
485     x-koha-embed:
486       - extended_attributes
487   put:
488     x-mojo-to: Patrons#update
489     operationId: updatePatron
490     tags:
491       - patrons
492     summary: Update patron
493     parameters:
494       - $ref: "../swagger.yaml#/parameters/patron_id_pp"
495       - name: body
496         in: body
497         description: A JSON object containing new information about existing patron
498         required: true
499         schema:
500           $ref: "../swagger.yaml#/definitions/patron"
501     consumes:
502       - application/json
503     produces:
504       - application/json
505     responses:
506       "200":
507         description: A successfully updated patron
508         schema:
509           items:
510             $ref: "../swagger.yaml#/definitions/patron"
511       "400":
512         description: Bad parameter
513         schema:
514           $ref: "../swagger.yaml#/definitions/error"
515       "403":
516         description: Access forbidden
517         schema:
518           $ref: "../swagger.yaml#/definitions/error"
519       "404":
520         description: Resource not found
521         schema:
522           $ref: "../swagger.yaml#/definitions/error"
523       "409":
524         description: Conflict in updating resource
525         schema:
526           $ref: "../swagger.yaml#/definitions/error"
527       "500":
528         description: |
529           Internal server error. Possible `error_code` attribute values:
530
531           * `internal_server_error`
532         schema:
533           $ref: "../swagger.yaml#/definitions/error"
534       "503":
535         description: Under maintenance
536         schema:
537           $ref: "../swagger.yaml#/definitions/error"
538     x-koha-authorization:
539       permissions:
540         borrowers: "1"
541   delete:
542     x-mojo-to: Patrons#delete
543     operationId: deletePatron
544     tags:
545       - patrons
546     summary: Delete patron
547     parameters:
548       - $ref: "../swagger.yaml#/parameters/patron_id_pp"
549     produces:
550       - application/json
551     responses:
552       "204":
553         description: Patron deleted
554       "400":
555         description: Patron deletion failed
556         schema:
557           $ref: "../swagger.yaml#/definitions/error"
558       "401":
559         description: Authentication required
560         schema:
561           $ref: "../swagger.yaml#/definitions/error"
562       "403":
563         description: Access forbidden
564         schema:
565           $ref: "../swagger.yaml#/definitions/error"
566       "404":
567         description: Patron not found
568         schema:
569           $ref: "../swagger.yaml#/definitions/error"
570       "409":
571         description: |
572           Conflict. Possible `error_code` attribute values:
573
574             * `has_checkouts`: The patron has pending checkouts
575             * `has_debt`: The patron has pending debts
576             * `has_guarantees`: The patron has guarantees
577             * `is_anonymous_patron`: The system-wide anonymous patron cannot be deleted
578         schema:
579           $ref: "../swagger.yaml#/definitions/error"
580       "500":
581         description: |
582           Internal server error. Possible `error_code` attribute values:
583
584           * `internal_server_error`
585         schema:
586           $ref: "../swagger.yaml#/definitions/error"
587       "503":
588         description: Under maintenance
589         schema:
590           $ref: "../swagger.yaml#/definitions/error"
591     x-koha-authorization:
592       permissions:
593         borrowers: delete_borrowers