Skip to content

Endpoint and Data Model Documentation

Nazmican Çalık edited this page Dec 1, 2018 · 19 revisions

This document explains the current situation regarding our data models and endpoints. The document will be updated with changes over time.

1. Data Models

1.1. User

1.1.1. Fields

1.1.1.1 E-mail

  • Name : email
  • Type : String
  • Required : True
  • Unique : True

1.1.1.2. Name

  • Name : name
  • Type : String
  • Required : True
  • Unique : False

1.1.1.3. Password

  • Name : password
  • Type : String
  • Required : True
  • Unique : False
  • Comments: Password is hashed before saving or comparing

1.1.1.4. Birth Date

  • Name : birth
  • Type : Date
  • Required : False
  • Unique : False

1.1.1.5. Nationality

  • Name : nationality
  • Type : String
  • Required : False
  • Unique : False

1.1.1.4. Location\City

  • Name : city
  • Type : String
  • Required : False
  • Unique : False

1.1.1.5. Followers

  • Name : followers
  • Type : Array of Mongo object IDs
  • Required : False
  • Unique : False

1.1.1.6. Following

  • Name : following
  • Type : Array of Mongo Object IDs
  • Required : False
  • Unique : False
  • Default : []

1.1.1.7. Interests

  • Name : interests
  • Type : Array of strings
  • Required : False
  • Unique : False
  • Default : []

1.1.2. CRUD Endpoints

  • 1.1.2.1. Create : POST /api/auth/signup
  • 1.1.2.2. Read : GET /api/users/:id (THIS IS NOT YET MERGED TO MASTER!)
  • 1.1.2.3. Update : Not implemented
  • 1.1.2.4. Delete : Not implemented

1.2. Event

1.2.1. Fields

1.2.1.1 Name

  • Name : name
  • Type : String
  • Required : True
  • Unique : False

1.2.1.2. Price

  • Name : price
  • Type : Object
  • Required : True
  • Unique : False

1.2.1.2.1. (Price.)Amount

  • Name : amount
  • Type : Number
  • Required : True
  • Unique : False

1.2.1.2.2. (Price.)Currency

  • Name : currency
  • Type : String
  • Required : True
  • Unique : False

1.2.1.3. Description

  • Name : description
  • Type : String
  • Required : True
  • Unique : False

1.2.1.4. Date

  • Name : date
  • Type : MongoDB date
  • Required : True
  • Unique : False

1.2.1.5. Duration

  • Name : duration
  • Type : Object
  • Required : True
  • Unique : False

1.2.1.5.1. (Duration.) Length

  • Name : length
  • Type : Number
  • Required : True
  • Unique : False

1.2.1.5.2. (Duration.) Unit

  • Name : unit
  • Type : String
  • Required : True
  • Unique : False

1.2.1.6. Creation Date

  • Name : created
  • Type : Date
  • Required : False
  • Unique : False

1.2.1.7. Creator

  • Name : creator
  • Type : String(Mongo object ID)
  • Required : True
  • Unique : False

1.2.1.8. Attendance

  • Name : attendance
  • Type : Array of objects
  • Required : True
  • Unique : False
  • Default : []

1.2.1.8.1. (Attendance.) User

  • Name : user
  • Type : Mongo Object ID
  • Required : True
  • Unique : False

1.2.1.8.2. (Attendance.) Attendance Type

  • Name : attendanceType
  • Type : Number
  • Required : True
  • Unique : False
  • Default : []

1.2.1.9. Vote

  • Name : vote
  • Type : Object
  • Required : False
  • Unique : False

1.2.1.9.1. (Vote.)Upvote Count

  • Name : upvoteCount
  • Type : Number
  • Required : False
  • Unique : False
  • Default : 0

1.2.1.9.2. (Vote.)Downvote Count

  • Name : downvoteCount
  • Type : Number
  • Required : False
  • Unique : False
  • Default : 0

1.2.1.9.3. (Vote.)Actual Votes

  • Name : votes
  • Type : Array of Objects
  • Required : True
  • Unique : False
  • Default : []

