View | Details | Raw Unified | Return to bug 17432
Collapse All | Expand All

(-)a/Koha/REST/V1.pm (-1 / +3 lines)
Lines 52-58 sub startup { Link Here
52
    }
52
    }
53
53
54
    $self->plugin(Swagger2 => {
54
    $self->plugin(Swagger2 => {
55
        url => $self->home->rel_file("api/v1/swagger/swagger.min.json"),
55
        url => $self->home->rel_file("api/v1/swagger/swagger.json"),
56
        validate => 1,
57
        spec_path => '/spec'
56
    });
58
    });
57
}
59
}
58
60
(-)a/api/v1/swagger/swagger.min.json (-1 lines)
Line 1 Link Here
1
{"swagger":"2.0","paths":{"\/patrons":{"get":{"x-koha-authorization":{"permissions":{"borrowers":"1"}},"produces":["application\/json"],"tags":["patrons"],"responses":{"403":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}},"description":"Access forbidden"},"200":{"description":"A list of patrons","schema":{"type":"array","items":{"type":"object","properties":{"debarredcomment":{"type":["string","null"],"description":"comment on the stop of the patron"},"altcontactphone":{"type":["string","null"],"description":"the phone number for the alternate contact for the patron"},"contacttitle":{"type":["string","null"],"description":"used for children to include title of guarantor"},"updated_on":{"type":"string","description":"time of last change could be useful for synchronization with external systems (among others)"},"emailpro":{"type":["string","null"],"description":"secondary email address for patron's primary address"},"categorycode":{"description":"code of patron's category","type":"string"},"altcontactsurname":{"description":"surname or last name of the alternate contact for the patron","type":["string","null"]},"debarred":{"description":"until this date the patron can only check-in","type":["string","null"]},"smsalertnumber":{"type":["string","null"],"description":"the mobile phone number where the patron would like to receive notices (if SMS turned on)"},"guarantorid":{"description":"borrowernumber used for children or professionals to link them to guarantor or organizations","type":["string","null"]},"altcontactfirstname":{"type":["string","null"],"description":"first name of alternate contact for the patron"},"B_address":{"type":["string","null"],"description":"first address line of patron's alternate address"},"city":{"description":"city or town of patron's primary address","type":"string"},"flags":{"description":"a number associated with the patron's permissions","type":["string","null"]},"userid":{"type":["string","null"],"description":"patron's login"},"opacnote":{"type":["string","null"],"description":"a note on the patron's account visible in OPAC and staff client"},"altcontactcountry":{"description":"the country for the alternate contact for the patron","type":["string","null"]},"dateofbirth":{"description":"patron's date of birth","type":["string","null"]},"altcontactaddress2":{"type":["string","null"],"description":"the second address line for the alternate contact for the patron"},"B_address2":{"type":["string","null"],"description":"second address line of patron's alternate address"},"borrowernotes":{"description":"a note on the patron's account","type":["string","null"]},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"sort1":{"description":"a field that can be used for any information unique to the library","type":["string","null"]},"sms_provider_id":{"type":["string","null"],"description":"the provider of the mobile phone number defined in smsalertnumber"},"address2":{"description":"second address line of patron's primary address","type":["string","null"]},"B_phone":{"description":"phone number for patron's alternate address","type":["string","null"]},"address":{"type":"string","description":"first address line of patron's primary address"},"mobile":{"description":"the other phone number for patron's primary address","type":["string","null"]},"gonenoaddress":{"description":"set to 1 if library marked this patron as having an unconfirmed address","type":["string","null"]},"cardnumber":{"type":["string","null"],"description":"library assigned user identifier"},"contactname":{"description":"used for children and professionals to include surname or last name of guarantor or organization name","type":["string","null"]},"altcontactaddress1":{"type":["string","null"],"description":"the first address line for the alternate contact for the patron"},"lost":{"type":["string","null"],"description":"set to 1 if library marked this patron as having lost his card"},"fax":{"description":"fax number for patron's primary address","type":["string","null"]},"sex":{"description":"patron's gender","type":["string","null"]},"othernames":{"description":"any other names associated with the patron","type":["string","null"]},"borrowernumber":{"type":"string","description":"internally assigned user identifier"},"dateexpiry":{"type":["string","null"],"description":"date the patron's card is set to expire"},"checkprevcheckout":{"type":"string","description":"produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'"},"altcontactaddress3":{"type":["string","null"],"description":"the city for the alternate contact for the patron"},"phone":{"description":"primary phone number for patron's primary address","type":["string","null"]},"contactfirstname":{"description":"used for children to include first name of guarantor","type":["string","null"]},"firstname":{"description":"patron's first name","type":["string","null"]},"dateenrolled":{"description":"date the patron was added to Koha","type":["string","null"]},"B_streettype":{"type":["string","null"],"description":"street type of patron's alternate address"},"contactnote":{"type":["string","null"],"description":"a note related to patron's alternate address"},"altcontactstate":{"type":["string","null"],"description":"the state for the alternate contact for the patron"},"streetnumber":{"type":["string","null"],"description":"street number of patron's primary address"},"relationship":{"description":"used for children to include the relationship to their guarantor","type":["string","null"]},"B_state":{"description":"state or province of patron's alternate address","type":["string","null"]},"sort2":{"type":["string","null"],"description":"a field that can be used for any information unique to the library"},"B_streetnumber":{"type":["string","null"],"description":"street number of patron's alternate address"},"country":{"type":["string","null"],"description":"country of patron's primary address"},"zipcode":{"type":["string","null"],"description":"zip or postal code of patron's primary address"},"surname":{"type":"string","description":"patron's last name"},"state":{"type":["string","null"],"description":"state or province of patron's primary address"},"B_email":{"description":"email address for patron's alternate address","type":["string","null"]},"title":{"type":["string","null"],"description":"patron's title"},"phonepro":{"description":"secondary phone number for patron's primary address","type":["string","null"]},"altcontactzipcode":{"type":["string","null"],"description":"the zipcode for the alternate contact for the patron"},"B_zipcode":{"description":"zip or postal code of patron's alternate address","type":["string","null"]},"privacy_guarantor_checkouts":{"description":"controls if relatives can see this patron's checkouts","type":"string"},"initials":{"type":["string","null"],"description":"initials of the patron"},"password":{"description":"patron's encrypted password","type":["string","null"]},"B_city":{"type":["string","null"],"description":"city or town of patron's alternate address"},"B_country":{"description":"country of patron's alternate address","type":["string","null"]},"streettype":{"type":["string","null"],"description":"street type of patron's primary address"},"email":{"description":"primary email address for patron's primary address","type":["string","null"]},"privacy":{"type":"string","description":"patron's privacy settings related to their reading history"}}}}}},"operationId":"listPatrons"}},"\/holds\/{reserve_id}":{"put":{"x-koha-authorization":{"allow-guarantor":true,"allow-owner":true,"permissions":{"reserveforothers":"1"}},"produces":["application\/json"],"responses":{"400":{"description":"Missing or wrong parameters","schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}}},"200":{"description":"Updated hold","schema":{"type":"object","properties":{"expirationdate":{"description":"the date the hold expires"},"itemnumber":{"type":["string","null"],"description":"internally assigned item identifier"},"reservedate":{"description":"the date the hold was placed"},"borrowernumber":{"description":"internally assigned user identifier","type":"string"},"biblionumber":{"description":"internally assigned biblio identifier","type":"string"},"suspend":{"description":""},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"notificationdate":{"description":"currently unused"},"reserve_id":{"description":"Internal hold identifier"},"itemtype":{"description":"If record level hold, the optional itemtype of the item the patron is requesting","type":["string","null"]},"found":{"description":"a one letter code defining what the status of the hold is after it has been confirmed"},"suspend_until":{"description":""},"reminderdate":{"description":"currently unused"},"priority":{"description":"where in the queue the patron sits"},"waitingdate":{"description":"the date the item was marked as waiting for the patron at the library"},"cancellationdate":{"description":"the date the hold was cancelled"},"timestamp":{"description":"date and time the hold was last updated"},"lowestPriority":{"description":""},"reservenotes":{"description":"notes related to this hold"}}}},"404":{"schema":{"properties":{"error":{"description":"Error message","type":"string"}},"type":"object"},"description":"Hold not found"}},"tags":["holds"],"parameters":[{"required":true,"type":"integer","description":"Internal hold identifier","name":"reserve_id","in":"path"},{"schema":{"properties":{"suspend_until":{"type":"string","description":"Suspend until","format":"date"},"priority":{"minimum":1,"type":"integer","description":"Position in waiting queue"},"branchcode":{"description":"Pickup location","type":"string"}},"type":"object"},"required":true,"description":"A JSON object containing fields to modify","name":"body","in":"body"}],"operationId":"editHold","consumes":["application\/json"]},"delete":{"produces":["application\/json"],"x-koha-authorization":{"permissions":{"reserveforothers":"1"}},"responses":{"200":{"description":"Successful deletion","schema":{"type":"object"}},"404":{"schema":{"properties":{"error":{"description":"Error message","type":"string"}},"type":"object"},"description":"Hold not found"}},"tags":["holds"],"operationId":"deleteHold","parameters":[{"in":"path","name":"reserve_id","description":"Internal hold identifier","type":"integer","required":true}]}},"\/patrons\/{borrowernumber}":{"get":{"parameters":[{"in":"path","name":"borrowernumber","required":true,"type":"integer","description":"Internal patron identifier"}],"operationId":"getPatron","responses":{"404":{"description":"Patron not found","schema":{"properties":{"error":{"description":"Error message","type":"string"}},"type":"object"}},"403":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}},"description":"Access forbidden"},"200":{"description":"A patron","schema":{"properties":{"debarredcomment":{"type":["string","null"],"description":"comment on the stop of the patron"},"altcontactphone":{"type":["string","null"],"description":"the phone number for the alternate contact for the patron"},"contacttitle":{"type":["string","null"],"description":"used for children to include title of guarantor"},"updated_on":{"type":"string","description":"time of last change could be useful for synchronization with external systems (among others)"},"emailpro":{"type":["string","null"],"description":"secondary email address for patron's primary address"},"categorycode":{"description":"code of patron's category","type":"string"},"altcontactsurname":{"description":"surname or last name of the alternate contact for the patron","type":["string","null"]},"debarred":{"description":"until this date the patron can only check-in","type":["string","null"]},"smsalertnumber":{"type":["string","null"],"description":"the mobile phone number where the patron would like to receive notices (if SMS turned on)"},"guarantorid":{"description":"borrowernumber used for children or professionals to link them to guarantor or organizations","type":["string","null"]},"altcontactfirstname":{"type":["string","null"],"description":"first name of alternate contact for the patron"},"B_address":{"type":["string","null"],"description":"first address line of patron's alternate address"},"city":{"description":"city or town of patron's primary address","type":"string"},"flags":{"description":"a number associated with the patron's permissions","type":["string","null"]},"userid":{"type":["string","null"],"description":"patron's login"},"opacnote":{"type":["string","null"],"description":"a note on the patron's account visible in OPAC and staff client"},"altcontactcountry":{"description":"the country for the alternate contact for the patron","type":["string","null"]},"dateofbirth":{"description":"patron's date of birth","type":["string","null"]},"altcontactaddress2":{"type":["string","null"],"description":"the second address line for the alternate contact for the patron"},"B_address2":{"type":["string","null"],"description":"second address line of patron's alternate address"},"borrowernotes":{"description":"a note on the patron's account","type":["string","null"]},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"sort1":{"description":"a field that can be used for any information unique to the library","type":["string","null"]},"sms_provider_id":{"type":["string","null"],"description":"the provider of the mobile phone number defined in smsalertnumber"},"address2":{"description":"second address line of patron's primary address","type":["string","null"]},"B_phone":{"description":"phone number for patron's alternate address","type":["string","null"]},"address":{"type":"string","description":"first address line of patron's primary address"},"mobile":{"description":"the other phone number for patron's primary address","type":["string","null"]},"gonenoaddress":{"description":"set to 1 if library marked this patron as having an unconfirmed address","type":["string","null"]},"cardnumber":{"type":["string","null"],"description":"library assigned user identifier"},"contactname":{"description":"used for children and professionals to include surname or last name of guarantor or organization name","type":["string","null"]},"altcontactaddress1":{"type":["string","null"],"description":"the first address line for the alternate contact for the patron"},"lost":{"type":["string","null"],"description":"set to 1 if library marked this patron as having lost his card"},"fax":{"description":"fax number for patron's primary address","type":["string","null"]},"sex":{"description":"patron's gender","type":["string","null"]},"othernames":{"description":"any other names associated with the patron","type":["string","null"]},"borrowernumber":{"type":"string","description":"internally assigned user identifier"},"dateexpiry":{"type":["string","null"],"description":"date the patron's card is set to expire"},"checkprevcheckout":{"type":"string","description":"produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'"},"altcontactaddress3":{"type":["string","null"],"description":"the city for the alternate contact for the patron"},"phone":{"description":"primary phone number for patron's primary address","type":["string","null"]},"contactfirstname":{"description":"used for children to include first name of guarantor","type":["string","null"]},"firstname":{"description":"patron's first name","type":["string","null"]},"dateenrolled":{"description":"date the patron was added to Koha","type":["string","null"]},"B_streettype":{"type":["string","null"],"description":"street type of patron's alternate address"},"contactnote":{"type":["string","null"],"description":"a note related to patron's alternate address"},"altcontactstate":{"type":["string","null"],"description":"the state for the alternate contact for the patron"},"streetnumber":{"type":["string","null"],"description":"street number of patron's primary address"},"relationship":{"description":"used for children to include the relationship to their guarantor","type":["string","null"]},"B_state":{"description":"state or province of patron's alternate address","type":["string","null"]},"sort2":{"type":["string","null"],"description":"a field that can be used for any information unique to the library"},"B_streetnumber":{"type":["string","null"],"description":"street number of patron's alternate address"},"country":{"type":["string","null"],"description":"country of patron's primary address"},"zipcode":{"type":["string","null"],"description":"zip or postal code of patron's primary address"},"surname":{"type":"string","description":"patron's last name"},"state":{"type":["string","null"],"description":"state or province of patron's primary address"},"B_email":{"description":"email address for patron's alternate address","type":["string","null"]},"title":{"type":["string","null"],"description":"patron's title"},"phonepro":{"description":"secondary phone number for patron's primary address","type":["string","null"]},"altcontactzipcode":{"type":["string","null"],"description":"the zipcode for the alternate contact for the patron"},"B_zipcode":{"description":"zip or postal code of patron's alternate address","type":["string","null"]},"privacy_guarantor_checkouts":{"description":"controls if relatives can see this patron's checkouts","type":"string"},"initials":{"type":["string","null"],"description":"initials of the patron"},"password":{"description":"patron's encrypted password","type":["string","null"]},"B_city":{"type":["string","null"],"description":"city or town of patron's alternate address"},"B_country":{"description":"country of patron's alternate address","type":["string","null"]},"streettype":{"type":["string","null"],"description":"street type of patron's primary address"},"email":{"description":"primary email address for patron's primary address","type":["string","null"]},"privacy":{"type":"string","description":"patron's privacy settings related to their reading history"}},"type":"object"}}},"tags":["patrons"],"produces":["application\/json"],"x-koha-authorization":{"allow-guarantor":true,"permissions":{"borrowers":"1"},"allow-owner":true}}},"\/holds":{"get":{"responses":{"200":{"description":"A list of holds","schema":{"items":{"type":"object","properties":{"expirationdate":{"description":"the date the hold expires"},"itemnumber":{"type":["string","null"],"description":"internally assigned item identifier"},"reservedate":{"description":"the date the hold was placed"},"borrowernumber":{"description":"internally assigned user identifier","type":"string"},"biblionumber":{"description":"internally assigned biblio identifier","type":"string"},"suspend":{"description":""},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"notificationdate":{"description":"currently unused"},"reserve_id":{"description":"Internal hold identifier"},"itemtype":{"description":"If record level hold, the optional itemtype of the item the patron is requesting","type":["string","null"]},"found":{"description":"a one letter code defining what the status of the hold is after it has been confirmed"},"suspend_until":{"description":""},"reminderdate":{"description":"currently unused"},"priority":{"description":"where in the queue the patron sits"},"waitingdate":{"description":"the date the item was marked as waiting for the patron at the library"},"cancellationdate":{"description":"the date the hold was cancelled"},"timestamp":{"description":"date and time the hold was last updated"},"lowestPriority":{"description":""},"reservenotes":{"description":"notes related to this hold"}}},"type":"array"}},"404":{"description":"Borrower not found","schema":{"properties":{"error":{"description":"Error message","type":"string"}},"type":"object"}}},"tags":["borrowers","holds"],"produces":["application\/json"],"x-koha-authorization":{"allow-owner":true,"permissions":{"borrowers":"1"},"allow-guarantor":true},"operationId":"listHolds","parameters":[{"in":"query","name":"reserve_id","type":"integer","description":"Internal reserve identifier"},{"name":"borrowernumber","in":"query","description":"Internal borrower identifier","type":"integer"},{"name":"reservedate","in":"query","description":"Reserve date","type":"string"},{"description":"Internal biblio identifier","type":"integer","in":"query","name":"biblionumber"},{"in":"query","name":"branchcode","description":"Branch code","type":"string"},{"name":"notificationdate","in":"query","type":"string","description":"Notification date"},{"description":"Reminder date","type":"string","name":"reminderdate","in":"query"},{"name":"cancellationdate","in":"query","type":"string","description":"Cancellation date"},{"name":"reservenotes","in":"query","description":"Reserve notes","type":"string"},{"type":"integer","description":"Priority","in":"query","name":"priority"},{"description":"Found status","type":"string","in":"query","name":"found"},{"name":"timestamp","in":"query","description":"Time of latest update","type":"string"},{"type":"integer","description":"Internal item identifier","in":"query","name":"itemnumber"},{"type":"string","description":"Date the item was marked as waiting for the patron","name":"waitingdate","in":"query"},{"in":"query","name":"expirationdate","description":"Date the hold expires","type":"string"},{"in":"query","name":"lowestPriority","description":"Lowest priority","type":"integer"},{"type":"integer","description":"Suspended","name":"suspend","in":"query"},{"description":"Suspended until","type":"string","in":"query","name":"suspend_until"}]},"post":{"consumes":["application\/json"],"operationId":"addHold","parameters":[{"description":"A JSON object containing informations about the new hold","required":true,"schema":{"type":"object","properties":{"itemnumber":{"type":"integer","description":"Item internal identifier"},"biblionumber":{"type":"integer","description":"Biblio internal identifier"},"branchcode":{"type":"string","description":"Pickup location"},"expirationdate":{"format":"date","description":"Hold end date","type":"string"},"borrowernumber":{"type":"integer","description":"Borrower internal identifier"}}},"name":"body","in":"body"}],"responses":{"500":{"schema":{"properties":{"error":{"description":"Error message","type":"string"}},"type":"object"},"description":"Internal error"},"400":{"description":"Missing or wrong parameters","schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}}},"201":{"description":"Created hold","schema":{"properties":{"expirationdate":{"description":"the date the hold expires"},"itemnumber":{"type":["string","null"],"description":"internally assigned item identifier"},"reservedate":{"description":"the date the hold was placed"},"borrowernumber":{"description":"internally assigned user identifier","type":"string"},"biblionumber":{"description":"internally assigned biblio identifier","type":"string"},"suspend":{"description":""},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"notificationdate":{"description":"currently unused"},"reserve_id":{"description":"Internal hold identifier"},"itemtype":{"description":"If record level hold, the optional itemtype of the item the patron is requesting","type":["string","null"]},"found":{"description":"a one letter code defining what the status of the hold is after it has been confirmed"},"suspend_until":{"description":""},"reminderdate":{"description":"currently unused"},"priority":{"description":"where in the queue the patron sits"},"waitingdate":{"description":"the date the item was marked as waiting for the patron at the library"},"cancellationdate":{"description":"the date the hold was cancelled"},"timestamp":{"description":"date and time the hold was last updated"},"lowestPriority":{"description":""},"reservenotes":{"description":"notes related to this hold"}},"type":"object"}},"404":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}},"description":"Borrower not found"},"403":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}},"description":"Hold not allowed"}},"tags":["borrowers","holds"],"produces":["application\/json"],"x-koha-authorization":{"permissions":{"reserveforothers":"1"},"allow-owner":true}}}},"parameters":{"borrowernumberPathParam":{"required":true,"type":"integer","description":"Internal patron identifier","name":"borrowernumber","in":"path"},"holdIdPathParam":{"description":"Internal hold identifier","required":true,"type":"integer","name":"reserve_id","in":"path"},"borrowernumberQueryParam":{"type":"integer","description":"Internal borrower identifier","name":"borrowernumber","in":"query"}},"x-mojo-around-action":"Koha::REST::V1::authenticate_api_request","definitions":{"hold":{"type":"object","properties":{"expirationdate":{"description":"the date the hold expires"},"itemnumber":{"type":["string","null"],"description":"internally assigned item identifier"},"reservedate":{"description":"the date the hold was placed"},"borrowernumber":{"description":"internally assigned user identifier","type":"string"},"biblionumber":{"description":"internally assigned biblio identifier","type":"string"},"suspend":{"description":""},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"notificationdate":{"description":"currently unused"},"reserve_id":{"description":"Internal hold identifier"},"itemtype":{"description":"If record level hold, the optional itemtype of the item the patron is requesting","type":["string","null"]},"found":{"description":"a one letter code defining what the status of the hold is after it has been confirmed"},"suspend_until":{"description":""},"reminderdate":{"description":"currently unused"},"priority":{"description":"where in the queue the patron sits"},"waitingdate":{"description":"the date the item was marked as waiting for the patron at the library"},"cancellationdate":{"description":"the date the hold was cancelled"},"timestamp":{"description":"date and time the hold was last updated"},"lowestPriority":{"description":""},"reservenotes":{"description":"notes related to this hold"}}},"holds":{"type":"array","items":{"type":"object","properties":{"expirationdate":{"description":"the date the hold expires"},"itemnumber":{"type":["string","null"],"description":"internally assigned item identifier"},"reservedate":{"description":"the date the hold was placed"},"borrowernumber":{"description":"internally assigned user identifier","type":"string"},"biblionumber":{"description":"internally assigned biblio identifier","type":"string"},"suspend":{"description":""},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"notificationdate":{"description":"currently unused"},"reserve_id":{"description":"Internal hold identifier"},"itemtype":{"description":"If record level hold, the optional itemtype of the item the patron is requesting","type":["string","null"]},"found":{"description":"a one letter code defining what the status of the hold is after it has been confirmed"},"suspend_until":{"description":""},"reminderdate":{"description":"currently unused"},"priority":{"description":"where in the queue the patron sits"},"waitingdate":{"description":"the date the item was marked as waiting for the patron at the library"},"cancellationdate":{"description":"the date the hold was cancelled"},"timestamp":{"description":"date and time the hold was last updated"},"lowestPriority":{"description":""},"reservenotes":{"description":"notes related to this hold"}}}},"patron":{"properties":{"debarredcomment":{"type":["string","null"],"description":"comment on the stop of the patron"},"altcontactphone":{"type":["string","null"],"description":"the phone number for the alternate contact for the patron"},"contacttitle":{"type":["string","null"],"description":"used for children to include title of guarantor"},"updated_on":{"type":"string","description":"time of last change could be useful for synchronization with external systems (among others)"},"emailpro":{"type":["string","null"],"description":"secondary email address for patron's primary address"},"categorycode":{"description":"code of patron's category","type":"string"},"altcontactsurname":{"description":"surname or last name of the alternate contact for the patron","type":["string","null"]},"debarred":{"description":"until this date the patron can only check-in","type":["string","null"]},"smsalertnumber":{"type":["string","null"],"description":"the mobile phone number where the patron would like to receive notices (if SMS turned on)"},"guarantorid":{"description":"borrowernumber used for children or professionals to link them to guarantor or organizations","type":["string","null"]},"altcontactfirstname":{"type":["string","null"],"description":"first name of alternate contact for the patron"},"B_address":{"type":["string","null"],"description":"first address line of patron's alternate address"},"city":{"description":"city or town of patron's primary address","type":"string"},"flags":{"description":"a number associated with the patron's permissions","type":["string","null"]},"userid":{"type":["string","null"],"description":"patron's login"},"opacnote":{"type":["string","null"],"description":"a note on the patron's account visible in OPAC and staff client"},"altcontactcountry":{"description":"the country for the alternate contact for the patron","type":["string","null"]},"dateofbirth":{"description":"patron's date of birth","type":["string","null"]},"altcontactaddress2":{"type":["string","null"],"description":"the second address line for the alternate contact for the patron"},"B_address2":{"type":["string","null"],"description":"second address line of patron's alternate address"},"borrowernotes":{"description":"a note on the patron's account","type":["string","null"]},"branchcode":{"description":"code of patron's home branch","type":["string","null"]},"sort1":{"description":"a field that can be used for any information unique to the library","type":["string","null"]},"sms_provider_id":{"type":["string","null"],"description":"the provider of the mobile phone number defined in smsalertnumber"},"address2":{"description":"second address line of patron's primary address","type":["string","null"]},"B_phone":{"description":"phone number for patron's alternate address","type":["string","null"]},"address":{"type":"string","description":"first address line of patron's primary address"},"mobile":{"description":"the other phone number for patron's primary address","type":["string","null"]},"gonenoaddress":{"description":"set to 1 if library marked this patron as having an unconfirmed address","type":["string","null"]},"cardnumber":{"type":["string","null"],"description":"library assigned user identifier"},"contactname":{"description":"used for children and professionals to include surname or last name of guarantor or organization name","type":["string","null"]},"altcontactaddress1":{"type":["string","null"],"description":"the first address line for the alternate contact for the patron"},"lost":{"type":["string","null"],"description":"set to 1 if library marked this patron as having lost his card"},"fax":{"description":"fax number for patron's primary address","type":["string","null"]},"sex":{"description":"patron's gender","type":["string","null"]},"othernames":{"description":"any other names associated with the patron","type":["string","null"]},"borrowernumber":{"type":"string","description":"internally assigned user identifier"},"dateexpiry":{"type":["string","null"],"description":"date the patron's card is set to expire"},"checkprevcheckout":{"type":"string","description":"produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'"},"altcontactaddress3":{"type":["string","null"],"description":"the city for the alternate contact for the patron"},"phone":{"description":"primary phone number for patron's primary address","type":["string","null"]},"contactfirstname":{"description":"used for children to include first name of guarantor","type":["string","null"]},"firstname":{"description":"patron's first name","type":["string","null"]},"dateenrolled":{"description":"date the patron was added to Koha","type":["string","null"]},"B_streettype":{"type":["string","null"],"description":"street type of patron's alternate address"},"contactnote":{"type":["string","null"],"description":"a note related to patron's alternate address"},"altcontactstate":{"type":["string","null"],"description":"the state for the alternate contact for the patron"},"streetnumber":{"type":["string","null"],"description":"street number of patron's primary address"},"relationship":{"description":"used for children to include the relationship to their guarantor","type":["string","null"]},"B_state":{"description":"state or province of patron's alternate address","type":["string","null"]},"sort2":{"type":["string","null"],"description":"a field that can be used for any information unique to the library"},"B_streetnumber":{"type":["string","null"],"description":"street number of patron's alternate address"},"country":{"type":["string","null"],"description":"country of patron's primary address"},"zipcode":{"type":["string","null"],"description":"zip or postal code of patron's primary address"},"surname":{"type":"string","description":"patron's last name"},"state":{"type":["string","null"],"description":"state or province of patron's primary address"},"B_email":{"description":"email address for patron's alternate address","type":["string","null"]},"title":{"type":["string","null"],"description":"patron's title"},"phonepro":{"description":"secondary phone number for patron's primary address","type":["string","null"]},"altcontactzipcode":{"type":["string","null"],"description":"the zipcode for the alternate contact for the patron"},"B_zipcode":{"description":"zip or postal code of patron's alternate address","type":["string","null"]},"privacy_guarantor_checkouts":{"description":"controls if relatives can see this patron's checkouts","type":"string"},"initials":{"type":["string","null"],"description":"initials of the patron"},"password":{"description":"patron's encrypted password","type":["string","null"]},"B_city":{"type":["string","null"],"description":"city or town of patron's alternate address"},"B_country":{"description":"country of patron's alternate address","type":["string","null"]},"streettype":{"type":["string","null"],"description":"street type of patron's primary address"},"email":{"description":"primary email address for patron's primary address","type":["string","null"]},"privacy":{"type":"string","description":"patron's privacy settings related to their reading history"}},"type":"object"},"error":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}}}},"basePath":"\/api\/v1","info":{"version":"1","title":"Koha REST API","license":{"name":"GPL v3","url":"http:\/\/www.gnu.org\/licenses\/gpl.txt"},"contact":{"url":"http:\/\/koha-community.org\/","name":"Koha Team"}},"x-primitives":{"branchcode":{"type":["string","null"],"description":"code of patron's home branch"},"reserve_id":{"description":"Internal hold identifier"},"phone":{"type":["string","null"],"description":"primary phone number for patron's primary address"},"firstname":{"description":"patron's first name","type":["string","null"]},"itemnumber":{"description":"internally assigned item identifier","type":["string","null"]},"email":{"type":["string","null"],"description":"primary email address for patron's primary address"},"cardnumber":{"type":["string","null"],"description":"library assigned user identifier"},"surname":{"type":"string","description":"patron's last name"},"borrowernumber":{"type":"string","description":"internally assigned user identifier"},"biblionumber":{"type":"string","description":"internally assigned biblio identifier"}}}
(-)a/misc/devel/minifySwagger.pl (-99 lines)
Lines 1-98 Link Here
1
#!/usr/bin/perl
2
3
# Copyright 2016 KohaSuomi
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 3 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use Modern::Perl;
21
22
use Getopt::Long qw(:config no_ignore_case);
23
24
my $help = 0;
25
my $verbose = 0;
26
my $swaggerFile = "swagger.json";
27
my $swaggerMinifiedFile = "swagger.min.json";
28
29
GetOptions(
30
    'h|help'                      => \$help,
31
    'v|verbose:i'                 => \$verbose,
32
    's|source:s'                  => \$swaggerFile,
33
    'd|destination:s'             => \$swaggerMinifiedFile,
34
);
35
36
my $usage = <<USAGE;
37
38
minifySwagger.pl
39
40
Reads the swagger.json -file and all referenced JSON-Schema -files and merges
41
them into one merged and minified version. This minified swagger-file is
42
intended to be shared to our API consumers.
43
44
By default you must run this script from the same directory as the 'swagger.json'
45
and the minified specification is written to 'swagger.min.json'.
46
This is a convenience to make the minification process as easy as possible.
47
48
!DO NOT! set the executable flag on, or this can be ran from the internetz.
49
50
  -h --help             This happy helpful help!
