- Notifications
You must be signed in to change notification settings - Fork 0
API Documentation
All endpoints that require a current user to be logged in.
- Request: endpoints that require authentication
- Error Response: Require authentication
Status Code: 401
Headers:
- Content-Type: application/json
Body:
{ "message": "Authentication required", "statusCode": 401 }
All endpoints that require authentication and the current user does not have the correct role(s) or permission(s).
- Request: endpoints that require proper authorization
- Error Response: Require proper authorization
Status Code: 403
Headers:
- Content-Type: application/json
Body:
{ "message": "Forbidden", "statusCode": 403 }
Returns the information about the current user that is logged in.
Require Authentication: true
Request
- Method: GET
- URL: /users/currentUser
- Body: none
Successful Response when there is a logged in user
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "user": { "id": 1, "firstName": "John", "lastName": "Smith", "email": "john.smith@gmail.com", "username": "JohnSmith" } }
Successful Response when there is no logged in user
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "user": null }
Logs in a current user with valid credentials and returns the current user's information.
Require Authentication: false
Request
Method: POST
URL: /users/login/
Headers:
- Content-Type: application/json
Body:
{ "email": "john.smith@gmail.com", "password": "secret password" }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "user": { "id": 1, "firstName": "John", "lastName": "Smith", "email": "john.smith@gmail.com", "username": "JohnSmith", "token": "" } }
Error Response: Invalid credentials
Status Code: 401
Headers:
- Content-Type: application/json
Body:
{ "message": "Invalid credentials", "statusCode": 401 }
Error response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Email is required", "Password is required" ] }
Creates a new user, logs them in as the current user, and returns the current user's information.
Require Authentication: false
Request
Method: POST
URL: /users
Headers:
- Content-Type: application/json
Body:
{ "firstName": "John", "lastName": "Smith", "email": "john.smith@gmail.com", "password": "secret password" }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "user": { "id": 1, "firstName": "John", "lastName": "Smith", "email": "john.smith@gmail.com", "username": "JohnSmith", "token": "" } }
Error response: User already exists with the specified email
Status Code: 403
Headers:
- Content-Type: application/json
Body:
{ "message": "User already exists", "statusCode": 403, "errors": [ "User with that email already exists" ] }
Error response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Invalid email", "First Name is required", "Last Name is required" ] }
Returns all the groups.
Require Authentication: false
Request
- Method: GET
- URL: /groups
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Groups":[ { "id": 1, "organizerId": 1, "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", "createdAt": "2021-11-19 20:39:36", "updatedAt": "2021-11-19 20:39:36", "numMembers": 10, "previewImage": "image url", } ] }
Returns all the groups.
Require Authentication: true
Request
- Method: GET
- URL: /groups/currentUser
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Groups":[ { "id": 1, "organizerId": 1, "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", "createdAt": "2021-11-19 20:39:36", "updatedAt": "2021-11-19 20:39:36", "numMembers": 10, "previewImage": "image url", } ] }
Returns the details of a group specified by its id.
Require Authentication: false
Request
- Method: GET
- URL: /groups/:groupId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "organizerId": 1, "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", "createdAt": "2021-11-19 20:39:36", "updatedAt": "2021-11-19 20:39:36", "numMembers": 10, "GroupImages": [ { "id": 1, "url": "image url", "preview": true }, { "id": 2, "url": "image url", "preview": false } ], "Organizer": { "id": 1, "firstName": "John", "lastName": "Smith" }, "Venues": [ { "id": 1, "groupId": 1, "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327 } ] }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Creates and returns a new group.
Require Authentication: true
Request
Method: POST
URL: /groups
Headers:
- Content-Type: application/json
Body:
{ "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", }
Successful Response
Status Code: 201
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "organizerId": 1, "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", "createdAt": "2021-11-19 20:39:36", "updatedAt": "2021-11-19 20:39:36" }
Error Response: Body validation error
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation Error", "statusCode": 400, "errors": [ "Name must be 60 characters or less", "About must be 50 characters or more", "Type must be 'Online' or 'In person'", "Private must be a boolean", "City is required", "State is required", ] }
Create and return a new image for a group specified by id.
Require Authentication: true
Require proper authorization: Current User must be the organizer for the group
Request
Method: POST
URL: /groups/:groupId/images
Headers:
- Content-Type: application/json
Body:
{ "url": "image url", "preview": true }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "url": "image url", "preview": true }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Updates and returns an existing group.
Require Authentication: true
Require proper authorization: Group must belong to the current user
Request
Method: PUT
URL: /groups/:groupId
Headers:
- Content-Type: application/json
Body:
{ "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "organizerId": 1, "name": "Evening Tennis on the Water", "about": "Enjoy rounds of tennis with a tight-nit group of people on the water facing the Brooklyn Bridge. Singles or doubles.", "type": "In person", "private": true, "city": "New York", "state": "NY", "createdAt": "2021-11-19 20:39:36", "updatedAt": "2021-11-20 10:06:40" }
Error Response: Body validation error
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation Error", "statusCode": 400, "errors": [ "Name must be 60 characters or less", "About must be 50 characters or more", "Type must be 'Online' or 'In person'", "Private must be a boolean", "City is required", "State is required", ] }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Deletes an existing group.
Require Authentication: true
Require proper authorization: Group must belong to the current user
Request
- Method: DELETE
- URL: /groups/:groupId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted", "statusCode": 200 }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Returns all venues for a group specified by its id
Require Authentication: true
Require Authentication: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
- Method: GET
- URL: /groups/:groupId/venues
- Headers:
- Content-Type: application/json
- Body: none
Successful Response
- Status Code: 200
- Headers:
- Content-Type: application/json
- Body:
{ "Venues": [ { "id": 1, "groupId": 1, "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, } ] }Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Creates and returns a new venue for a group specified by its id
Require Authentication: true
Require Authentication: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
- Method: POST
- URL: /groups/:groupId/venues
- Headers:
- Content-Type: application/json
- Body:
{ "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, }Successful Response
- Status Code: 200
- Headers:
- Content-Type: application/json
- Body:
{ "id": 1, "groupId": 1, "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, }Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Error Response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Street address is required", "City is required", "State is required", "Latitude is not valid", "Longitude is not valid", ] }
Edit a new venue specified by its id
Require Authentication: true
Require Authentication: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
- Method: PUT
- URL: /venues/:venuesId
- Headers:
- Content-Type: application/json
- Body:
{ "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, }Successful Response
- Status Code: 200
- Headers:
- Content-Type: application/json
- Body:
{ "id": 1, "groupId": 1, "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, }Error response: Couldn't find a Venue with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Venue couldn't be found", "statusCode": 404 }
Error Response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Street address is required", "City is required", "State is required", "Latitude is not valid", "Longitude is not valid", ] }
Returns all the events.
Require Authentication: false
Request
- Method: GET
- URL: /events
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Events": [ { "id": 1, "groupId": 1, "venueId": null, "name": "Tennis Group First Meet and Greet", "type": "Online", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 8, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": null, }, { "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Singles", "type": "In Person", "startDate": "2021-11-20 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 4, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": { "id": 1, "city": "New York", "state": "NY", }, }, ] }
Returns all the events of a group specified by its id
Require Authentication: false
Request
- Method: GET
- URL: /groups/:groupId/events
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Events": [ { "id": 1, "groupId": 1, "venueId": null, "name": "Tennis Group First Meet and Greet", "type": "Online", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 8, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": null, }, { "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Singles", "type": "In Person", "startDate": "2021-11-20 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 4, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": { "id": 1, "city": "New York", "state": "NY", }, }, ] }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Returns the details of an event specified by its id.
Require Authentication: false
Request
- Method: GET
- URL: /events/:eventId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Group First Meet and Greet", "description": "First meet and greet event for the evening tennis on the water group! Join us online for happy times!", "type": "Online", "capacity": 10, "price": 18.50, "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 8, "Group": { "id": 1, "name": "Evening Tennis on the Water", "private": true, "city": "New York", "state": "NY" }, "Venue": { "id": 1, "address": "123 Disney Lane", "city": "New York", "state": "NY", "lat": 37.7645358, "lng": -122.4730327, }, "EventImages": [ { "id": 1, "url": "image url", "preview": true }, { "id": 2, "url": "image url", "preview": false } ], }
Error response: Couldn't find a Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Creates and returns a new event for a group specified by its id
Require Authentication: true
Require Authorization: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
Method: POST
URL: /groups/:groupId/events
Headers:
- Content-Type: application/json
Body:
{ "venueId": 1, "name": "Tennis Group First Meet and Greet", "type": "Online", "capacity": 10, "price": 18.50, "description": "The first meet and greet for our group! Come say hello!", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Group First Meet and Greet", "type": "Online", "capacity": 10, "price": 18.50, "description": "The first meet and greet for our group! Come say hello!", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", }
Error Response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Venue does not exist", "Name must be at least 5 characters", "Type must be Online or In person", "Capacity must be an integer", "Price is invalid", "Description is required", "Start date must be in the future", "End date is less than start date", ] }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Create and return a new image for an event specified by id.
Require Authentication: true
Require proper authorization: Current User must be an attendee of the event
Request
Method: POST
URL: /events/:eventId/images
Headers:
- Content-Type: application/json
Body:
{ "url": "image url", "preview": false }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "url": "image url", "preview": false }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Edit and returns an event specified by its id
Require Authentication: true
Require Authorization: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
Method: PUT
URL: /events/:eventId
Headers:
- Content-Type: application/json
Body:
{ "venueId": 1, "name": "Tennis Group First Meet and Greet", "type": "Online", "capacity": 10, "price": 18.50, "description": "The first meet and greet for our group! Come say hello!", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Group First Meet and Greet", "type": "Online", "capacity": 10, "price": 18.50, "description": "The first meet and greet for our group! Come say hello!", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", }
Error Response: Body validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation error", "statusCode": 400, "errors": [ "Venue does not exist", "Name must be at least 5 characters", "Type must be Online or In person", "Capacity must be an integer", "Price is invalid", "Description is required", "Start date must be in the future", "End date is less than start date", ] }
Error response: Couldn't find a Venue with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Venue couldn't be found", "statusCode": 404 }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Delete an event specified by its id
Require Authentication: true
Require Authorization: Current User must be the organizer of the group or a member of the group with a status of "co-host"
Request
- Method: DELETE
- URL: /events/:eventId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted" }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Returns the members of a group specified by its id.
Require Authentication: false
Request
- Method: GET
- URL: /memberships/:groupId
- Body: none
Successful Response: If you ARE the organizer or a co-host of the group. Shows all members and their statuses.
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Members": [ { "id": 2, "firstName": "Clark", "lastName": "Adams", "Membership": { "status": "co-host" }, }, { "id": 3, "firstName": "John", "lastName": "Smith", "Membership": { "status": "member" }, }, { "id": 4, "firstName": "Jane", "lastName": "Doe", "Membership": { "status": "pending" }, }, ] }
Successful Response: If you ARE NOT the organizer of the group. Shows only members that don't have a status of "pending".
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Members": [ { "id": 2, "firstName": "Clark", "lastName": "Adams", "Membership": { "status": "co-host" }, }, { "id": 3, "firstName": "John", "lastName": "Smith", "Membership": { "status": "member" }, }, ] }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Request a new membership for a group specified by id.
Require Authentication: true
Request
- Method: POST
- URL: /memberships/:groupId
- Headers:
- Content-Type: application/json
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "groupId": 1, "memberId": 2, "status": "pending" }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Error response: Current User already has a pending membership for the group
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Membership has already been requested", "statusCode": 400 }
Error response: Current User is already an accepted member of the group
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "User is already a member of the group", "statusCode": 400 }
Change the status of a membership for a group specified by id.
Require Authentication: true
Require proper authorization:
- To change the status from "pending" to "member":
- Current User must already be the organizer or have a membership to the group with the status of "co-host"
- To change the status from "member" to "co-host":
- Current User must already be the organizer
- To change the status from "pending" to "member":
Request
Method: PUT
URL: /membership/:groupId
Headers:
- Content-Type: application/json
Body:
{ "memberId": 2, "status": "member" }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "groupId": 1, "memberId": 2, "status": "member" }
Error response: If changing the membership status to "pending".
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validations Error", "statusCode": 400, "errors": { "status" : "Cannot change a membership status to pending" } }
Error response: Couldn't find a User with the specified memberId
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation Error", "statusCode": 400, "errors": { "memberId": "User couldn't be found" } }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Error response: If membership does not exist
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Membership between the user and the group does not exits", "statusCode": 404 }
Delete a membership to a group specified by id.
Require Authentication: true
Require proper authorization: Current User must be the host of the group, or the user whose membership is being deleted
Request
Method: DELETE
URL: /membership/:groupId
Headers:
- Content-Type: application/json
Body:
{ "memberId": 1 }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted membership from group" }
Error response: Couldn't find a User with the specified memberId
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation Error", "statusCode": 400, "errors": { "memberId": "User couldn't be found" } }
Error response: Couldn't find a Group with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group couldn't be found", "statusCode": 404 }
Error response: Membership does not exist for this User
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Membership does not exist for this User", "statusCode": 404 }
Returns the attendees of an event specified by its id.
Require Authentication: false
Request
- Method: GET
- URL: /attendees/:eventId
- Body: none
Successful Response: If you ARE the organizer of the group or a member of the group with a status of "co-host". Shows all attendees including those with a status of "pending".
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Attendees": [ { "id": 2, "firstName": "Clark", "lastName": "Adams", "Attendance": { "status": "member" }, }, { "id": 3, "firstName": "John", "lastName": "Smith", "Attendance": { "status": "waitlist" }, }, { "id": 4, "firstName": "Jane", "lastName": "Doe", "Attendance": { "status": "pending" }, }, ] }
Successful Response: If you ARE NOT the organizer of the group or a member of the group with a status of "co-host". Shows all members that don't have a status of "pending".
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Attendees": [ { "id": 2, "firstName": "Clark", "lastName": "Adams", "Attendance": { "status": "member" }, }, { "id": 3, "firstName": "John", "lastName": "Smith", "Attendance": { "status": "waitlist" }, }, ] }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Request attendance for an event specified by id.
Require Authentication: true
Require Authorization: Current User must be a member of the group
Request
- Method: POST
- URL: /attendees/:eventId
- Headers:
- Content-Type: application/json
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "eventId": 1, "userId": 2, "status": "pending" }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Error response: Current User already has a pending attendance for the event
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Attendance has already been requested", "statusCode": 400 }
Error response: Current User is already an accepted attendee of the event
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "User is already an attendee of the event", "statusCode": 400 }
Change the status of an attendance for an event specified by id.
Require Authentication: true
Require proper authorization: Current User must already be the organizer or have a membership to the group with the status of "co-host"
Request
Method: PUT
URL: /attendees/:eventId
Headers:
- Content-Type: application/json
Body:
{ "userId": 2, "status": "member" }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "id": 1, "eventId": 1, "userId": 2, "status": "member" }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Error response: If changing the attendance status to "pending".
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Cannot change an attendance status to pending", "statusCode": 400 }
Error response: If attendance does not exist
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Attendance between the user and the event does not exist", "statusCode": 404 }
Delete an attendance to an event specified by id.
Require Authentication: true
Require proper authorization: Current User must be the host of the group, or the user whose attendance is being deleted
Request
Method: DELETE
URL: /attendees/:eventId
Headers:
- Content-Type: application/json
Body:
{ "userId": 1 }
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted attendance from event" }
Error response: Couldn't find an Event with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event couldn't be found", "statusCode": 404 }
Error response: Attendance does not exist for this User
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Attendance does not exist for this User", "statusCode": 404 }
Error response: Only the User or organizer may delete an Attendance
Status Code: 403
Headers:
- Content-Type: application/json
Body:
{ "message": "Only the User or organizer may delete an Attendance", "statusCode": 403 }
Delete an existing image for a Group.
Require Authentication: true
Require proper authorization: Current user must be the organizer or "co-host" of the Group
Request
- Method: DELETE
- URL: /images/:imageId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted", "statusCode": 200 }
Error response: Couldn't find an Image with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Group Image couldn't be found", "statusCode": 404 }
Delete an existing image for an Event.
Require Authentication: true
Require proper authorization: Current user must be the organizer or "co-host" of the Group that the Event belongs to
Request
- Method: DELETE
- URL: /images/:imageId
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "message": "Successfully deleted", "statusCode": 200 }
Error response: Couldn't find an Image with the specified id
Status Code: 404
Headers:
- Content-Type: application/json
Body:
{ "message": "Event Image couldn't be found", "statusCode": 404 }
Return events filtered by query parameters.
Require Authentication: false
Request
- Method: GET
- URL: /events
- Query Parameters
- page: integer, minimum: 0, maximum: 10, default: 0
- size: integer, minimum: 0, maximum: 20, default: 20
- name: string, optional
- type: string, optional
- startDate: string, optional
- Body: none
Successful Response
Status Code: 200
Headers:
- Content-Type: application/json
Body:
{ "Events": [ { "id": 1, "groupId": 1, "venueId": null, "name": "Tennis Group First Meet and Greet", "type": "Online", "startDate": "2021-11-19 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 8, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": null, }, { "id": 1, "groupId": 1, "venueId": 1, "name": "Tennis Singles", "type": "In Person", "startDate": "2021-11-20 20:00:00", "endDate": "2021-11-19 22:00:00", "numAttending": 4, "previewImage": "image url", "Group": { "id": 1, "name": "Evening Tennis on the Water", "city": "New York", "state": "NY" }, "Venue": { "id": 1, "city": "New York", "state": "NY", }, }, ] }
Error Response: Query parameter validation errors
Status Code: 400
Headers:
- Content-Type: application/json
Body:
{ "message": "Validation Error", "statusCode": 400, "errors": [ "Page must be greater than or equal to 0", "Size must be greater than or equal to 0", "Name must be a string", "Type must be 'Online' or 'In Person'", "Start date must be a valid datetime", ] }