1.2.1.9.3.1. (Vote.Votes.) Voting User

  • Name : user
  • Type : Mongo Object ID
  • Required : True
  • Unique : False

1.2.1.9.3.2. (Vote.Votes.) Vote Type

  • Name : voteType
  • Type : Number
  • Required : True
  • Unique : False

1.2.1.10. Comments

  • Name : comments
  • Type : Array of Comment objects
  • Required : False
  • Unique : False
  • Default : []

1.2.1.11. Artists

  • Name : artists
  • Type : Array of strings
  • Required : False
  • Unique : False

1.2.1.12. Semantic Tags

  • Name : tags
  • Type : Array of strings
  • Required : True
  • Unique : False
  • Default : []

1.2.1.13. Location

  • Name : locationConstruct
  • Type : Object
  • Required : False
  • Unique : False

1.2.1.13.1. (Location.)Name

  • Name : locationName
  • Type : String
  • Required : False
  • Unique : False

1.2.1.13.2. (Location.)Location

  • Name : location
  • Type : Object
  • Required : False
  • Unique : False

1.2.1.13.2.1. (Location.Location.)Type

  • Name : locType
  • Type : Array of strings
  • Required : False
  • Unique : False

1.2.1.13.2.2. (Location.Location.)Coordinates

  • Name : location
  • Type : Array of Numbers
  • Required : False
  • Unique : False

1.2.1.14. Media Field

  • Name : medias
  • Type : Array of strings
  • Required : True
  • Unique : False
  • Default : []

1.2.2. CRUD Endpoints

  • 1.2.2.1. Create : POST /api/events
  • 1.2.2.2. Read : GET /api/events/:id or GET /api/events/getEventbyOwner/:id
  • 1.2.2.3. Update : GET /api/events/:id
  • 1.2.2.4. Delete : DELETE /api/events/:id (THIS IS NOT YET MERGED TO MASTER!)

1.3. Comments

1.3.1. Fields

1.3.1.1. Author

  • Name : author
  • Type : Mongo Object ID
  • Required : True
  • Unique : False

1.3.1.2. Parent ID

  • Name : parentId
  • Type : Mongo Object ID
  • Required : False
  • Unique : False

1.3.1.3. Body

  • Name : body
  • Type : String
  • Required : True
  • Unique : False

1.3.1.4. Creation Date

  • Name : created
  • Type : Date
  • Required : False
  • Unique : False
  • Default : Date.now()
2. Endpoints This sections lists the names of the endpoints and their inputs

2.1. /api/auth

2.1.1. POST /api/auth/signup

2.1.1.1. URL inputs:

  • None

2.1.1.2. Body inputs:

  • email
  • name
  • password

2.1.2. POST /api/auth/signin

2.1.2.1. URL inputs:

  • None

2.1.2.2. Body inputs:

  • email
  • password

2.2. /api/users

2.2.1. GET /api/users/:id

2.2.1.1. URL inputs:

  • id of the user

2.2.1.2. Body inputs:

  • None

2.3. /api/events

2.3.1. POST /api/events

2.3.2.1. URL inputs:

  • None

2.3.2.2. Body inputs:

  • Event data model as a req body

2.3.2. GET /api/events

2.3.2.1. URL inputs:

  • None

2.3.2.2. Body inputs:

  • None

2.3.3. GET /api/events/getEventbyOwner/:id

2.3.3.1. URL inputs:

  • id

2.3.3.2. Body inputs:

  • None

2.3.4. GET /api/events/:id

2.3.4.1. URL inputs:

  • id

2.3.4.2. Body inputs:

  • None

2.3.5. PUT /api/events/:id

2.3.5.1. URL inputs:

  • id

2.3.5.2. Body inputs:

  • name
  • price
  • description
  • date
  • artists
  • blokedUsers

2.3.6. DELETE /api/events/:id (THIS IS NOT YET MERGED WITH MASTER!)

2.3.6.1 URL inputs:

  • id

2.3.6.2. Body inputs:

  • None
Clone this wiki locally