51
52
  -v --verbose          0, default, no output.
53
                        1, turn on internal Swagger debugging flags
54
                        2, more verbose Swagger2 debugging
55
56
  -s --source           Which Swagger2-specification file to minify?
57
                        Defaults to "swagger.json"
58
59
  -d --destination      Where to write the minified Swagger2-spec?
60
                        Defaults to "swagger.min.json"
61
62
EXAMPLES:
63
64
    perl minifySwagger.pl -v 1 -s api/v1/swagger/swagger.json -d swag.json
65
    cd api/v1/swagger && perl minifySwagger.pl
66
67
USAGE
68
69
if ($help) {
70
    print $usage;
71
    exit 0;
72
}
73
if ($verbose > 0) {
74
    $ENV{SWAGGER2_DEBUG} = $verbose;
75
}
76
77
78
require Swagger2; #When you import the Swagger2-libraries, the environment variables are checked and cannot be altered anymore. So set verbosity first, then load libs.
79
my $swagger = Swagger2->new($swaggerFile);
80
$swagger = $swagger->expand; #Fetch all JSON-Schema references
81
82
my @errors = $swagger->validate;
83
print join("\n", "Swagger2: Invalid spec:", @errors)."\n" if @errors;
84
exit 1 if @errors;
85
86
removeNonSwagger2Values($swagger);
87
88
open(SWOUT, ">:encoding(UTF-8)", $swaggerMinifiedFile) or die "$0: Couldn't open the minified Swagger2 output file '$swaggerMinifiedFile':\n  $!";
89
print SWOUT $swagger->to_string();
90
close(SWOUT);
91
92
##For some reason stringifying the Swagger2-spec adds non-valid parameters, like "/id"
93
sub removeNonSwagger2Values {
94
    my ($swagger) = @_;
95
96
    my $data = $swagger->api_spec->data;
97
    delete($data->{id});
98
}
99
- 

Return to bug 17432