*NOTE: "schedules" as used in endpoints refer to childrens' enrollments to courses; "schedule" specific endpoints join the children, enrollments, and courses tables and return data matching the given profile_id
{
profile_id: INCREMENT (primary key, auto-increments, generated by database),
name: STRING (required),
email: STRING (required),
role_id: INTEGER (required, foreign key),
avatarUrl: STRING (required, defaults to: 'https://i.stack.imgur.com/frlIf.png'),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /profile/ | Returns an array of all existing profiles. |
| [GET] | /profile/:okta_id/ | Returns the profile object with the specified okta_id. |
| [GET] | /profiles/users/:profile_id (BUG: /profiles/users route does not exist; app.js only connects to /profiles/user) | Returns an array filled with event objects that contains information based on profile_id and role_id. |
| [GET] | /profile/role/:role_id (BUG: does not return any data) | Returns an array filled with event objects that contain information based on role_id for all profiles of a role_id type. |
| [POST] | /profile/ | Requires a name, password, and email. Registers a new user. |
| [PUT] | /profile/ | Returns an event object with the specified okta. Updates specific profile. |
| [DELETE] | /profile/:okta_id/ | Returns an event object with the specified okta. Deletes specific profile. |
These endpoints are user-focused. As opposed to the more flexible Profile endpoints where profile_id must be specified, these endpoints retrieve data specific only to the user profile that is making the API request by using the logged-in user's profile_id.
| Method | URL | Description |
|---|---|---|
| [GET] | /user/ | Returns an event object with the specified okta and type. |
| [GET] | /user/inbox/ | Returns an event object with the specified okta. (NOT IMPLEMENTED) |
| [GET] | /user/schedules/ | Returns an event object with the specified okta. |
| [PUT] | /user/ | Returns an event object with the specified id. Updates specific user. |
| [POST] | /user/register | Posts a new user in the database and in the Okta Dashboard. |
NOTE: these are the password requirements: at least 8 characters, a lowercase letter, an uppercase letter, a number, no parts of your username.
The required fields include the following: {
firstName: string,
lastName: string,
email: string,
password: string,
role_id: int,
avatarUr(not required): string,
}
{
parent_id: INCREMENT (primary key, auto-increments, generated by database),
profile_id: INTEGER (required, foreign key),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /parent/:profile_id/children/ | Returns an array filled with children event objects with the specified profile_id. |
| [GET] | /parent/:profile_id/schedules/ | Returns an array filled with schedules event objects with the specified profile_id. |
{
child_id: INCREMENT (primary key, auto-increments, generated by database),
profile_id: INTEGER (required, unique, foreign key),
username: STRING (required),
age: INTEGER (required),
parent_id: INTEGER (required, foreign key),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /children | Returns an array containing all existing children. |
| [POST] | /children | Requires a username, name, and age. Returns the name, profile_id, and parent_id. |
| [GET] | /children/:child_id | Returns the child with the given 'id'. |
| [PUT] | /children/:child_id | Returns the updated child object |
| [DELETE] | /children/:child_id | Returns the name of the child deleted |
| [GET] | /children/:child_id/enrollments | Returns an array filled with event objects with the specified id. |
| [POST] | /children/:child_id/enrollments | Returns the event object with the specified id. Enrolls a student. |
| [PUT] | /children/enrollments/ | Returns the event object with the specified id. Updates a student's enrollments. (Not Implemented) |
| [DELETE] | /children/enrollments/:id | Returns the event object with the specified id. Unenrolls student from course. (Not Implemented) |
{
instructor_id: INCREMENT (primary key, auto-increments, generated by database),
instructor_name: STRING (required),
rating: INTEGER (required),
availability: STRING (optional),
bio: STRING (required),
profile_id: INTEGER (required, foreign key),
status: STRING (required, default: 'pending'),
approved_by: INTEGER (optional, foreign key, default: null, references admin_id),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /instructor/courses/ | Returns an array containing all course event objects belonging to the currently logged in instructor. |
{
program_id: INCREMENT (primary key, auto-increments, generated by database),
program_name: STRING (required, unique),
program_description: STRING (required),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /program/ | Returns an array filled with program objects. |
| [GET] | /program/:id | Returns the program object with the specified id. |
| [POST] | /program/ | Contains fields: program_name and program_description. Returns the newly created program object. |
| [PUT] | /program/:id | Updates the program with the specified id using data from the request body. Returns the modified program |
| [DELETE] | /program/:id | Removes the program with the specified id and returns deletion success message . |
{
course_id: INCREMENT (primary key, auto-increments, generated by database),
course_name: STRING (required),
course_description: STRING (required),
days_of_week: ARRAY[strings] (optional),
max_size: INTEGER (required),
min_age: INTEGER (required),
max_age: INTEGER (required),
instructor_id: INTEGER (required, foreign key),
program_id: INTEGER (required, foreign key),
start_time: TIME (required),
end_time: TIME (required),
start_date: DATE (required),
end_date: DATE (required),
location: STRING (required),
number_of_sessions: INTEGER (required),
instructor_name: STRING (required),
syllabus_link: STRING (required)
}
| Method | URL | Description |
|---|---|---|
| [GET] | /course | Returns an array containing all course objects |
| [GET] | /course/:course_id | Returns the course object with the specified course_id. |
| [POST] | /course | --needs to be fleshed out-- |
| [PUT] | /course/:course_id | Updates and returns the updated course object with the specified course_id. |
| [DELETE] | /course/:course_id | Deletes the course object with the specified course_id and returns a message containing the deleted course_id on successful deletion |
{
newsfeed_id: INCREMENT (primary key, auto-increments, generated by database),
title: STRING (required),
link: STRING (required),
description: STRING (required),
posted_at: TIMESTAMP (auto-generated),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /newsfeed/ | Returns an array containing all newsfeed objects. |
| [GET] | /newsfeed/:newsfeed_id/ | Returns the event object with the specified newsfeed_id. |
| [POST] | /newsfeed/ | Creates a new newsfeed object and returns the newly created newsfeed. |
| [PUT] | /newsfeed/:newsfeed_id | Updates the newsfeed object with the given newsfeed_id and returns the newly updated newsfeed |
| [DELETE] | /newsfeed/:newsfeed_id/ | Deletes the newsfeed object with the given newsfeed_id and returns the deleted newsfeed. |
{
conversation_id: INCREMENT (primary key, auto-increments, generated by database),
profile_id: INTEGER (required, foreign key),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /conversation_id/ | Returns an array filled with inbox event objects. |
| [GET] | /conversation_id/:profile_id/ | Retrieves an inbox with the specified inbox_id BUG(?): incorrectly labeled as profile_id in codebase rather than inbox_id |
| [POST] | /conversation_id/ | Creates an inbox and returns the newly created inbox. |
| [POST] | /conversation_id/messages/ | Returns the event object with the specified inbox_id. Sends a message. |
| [PUT] | /conversation_id/:profile_id | Returns an array filled with event objects with the specific profile_id. Updates an inbox. |
| [DELETE] | /conversation_id/:profile_id/ | Returns an array filled with event objects with the specific okta. Deletes an inbox. |
{
event_id: INCREMENT (primary key, auto-increments, generated by database),
date: STRING (required),
time: STRING (required),
type: STRING (required),
content: STRING (required),
details: STRING (required),
profile_id: INTEGER (required, foreign key, auto-generated by database),
}
| Method | URL | Description |
|---|---|---|
| [GET] | /calendar-events/ | Returns an array filled with calendar event objects. |
| [GET] | /calendar-events/user/ | Retrieves calendar event objects with the profile_id of logged in user |
| [GET] | /calendar-events/:event_id/ | Retrieves calendar event object with the specified event_id |
| [POST] | /calendar-events/ | Creates a calendar event and returns the newly created calendar event. |
| [PUT] | /calendar-events/:event_id | Updates and returns the updated calendar event object with the specific event_id. |
| [DELETE] | /calendar-events/:event_id/ | Deletes a calendar event and returns a success message on successful deletion. |
| Method | URL | Description |
|---|---|---|
| [GET] | /schedule/ | Returns an array filled with event objects. |
| [GET] | /schedule/:id/ | Returns the event object with the specified id. |
| [POST] | /schedule/ | Returns the event object with the specified id. Creates a schedule. |
| [POST] | /schedule/sessions/ | Returns the event object with the specified id. Creates a session. |
| [PUT] | /schedule/ | Returns the event object with the specified id. Updates specific schedule. |
| [DELETE] | /schedule/:id/ | Returns the event object with the specified id. Deletes specific schedule. |
{
super_admin_id: INCREMENT (primary key, auto-increments, generated by database),
profile_id: INTEGER (required, foreign key),
}
{
admin_id: INCREMENT (primary key, auto-increments, generated by database),
profile_id: INTEGER (required, foreign key),
}
{
messages_id: INCREMENT (primary key, auto-increments, generated by database),
sent_at: TIMESTAMP (auto-generated),
title: STRING (required),
read: BOOLEAN (required, default: false),
message: STRING (required),
sent_by_profile_id: INTEGER (required, foreign key),
inbox_id: INTEGER (required, foreign key,
}
Join Table: Programs instructors are approved to teach
{
instructors_program_types_id: INCREMENT (primary key, auto-increments, generated by database),
instructor_id: INTEGER (required, foreign key),
program_id: INTEGER (required, foreign key),
}
Join Table: Courses signed up for by children
{
enrollments_id: INCREMENT (primary key, auto-increments, generated by database),
completed: BOOLEAN (required, default: false),
child_id: INTEGER (required, foreign key),
course_id: INTEGER (required, foreign key),
}
{
resource_id: INCREMENT (primary key, auto-increments, generated by database),
resource: STRING (required),
description: STRING (optional),
task: BOOLEAN (required),
instructor_id: INTEGER (required, foreign key),
}
Visual Database Schema: https://dbdesigner.page.link/WTZRbVeTR7EzLvs86 *Currently Outdated
Loom Video PT1 Loom Video PT2 Loom Video PT3 Loom Video PT4