Bug 17432: Remove minification
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Wed, 12 Oct 2016 11:56:44 +0000 (11:56 +0000)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Tue, 11 Oct 2016 06:57:38 +0000 (06:57 +0000)
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 <claire_gravely@hotmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>

Koha/REST/V1.pm
api/v1/swagger/swagger.min.json [deleted file]
misc/devel/minifySwagger.pl [deleted file]

index 591c584..d62ee23 100644 (file)
@@ -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 (file)
index 26760a6..0000000
+++ /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 (file)
index bf8ea41..0000000
+++ /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 = <<USAGE;
-
-minifySwagger.pl
-
-Reads the swagger.json -file and all referenced JSON-Schema -files and merges
-them into one merged and minified version. This minified swagger-file is
-intended to be shared to our API consumers.
-
-By default you must run this script from the same directory as the 'swagger.json'
-and the minified specification is written to 'swagger.min.json'.
-This is a convenience to make the minification process as easy as possible.
-
-!DO NOT! set the executable flag on, or this can be ran from the internetz.
-
-  -h --help             This happy helpful help!
-
-  -v --verbose          0, default, no output.
-                        1, turn on internal Swagger debugging flags
-                        2, more verbose Swagger2 debugging
-
-  -s --source           Which Swagger2-specification file to minify?
-                        Defaults to "swagger.json"
-
-  -d --destination      Where to write the minified Swagger2-spec?
-                        Defaults to "swagger.min.json"
-
-EXAMPLES:
-
-    perl minifySwagger.pl -v 1 -s api/v1/swagger/swagger.json -d swag.json
-    cd api/v1/swagger && perl minifySwagger.pl
-
-USAGE
-
-if ($help) {
-    print $usage;
-    exit 0;
-}
-if ($verbose > 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});
-}