server/swaggerDoc.json
{
"swagger": "2.0",
"info": {
"version": "1.0.0",
"title": "EventsManager API",
"description": "API for adding, retrieving and removing centers and events"
},
"contact": {
"email": "nzediegwu1@gmail.com"
},
"basePath": "/api/v1",
"schemes": ["https", "http"],
"securityDefinitions": {
"UserToken": {
"type": "apiKey",
"in": "header",
"name": "x-token"
}
},
"paths": {
"/users/login": {
"post": {
"tags": ["Users"],
"summary": "Login a user",
"description": "Logs in a registered user.",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"in": "formData",
"name": "username",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "password",
"type": "string",
"format": "password",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Invalid login details"
},
"404": {
"description": "User does not Exists"
},
"500": {
"description": "Server Error"
}
}
}
},
"/users": {
"post": {
"tags": ["Users"],
"summary": "Register a user",
"description": "Registers a new user.",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"in": "formData",
"name": "name",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "username",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "email",
"type": "string",
"format": "email",
"required": true
},
{
"in": "formData",
"name": "password",
"type": "string",
"format": "password",
"required": true
},
{
"in": "formData",
"name": "confirmPassword",
"type": "string",
"format": "password",
"required": true
},
{
"in": "formData",
"name": "phoneNo",
"type": "string",
"required": true,
"description": "Phone number: format: +(code)NUMBER"
}
],
"responses": {
"201": {
"description": "New user created"
},
"400": {
"description": "Bad request"
},
"409": {
"description": "User already exists"
},
"500": {
"description": "Server Error"
}
}
},
"get": {
"tags": ["Users"],
"summary": "Gets all users",
"description": "Allow superAdmin to get all users in database",
"security": [
{
"UserToken": []
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "No resource available"
},
"401": {
"description": "Unauthorized request"
},
"500": {
"description": "Server Error"
}
}
},
"put": {
"tags": ["Users"],
"summary": "Update user profile",
"description": "Modifies user details and saves it to the database.",
"parameters": [
{
"in": "formData",
"name": "name",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "username",
"type": "string",
"required": true
},
{
"in": "formData",
"name": "email",
"type": "string",
"format": "email",
"required": true
},
{
"in": "formData",
"name": "password",
"type": "string",
"format": "password",
"required": true
},
{
"in": "formData",
"name": "confirmPassword",
"type": "string",
"format": "password",
"required": true
},
{
"in": "formData",
"name": "phoneNo",
"type": "string",
"required": true,
"description": "Phone number: format: +(code)NUMBER"
},
{
"in": "formData",
"name": "company",
"type": "string",
"required": false,
"description": "Place of work"
},
{
"in": "formData",
"name": "website",
"type": "string",
"required": false,
"description": "Personal website: format: url"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"202": {
"description": "Successfully updated"
},
"400": {
"description": "Bad Request"
},
"404": {
"description": "Unexisting user"
},
"409": {
"description": "New phone, email or username already exists"
},
"403": {
"description": "Forbidden Request"
},
"401": {
"description": "Unauthorized Request"
},
"500": {
"description": "Server Error"
}
}
}
},
"/users/{id}": {
"get": {
"tags": ["Users"],
"summary": "gets a user's profile",
"description": "gets a single user from the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The user to retrieve by ID."
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "User does not exist"
},
"500": {
"description": "Server Error"
}
}
}
},
"/users/{id}/upgrade": {
"put": {
"tags": ["Users"],
"summary": "Upgrade a user's account",
"description":
"Allow a superAdmin to toggle an existing user's account-type between 'regular' and 'admin",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The user to upgrade by ID."
},
{
"name": "accountType",
"in": "query",
"description": "admin or regular",
"required": true,
"type": "string"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"202": {
"description": "Successfully Upgraded"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized transaction"
},
"404": {
"description": "User does not exist"
},
"403": {
"description": "Forbidden request (Unexisting or un authorized)"
},
"500": {
"description": "Server Error"
}
}
}
},
"/users/changePic": {
"put": {
"tags": ["Users"],
"summary": "Upload profile picture",
"description": "Allows a user upload new profile picture",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"in": "formData",
"name": "picture",
"type": "string",
"required": true,
"description": "New profile image. Format: url"
},
{
"in": "formData",
"name": "publicId",
"type": "string",
"required": true,
"description": "profile Image publicId (cloudinary)"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"202": {
"description": "Successfully uploaded"
},
"401": {
"description": "Unauthorized request"
},
"403": {
"description": "Forbidden request"
},
"404": {
"description": "User does not Exists"
},
"500": {
"description": "Server Error"
}
}
}
},
"/users/password": {
"post": {
"tags": ["Users"],
"summary": "Recover user password",
"description": "Resets user password and sends to registered email",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"in": "formData",
"name": "email",
"type": "email",
"required": true
}
],
"responses": {
"202": {
"description": "Successfully reset"
},
"400": {
"description": "Bad request"
},
"404": {
"description": "User does not Exists"
},
"500": {
"description": "Server Error"
}
}
}
},
"/centers": {
"get": {
"tags": ["Centers"],
"summary": "Gets all center",
"description": "gets all center in the database.",
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "No resource available"
},
"500": {
"description": "Server Error"
}
}
},
"post": {
"tags": ["Centers"],
"summary": "Creates a center",
"description": "Creates a new center and stores to the database.",
"parameters": [
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "Center name"
},
{
"in": "formData",
"name": "address",
"type": "string",
"required": true,
"description": "local address"
},
{
"in": "formData",
"name": "location",
"type": "string",
"required": true,
"description": "State/City"
},
{
"in": "formData",
"name": "capacity",
"type": "number",
"required": true,
"description": "Center capacity"
},
{
"in": "formData",
"name": "price",
"type": "number",
"required": true,
"description": "Booking price"
},
{
"in": "formData",
"name": "availability",
"type": "string",
"required": true,
"description": "open or close"
},
{
"in": "formData",
"name": "picture",
"type": "string",
"required": true,
"description": "center Image. Format: url"
},
{
"in": "formData",
"name": "publicId",
"type": "string",
"required": true,
"description": "center Image publicId (cloudinary)"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"201": {
"description": "Center created"
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden request"
},
"401": {
"description": "Unauthorized request"
},
"500": {
"description": "Server Error"
}
}
}
},
"/centers/{id}": {
"get": {
"tags": ["Centers"],
"summary": "gets a single center",
"description": "gets a center from the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The center to retrieve by ID."
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Center does not exist"
},
"500": {
"description": "Server Error"
}
}
},
"put": {
"tags": ["Centers"],
"summary": "Modifies a center",
"description": "modifies a center and saves it to the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The center to update."
},
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "Center name"
},
{
"in": "formData",
"name": "address",
"type": "string",
"required": true,
"description": "local address"
},
{
"in": "formData",
"name": "location",
"type": "string",
"required": true,
"description": "State/City"
},
{
"in": "formData",
"name": "capacity",
"type": "number",
"required": true,
"description": "Center capacity"
},
{
"in": "formData",
"name": "price",
"type": "number",
"required": true,
"description": "Booking price"
},
{
"in": "formData",
"name": "availability",
"type": "string",
"required": true,
"description": "open or close"
},
{
"in": "formData",
"name": "picture",
"type": "string",
"description": "Image url"
},
{
"in": "formData",
"name": "publicId",
"type": "string",
"description": "Image publicId (cloudinary)"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"202": {
"description": "Successfully updated"
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Unexisting item or unauthorized"
},
"401": {
"description": "Unauthorized request"
},
"500": {
"description": "Server Error"
}
}
}
},
"/events": {
"get": {
"tags": ["Events"],
"summary": "Get all events",
"description": "Get all events in the database.",
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "No resource available"
},
"500": {
"description": "Server Error"
}
}
},
"post": {
"tags": ["Events"],
"summary": "Creates a new event",
"description": "Creates a new events and stores it to the database.",
"parameters": [
{
"name": "title",
"in": "formData",
"description": "Title of the event to be created",
"required": true,
"type": "string"
},
{
"name": "description",
"in": "formData",
"description": "Description of the event to be created",
"required": true,
"type": "string"
},
{
"name": "date",
"in": "formData",
"description": "Event Date. Format: 'August 18, 2019'",
"required": true,
"type": "string"
},
{
"name": "time",
"in": "formData",
"description": "Event time. Format: '18:45'",
"required": true,
"type": "string"
},
{
"name": "picture",
"in": "formData",
"description": "Event pictures",
"required": false,
"type": "string"
},
{
"name": "publicId",
"in": "formData",
"description": "Event picture publicId (cloudinary)",
"required": false,
"type": "string"
},
{
"name": "centerId",
"in": "formData",
"description": "id of the center to be booked for event",
"required": true,
"type": "integer"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"201": {
"description": "Successfully created"
},
"400": {
"description": "Bad Request"
},
"409": {
"description": "Center unavailable"
},
"500": {
"description": "Server Error"
},
"401": {
"description": "Unauthorized request"
},
"403": {
"description": "Forbidden request"
}
}
}
},
"/events/{id}": {
"get": {
"tags": ["Events"],
"summary": "Gets an event",
"description": "Get an event in the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The event to get."
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request"
},
"404": {
"description": "Unexisting item"
},
"500": {
"description": "Server Error"
}
}
},
"put": {
"tags": ["Events"],
"summary": "Update an event",
"description": "Update an existing event in the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The event id to update."
},
{
"name": "title",
"in": "formData",
"description": "Title of the event to be created",
"required": true,
"type": "string"
},
{
"name": "description",
"in": "formData",
"description": "Description of the event to be created",
"required": true,
"type": "string"
},
{
"name": "date",
"in": "formData",
"description": "Event Date. Format: 'August 18, 2019'",
"required": true,
"type": "string"
},
{
"name": "time",
"in": "formData",
"description": "Event time. Format: '18:45'",
"required": true,
"type": "string"
},
{
"name": "picture",
"in": "formData",
"description": "Event pictures",
"required": false,
"type": "string"
},
{
"name": "publicId",
"in": "formData",
"description": "Event picture publicId (cloudinary)",
"required": false,
"type": "string"
},
{
"name": "centerId",
"in": "formData",
"description": "id of the center to be booked for event",
"required": true,
"type": "integer"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"201": {
"description": "Successfully created"
},
"400": {
"description": "Bad Request"
},
"409": {
"description": "Center unavailable"
},
"403": {
"description": "Unexisting item or unauthorized"
},
"401": {
"description": "Unauthorized transaction"
},
"500": {
"description": "Server Error"
}
}
},
"delete": {
"tags": ["Events"],
"summary": "Delete an event",
"description": "Delete an existing event from the database.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The event to delete."
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unexisting item or unauthorized"
},
"403": {
"description": "Forbidden request"
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Server Error"
}
}
}
},
"/events/approve/{id}": {
"put": {
"tags": ["Events"],
"summary": "Approve an event",
"description": "Approve an event created by user",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The event to approve."
},
{
"name": "status",
"in": "formData",
"description": "approved or rejected",
"required": true,
"type": "string"
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"202": {
"description": "Successfully approved"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized transaction"
},
"404": {
"description": "Event does not exist"
},
"403": {
"description": "No proviledge to approve event"
},
"500": {
"description": "Server Error"
}
}
}
},
"/facilities/{centerId}": {
"post": {
"tags": ["Facilities"],
"summary": "Add or update facilities",
"description": "Allows a center owner to add or update facilities in bulk",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "The center whose facilities will be updated."
},
{
"in": "body",
"name": "data",
"description": "json object containing list of facility data. Remove 'OrderedMap' and 'List' texts in mock data before trying it out. Works on postman",
"required": true,
"value": {"content": [{"name":"fish", "spec":"golden", "quantity":6}]}
}
],
"security": [
{
"UserToken": []
}
],
"responses": {
"200": {
"description": "Successful"
},
"401": {
"description": "Unauthorized request"
},
"403": {
"description": "Forbidden or Unauthorized transaction"
},
"500": {
"description": "Server Error"
}
}
}
}
}
}