Skip to content

KellyAnneSantos/meetup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

meetup

Database Schema Design

schemaimage

API Documentation

All endpoints that require authentication

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 proper authorization

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
      }

Get the Current User

Returns the information about the current user that is logged in.

  • Require Authentication: true

  • Request

    • Method: GET
    • URL: /users/current
    • Body: none
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "id": 1,
        "firstName": "John",
        "lastName": "Smith",
        "email": "[email protected]"
      }

Log In a User

Logs in a current user with valid credentials and returns the current user's information.

  • Require Authentication: false

  • Request

    • Method: POST

    • URL: /login

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "email": "[email protected]",
        "password": "secret password"
      }
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "id": 1,
        "firstName": "John",
        "lastName": "Smith",
        "email": "[email protected]",
        "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": "Email is required",
          "password": "Password is required"
        }
      }

Sign Up a User

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: /signup

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "firstName": "John",
        "lastName": "Smith",
        "email": "[email protected]",
        "password": "secret password"
      }
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "id": 1,
        "firstName": "John",
        "lastName": "Smith",
        "email": "[email protected]",
        "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": {
          "email": "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": {
          "email": "Invalid email",
          "firstName": "First Name is required",
          "lastName": "Last Name is required"
        }
      }

Get all Groups

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-knit 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"
          }
        ]
      }

Get all Groups joined or organized by the Current User

Returns all the groups.

  • Require Authentication: true

  • Request

    • Method: GET
    • URL: users/current/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-knit 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"
          }
        ]
      }

Get details of a Group from an id

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-knit 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,
        "images": ["image url"],
        "Organizer": {
          "id": 1,
          "firstName": "John",
          "lastName": "Smith"
        }
      }
  • 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 a Group

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-knit 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-knit 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": "Name must be 60 characters or less",
          "about": "About must be 50 characters or more",
          "type": "Type must be Online or In person",
          "private": "Private must be a boolean",
          "city": "City is required",
          "state": "State is required"
        }
      }

Edit a Group

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-knit 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-knit 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": "Name must be 60 characters or less",
          "about": "About must be 50 characters or more",
          "type": "Type must be Online or In person",
          "private": "Private must be a boolean",
          "city": "City is required",
          "state": "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
      }

Delete a Group

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
      }

Get all Members of a Group specified by its id

Returns the members of a group specified by its id.

  • Require Authentication: true

  • Request

    • Method: GET
    • URL: /groups/:groupId/members
    • Body: none
  • Successful Response: If you ARE the organizer of the group. Shows all members, regardless of their status, and their status.

    • 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 all 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 Membership for a Group based on the Group's id

Request a new membership for a group specified by id.

  • Require Authentication: true

  • Request

    • Method: POST
    • URL: /groups/:groupId/memberships
    • 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

Change the status of a membership for a group 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: /groups/:groupId/members/:memberId

    • 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: 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 changing the status to "co-host" and Current User is not the organizer.

    • Status Code: 403

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Current User must be the organizer to add a co-host",
        "statusCode": 403
      }
  • Error response: If changing the status to "member" and Current User is not the organizer of the group or a member of the group with a status of "co-host".

    • Status Code: 400

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Current User must be the organizer or a co-host to make someone a member",
        "statusCode": 400
      }
  • Error response: If changing the membership status to "pending".

    • Status Code: 400

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Cannot change a membership status to pending",
        "statusCode": 400
      }
  • 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 exist",
        "statusCode": 404
      }

Delete membership to a group specified by id

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: /groups/:groupId/members/:memberId
    • Headers:
      • Content-Type: application/json
    • Body: none
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Successfully deleted membership from group"
      }
  • 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
      }

Get all Events

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",
            "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",
            "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"
            }
          }
        ]
      }

Get all Events of a Group specified by its id

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",
            "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",
            "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
      }

