backend/research/API Documentation.md

12 KiB

API Documentation


Values required in bold.

Accounts | account

field data type metadata
id unsigned integer primary key, auto-increment
username varchar required
email varchar required
password varchar required
timezone varchar
earliest_time varchar
latest_time varchar
created_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 AM",
  "latest_time":"10:00 PM"
}
Response

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

{
  "status": 201,
  "data": {
    "id": 1,
    "username": "jean",
    "email": "jean@example.com",
    "timezone": "Europe/Brussels",
    "earliest_time":"09:30 AM",
    "latest_time":"10:00 PM"l
  }
}

Log in an account

POST /api/accounts/login

Request

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

{
  "username": "jean",
  "password": "super-strong-password"
}
Response

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

{
  "status": 201,
  "data": {
    "id": 1,
    "username": "jean",
    "email": "jean@example.com",
    "timezone": "Europe/Brussels",
    "earliest_time":"09:30 AM",
    "latest_time":"10:00 PM"l
  }
}

Update an account

PUT /api/accounts/:id

Request

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

{
  "id": 15,
  "earliest_time": "08:30 AM",
  "latest_time": "08:00 PM"
}
Response

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

{
  "status": 200,
  "data": {
    "id": 1,
    "username": "jean",
    "email": "jean@example.com",
    "timezone": "Europe/Brussels",
    "earliest_time": "09:30 AM",
    "latest_time": "10:00 PM"
  }
}

Delete an account

DELETE /api/accounts/:id

Request

A json object for the account to delete with id.

{
  "id": 15
}
Response

A json object for the deleted account with username and email.

{
  "status": 200,
  "data": {
    "id": 15,
    "username": "jean",
    "email": "jean@example.com"
  }
}

Get a list of meetings for an account

GET /api/accounts/:account_id/meetings

Request

A json object with an account_id.

{
  "id": 5
}
Response

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

{
  "status": 200,
  "data": [
            {
              "id": "worldwide-strategy-meeting-for-11059",
              "title": "Worldwide strategy meeting for growth",
              "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
              "start_time": 2022-02-16 20:00:00,
              "timezone": "Europe/Brussels",
              "duration": 60,
              "status": 1
            },
            {
              "id": "follow-up-with-tech-team-21850",
              "title": "Follow up with tech team",
              "duration": 120,
              "status": 0
            }
          ]
}

Meetings | meeting

field data type metadata
id varchar primary key, first 30 chars of title with words separated by - + 5 random int
title varchar required
description varchar
start_time datetime
timezone varchar
duration int required
status boolean required: 0 (proposed) or 1 (confirmed)
password varchar
created_at datetime generated by database

Add a meeting

POST /api/meetings

Request

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

{
  "id": "worldwide-strategy-meeting-for-11059",
  "title": "Worldwide strategy meeting for growth",
  "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
  "duration": 90,
  "password": "generic-password"
}
Response

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

{
  "status": 201,
  "data": {
    "id": "worldwide-strategy-meeting-for-11059",
    "title": "Worldwide strategy meeting for growth",
    "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
    "duration": 90,
    "status": 0
  }
}

Update a meeting

PUT /api/meetings/:id

Request

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

{
  "id": "worldwide-strategy-meeting-for-11059",
  "account_id": 5,
  "start_time": 2022-02-16 20:00:00,
  "timezone": "Europe/Brussels",
  "status": 1
}
Response

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

{
  "status": 200,
  "data": {
    "id": "worldwide-strategy-meeting-for-11059",
    "title": "Worldwide strategy meeting for growth",
    "description": "Let's find the best ethical growth hacking technics together. Yeah, fun.",
    "start_time": 2022-02-16 20:00:00,
    "timezone": "Europe/Brussels",
    "duration: 90,
    "status": 1
  }
}

Delete a meeting

DELETE /api/meetings/:id

Request

A json object for the meeting to delete with id and account_id.

{
  "id": "worldwide-strategy-meeting-for-11059",
  "account_id": 5
}
Response

A json object for the deleted meeting with id and title.

{
  "status": 200,
  "data": {
    "id": "worldwide-strategy-meeting-for-11059",
    "title": "Worldwide strategy meeting for growth",
  }
}

Get a list of all participants for a meeting

