16 KiB
API Documentation
Values required in
bold
.
Accounts | account
field | data type | metadata |
---|---|---|
id | unsigned integer | primary key, auto-increment |
username | varchar | required |
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 status code, message, id
, username
and email
.
{
"status": 200,
"message": " '`username`' account with email '`email`' has been successfully deleted."
"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 status code and message.
{
"status": 200,
"message": "Meeting '`meeting_title`' has been successfully deleted."
}
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"
}
]
}
Get a list of complete availibility for a meeting
GET /api/meetings/:id/availibility
Request
A json object with a meeting_id
.
{
"id": "worldwide-strategy-meeting-for-11059"
}
Response
A json object for the specified meeting with an array of participant
.
{
"status": 200,
"data": {
"meeting_id": "worldwide-strategy-meeting-for-11059",
"availibility": [{
"participant_id": 5,
"possible_date_id": 21,
"intervals": [{
"preference": 0,
"start_time": "2021-06-25 09:00:00",
"end_time": "2021-06-25 13:00:00",
"timezone": "Europe/Brussels"
},
{
"preference": 1,
"start_time": "2021-06-25 15:00:00",
"end_time": "2021-06-25 20:00:00",
"timezone": "Europe/Brussels"
}]
},
{
"participant_id": 56,
"possible_date_id": 21,
"intervals": [{
"preference": 0,
"start_time": "2021-06-25 08:00:00",
"end_time": "2021-06-25 10:30:00",
"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 status code and message.
{
"status": 200,
"message": "Date '`possible_date`' has been successfully removed for the '`meeting_title`'."
}
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 status code and message.
{
"status": 200,
"message": "The '`participant_username`' has been successfully removed from the meeting '`meeting_title`'."
}
Availibility | availibility
field | data type | metadata |
---|---|---|
id | int | primary key, auto-increment |
participant_id | int | foreign key, required |
possible_date_id | int | foreign key, required |
preference | boolean | 0 (ideal) or 1 (yes), required |
start_time | timestamp | required |
end_time | timestamp | required |
timezone | varchar | required |
created_at | datetime | generated by database |
GET / DELETE / UPDATE
Add an availibility for a possible date
POST /api/availibility
Request
A json object with the availibility to add with participant_id
, possible_date_id
and an array of intervals with preference
, start_time
, end_time
and timezone
.
{
"participant_id": 5,
"possible_date_id": 21,
"intervals": [{
"preference": 0,
"start_time": "2021-06-25 09:00:00",
"end_time": "2021-06-25 13:00:00",
"timezone": "Europe/Brussels"
},
{
"preference": 1,
"start_time": "2021-06-25 15:00:00",
"end_time": "2021-06-25 20:00:00",
"timezone": "Europe/Brussels"
}
]
}
Response
A json object with the availibility to add with participant_id
, possible_date_id
and an array of intervals with id
, preference
, start_time
, end_time
and timezone
.
{
"status": 201,
"data": {
"participant_id": 5,
"possible_date_id": 21,
"intervals": [{
"id": 45,
"preference": 0,
"start_time": "2021-06-25 09:00:00",
"end_time": "2021-06-25 20:00:00",
"timezone": "Europe/Brussels"
},
{
"id": 46,
"preference": 1,
"start_time": "2021-06-25 09:00:00",
"end_time": "2021-06-25 20:00:00",
"timezone": "Europe/Brussels"
}
]
}
}
Delete availibility for a possible date
DELETE /api/availibility/:id
Request
A json object for the availibility to delete with participant_id
and possible_date_id
.
{
"participant_id": 5,
"possible_date_id": 21
}
Response
A json object for the deleted availibility with status code and message.
{
"status": 200,
"message": "Availibility successfully deleted for `participant_username` on `possible_date`"
}