Get details of an Event specified by its id

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.5,
        "startDate": "2021-11-19 20:00:00",
        "endDate": "2021-11-19 21: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
        },
        "images": ["image url"]
      }
  • 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
      }

Create a new Venue for a Group specified by its id

Creates and returns a new venue 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/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": {
          "address": "Street address is required",
          "city": "City is required",
          "state": "State is required",
          "lat": "Latitude is not valid",
          "lng": "Longitude is not valid"
        }
      }

Edit a Venue specified by its id

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/:venueId
    • 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": {
          "address": "Street address is required",
          "city": "City is required",
          "state": "State is required",
          "lat": "Latitude is not valid",
          "lng": "Longitude is not valid"
        }
      }

Create an Event for a Group specified by its id

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.5,
        "description": "The first meet and greet for our group! Come say hello!",
        "startDate": "2021-11-19 20:00:00",
        "endDate": "2021-11-19 21: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.5,
        "description": "The first meet and greet for our group! Come say hello!",
        "startDate": "2021-11-19 20:00:00",
        "endDate": "2021-11-19 21:00:00"
      }
  • Error Response: Body validation errors

    • Status Code: 400

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Validation error",
        "statusCode": 400,
        "errors": {
          "venueId": "Venue does not exist",
          "name": "Name must be at least 5 characters",
          "type": "Type must be Online or In person",
          "capacity": "Capacity must be an integer",
          "price": "Price is invalid",
          "description": "Description is required",
          "startDate": "Start date must be in the future",
          "endDate": "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
      }

Edit an Event specified by its id

Edit and return 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.5,
        "description": "The first meet and greet for our group! Come say hello!",
        "startDate": "2021-11-19 20:00:00",
        "endDate": "2021-11-19 21: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.5,
        "description": "The first meet and greet for our group! Come say hello!",
        "startDate": "2021-11-19 20:00:00",
        "endDate": "2021-11-19 21:00:00"
      }
  • Error Response: Body validation errors

    • Status Code: 400

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "message": "Validation error",
        "statusCode": 400,
        "errors": {
          "venueId": "Venue does not exist",
          "name": "Name must be at least 5 characters",
          "type": "Type must be Online or In person",
          "capacity": "Capacity must be an integer",
          "price": "Price is invalid",
          "description": "Description is required",
          "startDate": "Start date must be in the future",
          "endDate": "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

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
      }

Get all Attendees of an Event specified by its id

Returns the attendees of an event specified by its id.

  • Require Authentication: true

  • Request

    • Method: GET
    • URL: /events/:eventId/attendees
    • 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, regardless of their status, and their status.

    • 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 to Attend an Event based on the Event's id

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: /events/:eventId/attendances
    • 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

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: /events/:eventId/attendances/:attendeeId

    • 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 attendance to an event specified by id

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: events/:eventId/attendances/:attendeeId
    • Headers:
      • Content-Type: application/json
    • Body: none
  • 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
      }

Add an Image to a Group based on the Group's id

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"
      }
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "id": 1,
        "imageableId": 1,
        "imageableType": "Group",
        "url": "image url"
      }
  • 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
      }

Add an Image to an Event based on the Event's id

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"
      }
  • Successful Response

    • Status Code: 200

    • Headers:

      • Content-Type: application/json
    • Body:

      {
        "id": 1,
        "imageableId": 1,
        "imageableType": "Event",
        "url": "image url"
      }
  • 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 Image

Delete an existing image.

  • Require Authentication: true

  • Require proper authorization: Image must belong to the current user through the image's imageableId and imageableType

  • 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": "Image couldn't be found",
        "statusCode": 404
      }

Add Query Filters to Get All Events

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",
            "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",
            "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": "Page must be greater than or equal to 0",
          "size": "Size must be greater than or equal to 0",
          "name": "Name must be a string",
          "type": "Type must be 'Online' or 'In Person'",
          "startDate": "Start date must be a valid datetime"
        }
      }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published