From a8376f99d9c8afea1c68f44e170100c2d703fcb7 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 12 Oct 2016 11:56:44 +0000 Subject: [PATCH] Bug 17432: Remove minification The swagger specification file is currently being minified adding manual steps to release management and restful api route development. The minification is not required; The deferenced version of the specification is now internally validated at runtime and relavant errors output and the dereferenced schema has been made publically available at /api/v1/spec, so it can be copy&pasted into validation tools Test Plan 1) Apply patch 2) Ensure api routes still function (applying the /cities patch might be helpful) 3) Ensure /api/v1/spec page exists (it should be the de-referenced swagger.json file) Signed-off-by: Claire Gravely Signed-off-by: Tomas Cohen Arazi Signed-off-by: Brendan Gallagher --- Koha/REST/V1.pm | 4 +- api/v1/swagger/swagger.min.json | 1 - misc/devel/minifySwagger.pl | 98 --------------------------------- 3 files changed, 3 insertions(+), 100 deletions(-) delete mode 100644 api/v1/swagger/swagger.min.json delete mode 100644 misc/devel/minifySwagger.pl diff --git a/Koha/REST/V1.pm b/Koha/REST/V1.pm index 591c584dd2..d62ee232bd 100644 --- a/Koha/REST/V1.pm +++ b/Koha/REST/V1.pm @@ -52,7 +52,9 @@ sub startup { } $self->plugin(Swagger2 => { - url => $self->home->rel_file("api/v1/swagger/swagger.min.json"), + url => $self->home->rel_file("api/v1/swagger/swagger.json"), + validate => 1, + spec_path => '/spec' }); } diff --git a/api/v1/swagger/swagger.min.json b/api/v1/swagger/swagger.min.json deleted file mode 100644 index 26760a6e6d..0000000000 --- a/api/v1/swagger/swagger.min.json +++ /dev/null @@ -1 +0,0 @@ -{"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"}}} \ No newline at end of file diff --git a/misc/devel/minifySwagger.pl b/misc/devel/minifySwagger.pl deleted file mode 100644 index bf8ea415ba..0000000000 --- a/misc/devel/minifySwagger.pl +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/perl - -# Copyright 2016 KohaSuomi -# -# This file is part of Koha. -# -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 3 of the License, or (at your option) any later -# version. -# -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -use Modern::Perl; - -use Getopt::Long qw(:config no_ignore_case); - -my $help = 0; -my $verbose = 0; -my $swaggerFile = "swagger.json"; -my $swaggerMinifiedFile = "swagger.min.json"; - -GetOptions( - 'h|help' => \$help, - 'v|verbose:i' => \$verbose, - 's|source:s' => \$swaggerFile, - 'd|destination:s' => \$swaggerMinifiedFile, -); - -my $usage = < 0) { - $ENV{SWAGGER2_DEBUG} = $verbose; -} - - -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. -my $swagger = Swagger2->new($swaggerFile); -$swagger = $swagger->expand; #Fetch all JSON-Schema references - -my @errors = $swagger->validate; -print join("\n", "Swagger2: Invalid spec:", @errors)."\n" if @errors; -exit 1 if @errors; - -removeNonSwagger2Values($swagger); - -open(SWOUT, ">:encoding(UTF-8)", $swaggerMinifiedFile) or die "$0: Couldn't open the minified Swagger2 output file '$swaggerMinifiedFile':\n $!"; -print SWOUT $swagger->to_string(); -close(SWOUT); - -##For some reason stringifying the Swagger2-spec adds non-valid parameters, like "/id" -sub removeNonSwagger2Values { - my ($swagger) = @_; - - my $data = $swagger->api_spec->data; - delete($data->{id}); -} -- 2.39.5