GET /api/meetings/:id/participants

Request

A json object with an account_id.

{
  "id": "worldwide-strategy-meeting-for-11059",
  "account_id": 5
}
Response

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

{
  "status": 200,
  "data": [
            {
              "id": 23,
              "account_id": 5,
              "meeting_id": "worldwide-strategy-meeting-for-11059",
              "earliest_time": "09:30 AM",
              "latest_time": "05:00 PM",
              "quorum": 1,
              "mandatory": 1,
              "host": 1,
              "answered": 1,
              "timezone": "Europe/Brussels"
            },
            {
              "id": 28,
              "account_id": 11,
              "meeting_id": "worldwide-strategy-meeting-for-11059",
              "earliest_time": "10:00 AM",
              "latest_time": "09:00 PM",
              "quorum": 0,
              "mandatory": 1,
              "host": 0,
              "answered": 1,
              "timezone": "Europe/Brussels"
            }
          ]
}

Possible Dates | possible_date

field data type metadata
id int primary key, auto-increment
meeting_id varchar foreign key, required
possible_date date foreign key, required

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": "worldwide-strategy-meeting-for-11059",
  "possible_date": 2020-02-18
}
Response

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

{
  "status": 201,
  "data": {
    "id": 5,
    "meeting_id": "worldwide-strategy-meeting-for-11059",
    "possible_date": 2020-02-18
  }
}

Delete a possible date

DELETE /api/possible-dates/:id

Request

A json object for the possible date to delete with id and account_id.

{
  "id": 12,
  "account_id": 5
}
Response

A json object for the deleted possible date with id and possible_date.

{
  "status": 200,
  "data": {
    "id": 15,
    "possible_date": 2020-02-18
  }
}

Participants | participant

field data type metadata
account_id int primary key, auto-increment
meeting_id varchar required
earliest_time datetime
latest_time datetime
quorum boolean 0 (no) or 1 (yes)
mandatory boolean 0 (no) or 1 (yes)
host boolean 0 (no) or 1 (yes)
answered boolean 0 (no) or 1 (yes)
timezone varchar required
created_at datetime generated by database

Invite a participant

POST /api/participants

Request

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

{
  "account_id": 5,
  "meeting_id": "worldwide-strategy-meeting-for-11059",
  "earliest_time": "08:30 AM",
  "latest_time": "08:00 PM",
  "quorum": 0,
  "mandatory": 1,
  "host": 0,
  "answered": 0,
  "timezone": "Europe/Brussels"
}
Response

A json object for the participant with id, account_id, meeting_id, earliest_time, latest_time, quorum, mandatory, host, answered and timezone.

{
  "status": 201,
  "data": {
    "id": 23,
    "account_id": 5,
    "meeting_id": "worldwide-strategy-meeting-for-11059",
    "earliest_time": "08:30 AM",
    "latest_time": "08:00 PM",
    "quorum": 0,
    "mandatory": 1,
    "host": 0,
    "answered": 0,
    "timezone": "Europe/Brussels"
  }
}

Update a participant

PUT /api/participants/:id

Request

A json object for the participant to invite with id and any of id, earliest_time, latest_time, quorum, mandatory, host, answered and timezone.

{
  "account_id": 5,
  "earliest_time": "09:30 AM",
  "latest_time": "05:00 PM",
  "quorum": 1,
  "host": 1,
  "answered": 1,
}
Response

A json object for the participant with id, account_id, meeting_id, earliest_time, latest_time, quorum, mandatory, host, answered and timezone.

{
  "status": 200,
  "data": {
    "id": 23,
    "account_id": 5,
    "meeting_id": "worldwide-strategy-meeting-for-11059",
    "earliest_time": "09:30 AM",
    "latest_time": "05:00 PM",
    "quorum": 1,
    "mandatory": 1,
    "host": 1,
    "answered": 1,
    "timezone": "Europe/Brussels"
  }
}

Delete a participant

DELETE /api/participants/:id

Request

A json object for the participant to delete with id.

{
  "id": 23
}
Response

A json object for the deleted participant with id, account_id and meeting_id.

{
  "status": 200,
  "data": {
    "id": 15,
    "account_id": 5,
    "meeting_id": "worldwide-strategy-meeting-for-11059"
  }
}