diff --git a/README.md b/README.md index 2a6bfa3a..78149e12 100644 --- a/README.md +++ b/README.md @@ -229,16 +229,13 @@ Contributions are what make the open source community such an amazing place to b 2. On the upper right, click "Develop" => "Build App". 3. On "OAuth", select "Create". 4. Name your App. -5. Choose "Account-level app" as the app type. +5. Choose "User-managed app" as the app type. 6. De-select the option to publish the app on the Zoom App Marketplace. 7. Click "Create". 8. Now copy the Client ID and Client Secret to your .env file into the `ZOOM_CLIENT_ID` and `ZOOM_CLIENT_SECRET` fields. 9. Set the Redirect URL for OAuth `/api/integrations/zoomvideo/callback` replacing CALENDSO URL with the URI at which your application runs. 10. Also add the redirect URL given above as a whitelist URL and enable "Subdomain check". Make sure, it says "saved" below the form. -11. You don't need to provide basic information about your app. Instead click at "Scopes" and then at "+ Add Scopes". Search for and check the following scopes: - 1. account:write:admin - 2. meeting:write:admin - 3. user:write:admin +11. You don't need to provide basic information about your app. Instead click at "Scopes" and then at "+ Add Scopes". On the left, click the category "Meeting" and check the scope `meeting:write`. 12. Click "Done". 13. You're good to go. Now you can easily add your Zoom integration in the Calendso settings. diff --git a/calendso.yaml b/calendso.yaml index d45d0f7d..6e3ee59a 100644 --- a/calendso.yaml +++ b/calendso.yaml @@ -8,7 +8,7 @@ info: license: name: MIT License url: https://opensource.org/licenses/MIT - version: 0.1.0 + version: 1.0.0 server: url: http://localhost:{port} description: Local Development Server @@ -28,6 +28,8 @@ tags: description: Manage integrations - name: User description: Manage the user's profile and settings + - name: Teams + description: Manage teams paths: /api/auth/signin: get: @@ -58,6 +60,12 @@ paths: summary: Handles signing out tags: - Authentication + /api/auth/signup: + post: + description: Creates a new user from an invitation. + summary: Create a new user + tags: + - Authentication /api/auth/session: get: description: Returns client-safe session object - or an empty object if there is no session. The contents of the session object that is returned are configurable with the session callback. @@ -82,12 +90,40 @@ paths: summary: Changes the password for the currently logged in account tags: - Authentication + /api/auth/forgot-password: + post: + description: Send a password reset email. + summary: Send a password reset email + tags: + - Authentication + /api/auth/reset-password: + post: + description: Reset a user's password with their password reset token. + summary: Reset a user's password + tags: + - Authentication /api/availability/:user: get: description: Gets the busy times for a particular user, by username. summary: Gets the busy times for a user tags: - Availability + /api/availability/calendar: + get: + description: Gets the user's selected calendars. + summary: Gets the user's selected calendars + tags: + - Availability + post: + description: Adds a selected calendar for the user. + summary: Adds a selected calendar for the user + tags: + - Availability + delete: + description: Removes a selected calendar for the user. + summary: Removes a selected calendar for the user + tags: + - Availability /api/availability/day: patch: description: Updates the start and end times for a user's availability. @@ -127,6 +163,12 @@ paths: summary: Creates a booking for a user tags: - Booking + /api/book/confirm: + post: + description: Accepts an opt-in booking. + summary: Accepts an opt-in booking + tags: + - Booking /api/integrations: get: description: Gets a list of the user's integrations. @@ -150,9 +192,72 @@ paths: summary: Gets and stores the OAuth token tags: - Integrations + /api/integrations/office365calendar/add: + get: + description: Gets the OAuth URL for a Microsoft 365/Outlook integration. + summary: Gets the OAuth URL + tags: + - Integrations + /api/integrations/office365calendar/callback: + post: + description: Gets and stores the OAuth token for a Microsoft 365/Outlook integration. + summary: Gets and stores the OAuth token + tags: + - Integrations + /api/integrations/zoomvideo/add: + get: + description: Gets the OAuth URL for a Zoom integration. + summary: Gets the OAuth URL + tags: + - Integrations + /api/integrations/zoomvideo/callback: + post: + description: Gets and stores the OAuth token for a Zoom integration. + summary: Gets and stores the OAuth token + tags: + - Integrations /api/user/profile: patch: description: Updates a user's profile. summary: Updates a user's profile tags: - User + /api/user/membership: + get: + description: Get a list of the teams the user has joined. + summary: Get the teams a user is joined to + tags: + - User + patch: + description: Accept team invitation + summary: Accept team invitation. + tags: + - User + delete: + description: Leave team or decline membership invite of current user + summary: Leave team or decline team invite. + tags: + - User + /api/:team: + delete: + description: Deletes a team + summary: Deletes a team + tags: + - Teams + /api/:team/invite: + post: + description: Invites someone to a team. + summary: Invites someone to a team + tags: + - Teams + /api/:team/membership: + get: + description: Lists the members of a team. + summary: Lists members of a team + tags: + - Teams + delete: + description: Cancels a membership (invite) to a team + summary: Cancels a membership + tags: + - Teams diff --git a/components/Dialog.tsx b/components/Dialog.tsx index b16416dd..08140d72 100644 --- a/components/Dialog.tsx +++ b/components/Dialog.tsx @@ -13,12 +13,25 @@ export function Dialog({ children, ...props }) { export const DialogContent = React.forwardRef(({ children, ...props }, forwardedRef) => ( {children} )); +export function DialogHeader({ title, subtitle }: { title: string; subtitle: string }) { + return ( +
+ +
+

{subtitle}

+
+
+ ); +} + DialogContent.displayName = "DialogContent"; export const DialogTrigger = DialogPrimitive.Trigger; diff --git a/components/DonateBanner.tsx b/components/DonateBanner.tsx index 03a932c9..41675d9a 100644 --- a/components/DonateBanner.tsx +++ b/components/DonateBanner.tsx @@ -1,9 +1,8 @@ import { GiftIcon } from "@heroicons/react/outline"; export default function DonateBanner() { - -if (location.hostname.endsWith(".calendso.com")) { -return null; -} + if (location.hostname.endsWith(".calendso.com")) { + return null; + } return ( <> @@ -17,21 +16,19 @@ return null;