Skip to content

Instantly share code, notes, and snippets.

@danielmbarlow
Last active December 9, 2016 14:31
Show Gist options
  • Save danielmbarlow/ecbecefe7a99435f23c3d1c39dcfdfb7 to your computer and use it in GitHub Desktop.
Save danielmbarlow/ecbecefe7a99435f23c3d1c39dcfdfb7 to your computer and use it in GitHub Desktop.
Sample swagger file
{"swagger":"2.0","info":{"version":"1.0.0","title":"Kakama API documentation","description":"Documentation for the API","termsOfService":"","contact":{"name":""},"license":{"name":"GPL 3.0"}},"tags":[{"name":"staff","description":"Application users and staff being rostered"},{"name":"events","description":"Occuring at venues between specific times"},{"name":"roles","description":"Assigned to users to carry out at events"},{"name":"venues","description":"Places where staff are assigned to events"}],"host":"localhost:3000","basePath":"/","consumes":["application/json"],"produces":["application/json"],"paths":{"/events":{"get":{"description":"Fetches all records","tags":["events"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"type","in":"query","required":false,"type":"string","description":"Filter by type. If not specified, returns all approved current and future events","enum":["","past","working","cancelled"]},{"name":"page","in":"query","required":false,"type":"integer","description":"Page number"}],"responses":{"200":{"description":"success","schema":{"type":"array","items":{"$ref":"#/definitions/Event"}}}}}},"/events/{id}":{"get":{"description":"Fetches a record given an id","tags":["events"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Event ID"}],"responses":{"200":{"description":"record found","schema":{"type":"object","$ref":"#/definitions/Event"}}}},"put":{"description":"Updates a record given it's ID and attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Event ID"},{"name":"event","in":"body","description":"Event record to update","required":true,"schema":{"properties":{"event":{"$ref":"#/definitions/Event"}}}}],"tags":["events"],"responses":{"200":{"description":"record updated"}}}},"/events/":{"post":{"description":"Creates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"event","in":"body","description":"Event record to create","required":true,"schema":{"properties":{"event":{"$ref":"#/definitions/Event"}}}}],"tags":["events"],"responses":{"200":{"description":"record created","schema":{"$ref":"#/definitions/Event"}}}}},"/staffs/{id}":{"get":{"description":"Fetches a record given an id","tags":["staff"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Staff ID"}],"responses":{"200":{"description":"record found","schema":{"type":"object","$ref":"#/definitions/Staff"}}}},"put":{"description":"Updates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Staff ID"},{"name":"staff","in":"body","description":"Staff record to update","required":true,"schema":{"properties":{"staff":{"$ref":"#/definitions/StaffInput"}}}}],"tags":["staff"],"responses":{"200":{"description":"record updated"}}},"delete":{"description":"Deletes a record given it's id","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Staff ID"}],"tags":["staff"],"responses":{"200":{"description":"record destroyed"}}}},"/roles":{"get":{"description":"Lists all records","tags":["roles"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"page","in":"query","required":false,"type":"integer","description":"Page number"}],"responses":{"200":{"description":"success","schema":{"type":"array","items":{"$ref":"#/definitions/Role"}}}}},"post":{"description":"Creates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"role","in":"body","description":"Record to create","required":true,"schema":{"properties":{"record":{"$ref":"#/definitions/Role"}}}}],"tags":["roles"],"responses":{"200":{"description":"record created","schema":{"$ref":"#/definitions/Role"}}}}},"/roles/{id}":{"get":{"description":"Fetches a record given an id","tags":["roles"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"}],"responses":{"200":{"description":"record found","schema":{"type":"object","$ref":"#/definitions/Role"}}}},"put":{"description":"Updates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"},{"name":"role","in":"body","description":"Record to update","required":true,"schema":{"properties":{"record":{"$ref":"#/definitions/Role"}}}}],"tags":["roles"],"responses":{"200":{"description":"record updated"}}},"delete":{"description":"Deletes a record given it's id","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"}],"tags":["roles"],"responses":{"200":{"description":"record destroyed"}}}},"/staffs":{"get":{"description":"Fetches all records","tags":["staff"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"search_text","in":"query","required":false,"type":"string","description":"Partial search on full name"},{"name":"page","in":"query","required":false,"type":"integer","description":"Page number"}],"responses":{"200":{"description":"success","schema":{"type":"array","items":{"$ref":"#/definitions/Staff"}}}}}},"/staffs/":{"post":{"description":"Creates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"staff","in":"body","description":"Staff record to create","required":true,"schema":{"properties":{"staff":{"$ref":"#/definitions/StaffInput"}}}}],"tags":["staff"],"responses":{"200":{"description":"record created","schema":{"$ref":"#/definitions/Staff"}}}}},"/venues":{"get":{"description":"Lists all records","tags":["venues"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"page","in":"query","required":false,"type":"integer","description":"Page number"}],"responses":{"200":{"description":"success","schema":{"type":"array","items":{"$ref":"#/definitions/Venue"}}}}},"post":{"description":"Creates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"venue","in":"body","description":"Record to create","required":true,"schema":{"properties":{"record":{"$ref":"#/definitions/Venue"}}}}],"tags":["venues"],"responses":{"200":{"description":"record created","schema":{"$ref":"#/definitions/Venue"}}}}},"/venues/{id}":{"get":{"description":"Fetches a record given an id","tags":["venues"],"parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"}],"responses":{"200":{"description":"record found","schema":{"type":"object","$ref":"#/definitions/Venue"}}}},"put":{"description":"Updates a record given it's attributes","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"},{"name":"venue","in":"body","description":"Record to update","required":true,"schema":{"properties":{"record":{"$ref":"#/definitions/Venue"}}}}],"tags":["venues"],"responses":{"200":{"description":"record updated"}}},"delete":{"description":"Deletes a record given it's id","parameters":[{"name":"api_key","in":"query","required":true,"type":"string","description":"Authentication token"},{"name":"id","in":"path","required":true,"type":"string","description":"Record ID"}],"tags":["venues"],"responses":{"200":{"description":"record destroyed"}}}}},"definitions":{"Event":{"required":["venue_id","name","start_datetime","end_datetime","organiser_id"],"properties":{"venue_id":{"type":"string","example":"1"},"recurring":{"type":"boolean","example":"false"},"schedule_id":{"type":"integer","example":"1","format":"int64"},"name":{"type":"string","example":"event name"},"description":{"type":"string","example":"event description"},"start_datetime":{"type":"string","example":"9999-01-30T00:00:00+01:00"},"end_datetime":{"type":"string","example":"9999-01-31T00:00:00+01:00"},"organiser_id":{"type":"integer","example":"1","format":"int64"},"state":{"type":"string","example":"approved","enum":["working,","approved,","cancelled"]},"created_at":{"type":"string","example":"2016-11-22T22:35:33+01:00"},"updated_at":{"type":"string","example":"2016-11-22T22:35:33+01:00"}}},"Role":{"required":["name"],"properties":{"description":{"type":"string","example":"description"},"name":{"type":"string","example":"role name"}}},"Staff":{"required":["username"],"properties":{"username":{"type":"string","example":"username"},"staff_type":{"type":"string","example":"admin"},"full_name":{"type":"string","example":"User Name"},"email":{"type":"string","example":"user@domain.com","format":"email"},"start_date":{"type":"string","example":"2016-11-15"},"admin_notes":{"type":"string","example":"Free text notes field"},"role_ids":{"type":"array","format":"int64","items":{"type":"integer"}}}},"StaffInput":{"allOf":[{"$ref":"#/definitions/Staff"},{"required":["username"],"properties":{"password":{"type":"string","example":"password"},"password_confirmation":{"type":"string","example":"password"}}}]},"Venue":{"required":["name"],"properties":{"description":{"type":"string","example":"description"},"name":{"type":"string","example":"venue name"}}}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment