documentation/api-documentation.md

14 KiB

API Documentation


URL https://meeting-planner-backend.herokuapp.com/


Values required in bold.

Accounts | account

field data type metadata
id unsigned integer primary key, auto-increment
username string required
email string required, unique
password string required
timezone string
earliest_time string
latest_time string
created_at datetime generated by database
updated_at datetime generated by database

Add an account

POST /api/accounts

Request

A json object for the account to register with username, email, password, timezone, earliest_time and latest_time.

{
  "username": "jean",
  "email": "jean@example.com",
  "password": "really-strong-password",
  "timezone": "Europe/Brussels",
  "earliest_time":"09:30",
  "latest_time":"22:00"
}
Response 201

A json object for the registered account with id, username, email, timezone, earliest_time and latest_time.

{
  "user": {
    "id": 1,
    "username": "jean",
    "email": "jean@example.com",
    "timezone": "Europe/Brussels",
    "earliest_time":"09:30",
    "latest_time":"22:00"
  },
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1CJlbWFpbCI6ImphY2tAZXc2VybmFtZSI6ImphY2siLhhbXBsZS5jb20iLCJpYXQiOjE1OTg2MTc2MTksImV4cCI6MTYwMTIwOTYxOX0.s85ti_rzBVHJ6Gt1MY7seYfdcjB6sR939p2CexA40gI"
}

Log in an account

POST /api/accounts/login

Request

A json object for the account to login with either email and password .

{
  "email": "jean@example.com",
  "password": "password"
}
Response 201

A json object for the logged in account with id, username, email, timezone, earliest_time, latest_time and token.

{
  "user": {
    "id": 1,
    "username": "jean",
    "email": "jean@example.com",
    "timezone": "Europe/Brussels",
    "earliest_time":"09:30",
    "latest_time":"22:00"
  },
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1CJlbWFpbCI6ImphY2tAZXc2VybmFtZSI6ImphY2siLhhbXBsZS5jb20iLCJpYXQiOjE1OTg2MTc2MTksImV4cCI6MTYwMTIwOTYxOX0.s85ti_rzBVHJ6Gt1MY7seYfdcjB6sR939p2CexA40gI"
}

Update an account

PUT /api/accounts/:id

Request

A json object for the account to update with any of username, email, password, timezone, earliest_time, latest_time.

{
  "earliest_time": "08:30",
  "latest_time": "20:00"
}
Response 200

A json object for the updated account with id, username, email, timezone, earliest_time and latest_time.

{
  "id": 1,
  "username": "jean",
  "email": "jean@example.com",
  "timezone": "Europe/Brussels",
  "earliest_time": "09:30",
  "latest_time": "22:00"
}

Delete an account

DELETE /api/accounts/:id

Response 200

A json object for the deleted account with confirmation message.

{
  "message": "Account with id 15 successfully deleted."
}

Get a list of meetings for an account

GET /api/accounts/:id/meetings

Response 200

A json object for the specified account with an array of meeting.

[
  {
    "id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
    "title": "Worldwide meeting I",
    "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
    "start_time": "2025-05-05T10:30:00Z",
    "duration": 90,
    "status": "false"
  },
  {
    "id": "2e8f3748-ea5a-4d20-b9a8-683ac65f5634",
    "title": "Worldwide meeting II",
    "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
    "start_time": "2025-05-05T08:00:00Z",
    "duration": 90,
    "status": "false"
  },
  {
    "id": "a8344a68-7961-4bff-bb3b-b288f3abcf1c",
    "title": "Worldwide meeting III",
    "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
    "start_time": "2025-05-05T14:30:00Z",
    "duration": 90,
    "status": "false"
  }
]

Meetings | meeting

field data type metadata
id uuid primary key, auto-generated
title string required
description string
start_time datetime UTC Timestamp
duration int required
status boolean required: 0 (proposed) or 1 (confirmed)
password string
created_at datetime generated by database
updated_at datetime generated by database

Add a meeting

POST /api/meetings

Request

A json object for the meeting to add with title, description, start_time, duration, status and password.

{
  "title": "Worldwide strategy meeting for growth",
  "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
  "start_time": "2025-05-05T10:00:00Z",
  "duration": 90,
  "status": 0
}
Response 201

A json object for the added meeting with id, title, description, start_time, duration, status and password.

{
  "id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "title": "Worldwide strategy meeting for growth",
  "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
  "start_time": "2025-05-05T10:00:00Z",
  "duration": 90,
  "status": 0
}

Update a meeting

PUT /api/meetings/:id

Request

A json object for the meeting to update with any of title, description, start_time, duration, status and password.

{
  "start_time": "2025-05-05T10:00:00Z",
  "status": 1
}
Response 200

A json object for the updated meeting with id, title, description, start_time, duration and status.

{
  "id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "title": "Worldwide strategy meeting for growth",
  "description": "Let's find the best ethical growth hacking technics together.Yeah, fun.",
  "start_time": "2025-05-05T10:00:00Z",
  "duration: 90,
  "status": 1
}

Delete a meeting

DELETE /api/meetings/:id

Response 200

A json object for the deleted meeting with message.

{
  "message": "Meeting with id f86983db-955e-43b8-be3e-bc92bbeb9b43 was successfully deleted."
}

Get a list of all participants for a meeting

GET /api/meetings/:id/participants

Response 200

A json object for the specified meeting with an array of participant.

[
  {
    "id": "j8y9ta10-5g4f-46e8-bb55-8611e7e5bgtr",
    "email": "liza@example.com",
    "account_id": 1,
    "meeting_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
    "quorum": "false",
    "mandatory": "false",
    "host": "false",
    "answered": "false"
  },
  {
    "id": "gh59ta10-5g4f-46e8-bb55-8611e7eftg8t",
    "email": "toni@example.com",
    "account_id": 23,
    "meeting_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
    "quorum": "false",
    "mandatory": "false",
    "host": "false",
    "answered": "false"
  }
]

Get a list of all possible dates for a meeting

GET /api/meetings/:id/possible-dates

Response 200

A json object for the specified meeting with an array of possible_date.

[
  {
  "id": 12,
  "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "possible_date": "2020-02-18"
  },
	{
    "id": 13,
    "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
    "possible_date": "2020-02-19"
  },
  {
    "id": 14,
    "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
    "possible_date": "2020-02-22"
  }
]

Get a list of all availability for a meeting

GET /api/meetings/:id/availability

Response 200

A json object for the specified meeting with an array of availability.

[
  {
    "id": 1,
    "participant_id": "gt537a10-316f-46e8-bb55-8611e7e5b31c",
    "possible_date_id": 1,
    "preference": false,
    "start_time": "2025-05-05T09:00:00Z",
    "end_time": "2025-05-05T22:00:00Z"
  },
  {
    "id": 2,
    "participant_id": "7a103ac0-316f-46e8-bb55-8611eb31c7e5",
    "possible_date_id": 1,
    "preference": false,
    "start_time": "2025-05-06T10:00:00Z",
    "end_time": "2025-05-06T20:00:00Z"
  },
  {
    "id": 3,
    "participant_id": "7a1003ac7a10-316f-46e8-bb55-8611e7e5b31c11e7e",
    "possible_date_id": 2,
    "preference": false,
    "start_time": "2025-05-07T10:00:00Z",
    "end_time": "2025-05-07T10:00:00Z"
  }
]

Participants | participant

field data type metadata
id uuid required, primary key
email string
account_id string foreign key
meeting_id string required, foreign key
quorum boolean 0 (no) or 1 (yes)
mandatory boolean 0 (no) or 1 (yes)
host boolean required, 0 (no) or 1 (yes)
answered boolean required, 0 (no) or 1 (yes)
created_at datetime generated by database
updated_at datetime generated by database

Invite a participant

POST /api/participants

Request

A json object for the participant to add with email, account_id, meeting_id, quorum, mandatory, host and answered.

{
  "email": "john@example.com",
  "account_id": 5,
  "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "quorum": 0,
  "mandatory": 1,
  "host": 0,
  "answered": 0
}
Response 201

A json object for the added participant with id, email, account_id, meeting_id, quorum, mandatory, host and answered.

{
  "id": "983dbf86-955e-43b8-be3e-b9b43bc92bbe",
  "email": "john@example.com",
  "account_id": 5,
  "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "quorum": 0,
  "mandatory": 1,
  "host": 0,
  "answered": 0
}

Update a participant

PUT /api/participants/:id

Request

A json object for the participant to update with any of quorum, mandatory, host and answered.

{
  "quorum": 1,
  "host": 1,
  "answered": 1
}
Response 200

A json object for the updated participant with id, email, account_id, meeting_id, quorum, mandatory, host and answered.

{
  "id": "983dbf86-955e-43b8-be3e-b9b43bc92bbe",
  "email": "john@example.com",
  "account_id": 5,
  "meeting_id": "f86983db-955e-43b8-be3e-bc92bbeb9b43",
  "quorum": 1,
  "mandatory": 1,
  "host": 1,
  "answered": 1
}

Delete a participant

DELETE /api/participants/:id

Response

A json object for the deleted participant with message.

{
  "message": "Participant with id 983dbf86-955e-43b8-be3e-b9b43bc92bbe was successfully deleted."
}

Possible Dates | possible_date

field data type metadata
id int primary key, auto-increment
meeting_id string foreign key, required
possible_date string required
created_at datetime generated by database
updated_at datetime generated by database

Add a possible date

POST /api/possible-dates

Request

A json object for the meeting to add with meeting_id and possible_date.

{
  "meeting_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
  "possible_date": "2025-02-27"
}
Response 201

A json object for the added meeting with id, meeting_id and possible_date.

{
  "id": 20,
  "meeting_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
  "possible_date": "2025-02-26"
}

Delete a possible date

DELETE /api/possible-dates/:id

Response 200

A json object for the deleted possible date with message.

{
  "message": "Possible date with id 12 was successfully deleted."
}

Availability | availability

field data type metadata
id int primary key, auto-increment
participant_id int foreign, required
possible_date_id int foreign key, required
preference boolean 0 (ideal) or 1 (yes), required
start_time datetime required, UTC timestamp
end_time datetime required, UTC timestamp
created_at datetime generated by database
updated_at datetime generated by database

Add an availability

POST /api/availability

Request

A json object with the availability to add with participant_id, possible_date_id, preference, start_time and end_time.

{
  "participant_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
  "possible_date_id": 1,
  "preference": false,
  "start_time": "2025-05-05T10:00:00Z",
  "end_time": "2025-05-05T20:00:00Z"
}
Response 201

A json object with the availability added with id, participant_id, possible_date_id, preference, start_time and end_time.

{
  "id": 30,
  "participant_id": "03ac7a10-316f-46e8-bb55-8611e7e5b31c",
  "possible_date_id": 1,
  "preference": false,
  "start_time": "2025-05-05T10:00:00Z",
  "end_time": "2025-05-05T20:00:00Z"
}

Delete an availability

DELETE /api/availability/:id

Response 200

A json object for the deleted availability with message.

{
  "message": "Availability with id 30 was successfully deleted."
}