Compare commits

...
1359 Commits
Author SHA1 Message Date
Alex van Andel 1b68cc139f v2.9.4
release.yml / release (push) Canceled after 0s
2023-05-26 12:48:01 +02:00
Crowdin Bot 084f56d052 New Crowdin translations by Github Action 2023-05-26 10:39:48 +00:00
Crowdin Bot 85caa247f8 New Crowdin translations by Github Action 2023-05-26 10:38:53 +00:00
Crowdin Bot 77904e0c55 New Crowdin translations by Github Action 2023-05-26 10:38:07 +00:00
Hariom Balhara 6f338b6fc7 fix: Broken 2 Factor Authentication (#9139)
* Fix 2 Factor Auth

* Update apps/web/pages/auth/login.tsx
2023-05-26 10:02:02 +00:00
e760122db6 change /ee to /commercial (#8948)
Co-authored-by: ygpta <25252636+yatendraguptaofficial@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-25 17:50:30 +00:00
zomars 8084a225e1 Removes jest from API 2023-05-25 15:22:06 -07:00
Omar López 98a6f8fc0e v2.9.3
release.yml / release (push) Canceled after 0s
2023-05-25 15:12:59 -07:00
zomars 5e13cc06a6 Prevents flooding the logs when querying custom logos 2023-05-25 14:55:44 -07:00
zomars 448792aafe Update yarn.lock 2023-05-25 11:53:58 -07:00
zomars 8795f41b78 Ignores API unit tests for now 2023-05-25 11:53:47 -07:00
Peer Richelsen a93e1b2881 Update README.md 2023-05-25 19:33:10 +01:00
zomars 47488f5fff Moved API files to correct dir 2023-05-25 11:29:10 -07:00
zomars ea32a698a3 Merge branch 'main' into open-source-public-api 2023-05-25 11:25:53 -07:00
Crowdin Bot d939cf20ec New Crowdin translations by Github Action 2023-05-25 16:54:06 +00:00
Crowdin Bot 417050596a New Crowdin translations by Github Action 2023-05-25 16:36:54 +00:00
Crowdin Bot 08604a9008 New Crowdin translations by Github Action 2023-05-25 16:27:51 +00:00
Crowdin Bot f3fd74dd6b New Crowdin translations by Github Action 2023-05-25 16:22:26 +00:00
Crowdin Bot e2a811a967 New Crowdin translations by Github Action 2023-05-25 16:18:23 +00:00
Crowdin Bot 9042bba312 New Crowdin translations by Github Action 2023-05-25 16:16:02 +00:00
Crowdin Bot 0f0943066e New Crowdin translations by Github Action 2023-05-25 16:15:05 +00:00
Nafees Nazik abc9dfdaf4 fix: translate (#9108) 2023-05-25 15:50:56 +00:00
Crowdin Bot bbf93a7435 New Crowdin translations by Github Action 2023-05-25 15:49:09 +00:00
Peer Richelsen cff134efc6 chore: delete code owners (#9112)
its causing more harm than good. We ideally wanna tag people based on a per-PR basis not pure file-basis

we can bring it back later
2023-05-25 12:48:11 -03:00
Crowdin Bot 4f9c66f41c New Crowdin translations by Github Action 2023-05-25 15:26:21 +00:00
Crowdin Bot 2bf9a3bb02 New Crowdin translations by Github Action 2023-05-25 15:25:30 +00:00
Praveen Kumar DandPraveen Kumar 4631805924 fix: render action button in the card only when actionButton.child is present (#9064)
Co-authored-by: Praveen Kumar <praveenkumar@Praveens-MacBook-Pro.local>
2023-05-25 14:58:44 +00:00
Peer Richelsen d6c7362162 removing commercial language from readme 2023-05-25 12:22:18 +01:00
Peer Richelsen b9116f69ae removing commercial license in favour of AGPLv3 2023-05-25 12:18:37 +01:00
Crowdin Bot f51823c24b New Crowdin translations by Github Action 2023-05-25 09:29:55 +00:00
ea3017cbf0 fix: checkbox accessibility issues (#9095)
* fix: checkbox accessibility

* chore: pass id only if rest.id is not present

---------

Co-authored-by: Praveen Kumar <praveenkumar@Praveens-MacBook-Pro.local>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-25 09:05:10 +00:00
734382b5b3 refactor: Moving from jest to vitest (#9035)
* Moving to vitest

* Rearranging test

* Fixing prettier linting

* Reverting launch.json

* Adjustments

* Merged with main and regenerated lockfile

* Fixing tests for API

* Yarn updated, docs is gone

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-24 23:35:44 +00:00
ae471ce86a fix: user full name not wrapping on navbar (#8978)
* fix: user full name not wrapping on navbar

* fix: change height of tab title container in settings page

* feat: truncate user full name instead of wrapping

* feat: truncate every section title on settings sidebar

---------

Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-24 23:13:18 +00:00
zomars dc5d5f8119 Update CODEOWNERS 2023-05-24 16:29:04 -07:00
zomars f7e963fba1 Update CODEOWNERS 2023-05-24 16:09:47 -07:00
Peer RichelsenandSyed Ali Shahbaz a59450a220 chore: Delete apps/docs directory (#9061)
* fixed timezone dropdown

* Delete apps/docs directory

Docs have moved to cal.com/docs

* nit

---------

Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
2023-05-24 19:51:24 +00:00
Carina WollendorferandCarinaWolli cc2c04e52b fix is premium check (#9101)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-24 18:24:12 +00:00
NaaajiiandPeer Richelsen 905d24e390 fix: translation for add an override (#8927)
* fix(translation): translation for add an override

fixes #8914

* fixup: remove extra { from file

* chore: remove other translations

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-24 17:26:51 +00:00
Crowdin Bot 1134e771a8 New Crowdin translations by Github Action 2023-05-24 13:48:54 +00:00
Peer Richelsen 8715de738d Delete availability.mdx 2023-05-24 14:47:56 +01:00
Crowdin Bot 32a0da094a New Crowdin translations by Github Action 2023-05-24 09:53:40 +00:00
3c7de697cc Changed 1 Seats available to 1 Seat available for all languages (#9068)
* Changed 1 Seat Available

* Update on changing 1 seat available

* fix: lint errors and remove yarn.lock

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* Update on changing 1 seat available

* Updated count of keys to perfectly match the number of available seats

* Updated count of keys to perfectly match the number of available seats

* Update AvailableTimes.tsx

* Update apps/web/components/booking/AvailableTimes.tsx

* Update packages/features/bookings/components/AvailableTimes.tsx

* Formatting fixes

* Update AvailableTimes.tsx

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-24 09:29:49 +00:00
Crowdin Bot 49fad1dfc2 New Crowdin translations by Github Action 2023-05-24 09:00:46 +00:00
8fbaa4144c fixed spelling error in availability.mdx (#9002)
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-24 08:34:04 +00:00
d63e7372cb [Feat] Bulk Invite of Users + Google Workspace (#8969)
* Base UI work

* Bulk invite users

* WIP workspace oauth implementation

* Seperate components - add existing gcal check

* Move callback session to getServerSession

* Implementation of state redirect back to teams on login

* Add callback to populate text field

* Change error message

* Redirect from callback and open modal

* Fix bulk translations

* Fix translations for google button

* Delete Query

* Feature flag this

* Update packages/trpc/server/routers/viewer/teams/inviteMember.handler.ts

* Check if Gcal in installed globally

* Add new router

* Add missing [trpc] route

* Feedback

* Update packages/trpc/server/routers/viewer/googleWorkspace/googleWorkspace.handler.ts

* Typefixes

* More typefixes

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-05-24 01:01:31 +00:00
Crowdin Bot 3671f9dfed New Crowdin translations by Github Action 2023-05-23 23:25:30 +00:00
dae8220404 Delete .infisical.json (#9050)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 23:05:23 +00:00
zomars c610fad11e Open source our public API 2023-05-23 13:29:10 -07:00
zomars fa131e0340 Updates git init scripts 2023-05-23 13:18:27 -07:00
zomars 064c0306b5 Move all files into apps/api directory 2023-05-23 13:08:56 -07:00
Udit TakkarandJoe Au-Yeung 79a4778c02 fix: add uid in evt (#9066)
* fix: add uid in evt

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: type error

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* chore: fix type error

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: remove false from description

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-05-23 18:19:52 +00:00
Crowdin Bot 044570123f New Crowdin translations by Github Action 2023-05-23 18:27:14 +00:00
Jeroen Reumkensandalannnc 8c7166242b CAL-1630: Added reserving of timeslot in new booker (#8923)
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 18:01:20 +00:00
Peer RichelsenandBailey Pumfleet ddee3e8bf6 Update Credits.tsx (#9062)
the license check never seemed to work -- removing

Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-05-23 10:42:01 +00:00
Parvat Raj Singh c96cbd7a9d ✨feat: Implement Zod Validation for Email and Password in auth/login … (#9020)
* ✨feat: Implement Zod Validation for Email and Password in auth/login Page

* fix: use i18n for error message

* Update: added novalidate to form
2023-05-23 10:09:32 +00:00
8d210929b1 fixes timezone of even date variable (#9059)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-23 09:58:55 +00:00
jemiluv8 49757010ba add country-flag-icons to our public folder to be used instead of the external domain when loading country flags for react-phone-number-input (#8959) 2023-05-23 08:56:24 +00:00
12cea947ec remove isPro check (#8967)
* remove isPro check

* remove isPro check

* checkout yarn.lock from main

* checkout yarn.lock from main

* Update _getAdd.ts

* Update common.json

* Revert the revert that got merged in main already

---------

Co-authored-by: rkreddy99 <rreddy@e2clouds.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-23 08:44:57 +00:00
6aae976a5f Add core team to UI ownership (#9058)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-23 09:51:33 +01:00
Doug Andradeandalannnc 3ae193e362 fixed typos on faq.mdx (#9003)
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 09:44:41 +01:00
Hariom Balharaandalannnc ec43f3f2c0 Forward query params from Team Profile page (#9057)
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 08:18:51 +00:00
Hariom Balhara e20cb4a999 Fix: Embed - branding CSS variables not configurable. (#9026)
* Fix bug in overriding css vars

* Fix CSS specificity issues
2023-05-23 08:16:56 +00:00
Aashish Upadhyayandalannnc d31648e37a fix Former time in wrong time zone (Rescheduling) (#9039)
* fix Former time in wrong time zone (Rescheduling)

* eslint fixed

* yarn.lock push

* little bit of code formatting

* [eslint: fix] missing semi-colon

* linting errors fixed

* Update packages/lib/parse-dates.ts

* returning yarn lock to main

* Refactor constant and functions

* Consider time format in new function

* Fix 24 time format with am/pm

---------

Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 07:50:47 +00:00
Shubham kumar 5e1eb7bd72 fixes:keyboard-navigation-8887' (#9006) 2023-05-23 07:39:56 +00:00
adc2f525d2 imageSrc field is commented for solving this issue and can be removed (#9045)
* imageSrc field is commented for solving this issue and can be removed

* Update core.ts - remove the imageSrc field

* Update packages/app-store-cli/src/core.ts

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-23 06:51:17 +00:00
Omar LópezandJoe Au-Yeung 942c018bd9 Fallbacks custom logo if no team was found (#9051)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-05-23 06:39:24 +00:00
Crowdin Bot 51cc956a8a New Crowdin translations by Github Action 2023-05-23 06:55:52 +00:00
Carina WollendorferandCarinaWolli a6b96c9270 Follow-up team webhooks (#9052)
* fix subsriber url already defined error when editing webhook

* don't show form submitted for team and event type webhooks

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-23 06:26:09 +00:00
Crowdin Bot d469f1bc39 New Crowdin translations by Github Action 2023-05-23 01:53:04 +00:00
a371cd6083 [CAL-1410] Tokens update - Lightmode issues (#8598)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-23 01:23:23 +00:00
84efda07e9 Team webhooks (#8917)
* allow event type specific webhooks for all event types

* first version of team webhooks

* add empty view

* design fixes when no teams + invalidate query on delete/update

* linke to new webhooks page with teamId in query

* make one button with dropdown instead of a button for every team

* add subtitle to dropdown

* add avatar fallback

* authorization when editing webhook

* fix event type webhooks

* fix authorization for delete handler

* code clean up

* fix disabled switch

* add migration

* fix subscriberUrlReservered function and fix authorization

* fix type error

* fix type error

* fix switch not updating

* make sure webhooks are triggered for the correct even types

* code clean up

* only show teams were user has write access

* make webhooks read-only for members

* fix comment

* fix type error

* fix webhook tests for team event types

* implement feedback

* code clean up from feedback

* code clean up (feedback)

* throw error if param missing in subscriberUrlReservered

* handle null/undefined values in getWebhooks itself

* better variable naming

* better check if webhook is readonly

* create assertPartOfTeamWithRequiredAccessLevel to remove duplicate code

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-23 01:15:29 +00:00
Alex van Andel b83ee2d57d v2.9.2
release.yml / release (push) Canceled after 0s
2023-05-23 02:32:41 +02:00
Shivam KalraandPeer Richelsen 5f39bbe730 feat: mirotalk app-store setup (#9010)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-23 00:00:47 +00:00
Peer Richelsen cf3d8cb4bb fixed password input widht (#9049) 2023-05-22 23:30:54 +00:00
fbe0018d01 fix: cancelled booking doesn't show the booker (#8203)
* fix: remove attendee deletion

* chore: add test id

* test: add e2e

* Fix data-testid placeholder

* Fix prettier error

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-22 23:15:06 +00:00
6586ed4d87 change bg of date-input field (#9043)
Co-authored-by: rkreddy99 <rreddy@e2clouds.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-22 23:03:13 +00:00
Nafees Nazik 81e57afcf4 fix: user undefined (#9022) 2023-05-22 23:02:54 +00:00
Alex van Andel 5cc530593b Update lockfile
release.yml / release (push) Canceled after 0s
2023-05-23 00:26:22 +02:00
Nafees Nazik 4111f78431 feat: make branding hideable in the new booker (#9033)
* feat: make branding hideable

* fix: typo
2023-05-22 21:54:43 +00:00
Udit Takkar def80ea4cf fix: reject icon color (#9031)
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-22 21:53:37 +00:00
2fc4676f6d fix: [CAL-1726] UI: seats input focus too wide (#8999)
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-22 18:02:49 +00:00
Peer Richelsen 318bafaab8 Update LICENSE 2023-05-22 18:56:17 +01:00
Peer Richelsen fc10c29037 Update LICENSE 2023-05-22 18:54:09 +01:00
Riyan MohammadandUdit Takkar ccb7b1f9ac Optimize conditional rendering (#9009)
* Optimize conditional rendering

Declared a variable called isAdmin. The check session.data?.user.role === "ADMIN" is repeated multiple times. You can store this value in a variable to avoid redundant checks.

* Update AppsLayout.tsx

Removed extra line space to match prettier format

* fix: lint error

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-22 13:51:22 +00:00
Peer Richelsen c6c6544f50 Update package.json 2023-05-22 14:21:25 +01:00
Hariom Balhara 8a6b93a747 Fix: Embed - Auto theme configured using embed config doesn't work when there is non-system theme configured in appearance. (#9030)
* Differentiate b/w auto theme and unspecified theme

* Fix TS
2023-05-22 11:17:56 +00:00
alannnc ff6c6ccec0 Replacing bookingAttendees for bookingUid (#8997) 2023-05-22 09:30:24 +00:00
c8db177f7d fix: team member search error (#8982)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
2023-05-22 09:29:28 +00:00
Nafees Nazikandalannnc 8871e1eb21 fix: wrong locale in attendee email ics (#8945)
* fix: pass attendee translator function

* fix: type

* fix: t

* fix: t

---------

Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-22 06:14:44 +00:00
Shivam KalraandPeer Richelsen 92b2d57871 feat: 8x8 app-store setup (#9015)
* feat: 8x8 app-store setup

* fix: regex remove optional protocol, -imageSrc

* Update packages/app-store/eightxeight/config.json

* Update packages/app-store/eightxeight/config.json

---------

Co-authored-by: Peer Richelsen <peer@cal.com>
2023-05-21 18:21:30 +00:00
Alex van Andel 77623c72c5 Bump lockfile 2023-05-20 12:52:55 +02:00
3239976e18 Fix: Profile update refresh issues (#8570)
* profile update refresh fixes

* updated avatar based on logged in user

* lint & types check fixes

* fixed settings layout to fetch udpated session

* pushing the 8448 changes to separate PR

* removing hook not required

* Removed extra code

---------

Co-authored-by: Keyur Patel <keyur.patel@difx.io>
Co-authored-by: Alan <alannnc@gmail.com>
2023-05-20 00:37:58 +00:00
611939ffe8 remove todo to issue action (#8903)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-19 22:53:11 +00:00
1b8ecbe449 [CAL-1008] Fix 'All Bookings' filter not getting selected after coming from 'Your Bookings' (#8902)
* [CAL-1008] Fix 'All Bookings' filter not getting selected after coming from 'Your Bookings'

* Remove optional param from removeAllQueryParams function

* Remove setQuery from the extraction

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-19 22:50:57 +00:00
cd4882429d fix: impersonation switch active state (#8924)
* fix: switch

* fix: checked

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-19 21:23:12 +00:00
zomars 4fd2d80637 Linting 2023-05-19 14:07:25 -07:00
zomars 8b4ce91fef Add missing production condition for deploy script 2023-05-19 13:37:22 -07:00
a343d934fe Replacement PR for closed PR #8960 (#8980)
* fix focus ring on number of seats

* Adding yarn.lock back

* checkout yarn.lock from main

---------

Co-authored-by: Sean Brydon <sean@cal.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-19 20:30:30 +00:00
Hariom Balharaandalannnc 933cc739bd Add config support in floatingButton api (#8986)
Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-19 20:10:19 +00:00
Sanu Dutta c7c75ff4d3 enable search in select and adding border bottom color (#8988)
* searchable select

* divider color subtle
2023-05-19 19:43:01 +00:00
Alex van Andel 39a7a2240f Remove modify-response middleware (it's huge and redundant) (#266)
Remove custom types and now redundant express middlware.
2023-05-19 20:00:04 +02:00
Alex van Andel b7e65e31d6 Fix API types, detach from main repo 2023-05-19 19:38:19 +02:00
Kamalika 41f1920a7a Borders Fixed with border-subtle (#8990) 2023-05-19 16:43:41 +00:00
Carina WollendorferandCarinaWolli e4836ea8f3 make sure to also trigger when cancelled is null (#8992)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-19 14:41:44 +00:00
Hariom Balhara bfa30aa504 Implement UpgradeTip in App install flow (#8968) 2023-05-19 09:52:17 +00:00
Carina WollendorferandCarinaWolli b36043b637 Fixes SMS workflow actions for premium users (#8983)
* fix sms actions for users with premium user names

* code clean up

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-19 08:10:11 +00:00
ASHOK-SINGH 75026289fd Fix- Calendar override with the wrong dates and time (#8936) 2023-05-19 07:22:26 +00:00
Parth Sharma 80649c9f1a fix height issue (#8973) 2023-05-19 06:46:06 +00:00
Isaiah Hamilton 7dd75afb63 fix button width (#8979) 2023-05-19 06:25:44 +00:00
Crowdin Bot f66e4aeeed New Crowdin translations by Github Action 2023-05-19 00:45:20 +00:00
Rama Krishna Reddyandrkreddy99 8225e61710 fix redirect after adding ping.gg (#8972)
Co-authored-by: rkreddy99 <rreddy@e2clouds.com>
2023-05-19 00:22:07 +00:00
Jeroen Reumkens 175fc4fcf3 CAL-1673: Use dark/light colors from user profile settings in booker (#8905)
* CAL-1673: Use dark/light colors from user profile settings in booker

* Use system theme for dynamic booking, instead of theme set by first user.
2023-05-18 06:16:51 +00:00
shaharyarshamshiandJoe Au-Yeung f20a5df322 Guide to setup enviroment variable added in contributing mardown file (#8911)
* Guide to setup enviroment variable added in contributing mardown file

* linting error

* Update CONTRIBUTING.md

* linting error

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-05-17 15:11:28 -07:00
62544931b2 updated language of raycast instructions (#8908)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-17 19:10:25 +01:00
Alex van Andel ff69481cb9 Keep next v13.2 for now 2023-05-17 19:40:27 +02:00
Alex van Andel f6ad1d6ed5 Bump lockfile 2023-05-17 16:25:03 +02:00
d22b1072b5 change datepicker styles to fix dark mode issue (#8886)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-17 13:12:52 +00:00
4b356dd937 chore: extended slugify function (#8740)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
2023-05-17 13:05:14 +00:00
1f51199a7b issue#8601: fix (#8713)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
2023-05-17 12:57:12 +00:00
Crowdin Bot b80a631998 New Crowdin translations by Github Action 2023-05-17 13:15:49 +00:00
Crowdin Bot bef4422080 New Crowdin translations by Github Action 2023-05-17 13:14:27 +00:00
cfd1a72c64 [CAL-1545] replace heroicons with lucide.dev (#8599)
* fix linting

* [CAL-1545] replace heroicons with lucide.dev

* [CAL-1545] replace heroicons with lucide.dev

* [CAL-1545] replace heroicons with lucide.dev

---------

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Efraín Rochín <roae.85@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-17 12:47:44 +00:00
23b3a6661c Add feature to offset start times for event types (#8506)
* Add offsetStart column to EventType

* Update buildSlots to support offset start times

* Add "Offset Start Time" to edit event types form

* Fix offset events not appearing on availability selector

* Guard against negative offsetStart values

* Lock offsetStart field for managed event types

* EventLimits UI tweaks for "Offset start times"

* EventLimits UI: Fix offsetStart preview not always updating

* Remove unnecessary ctx from getSchedule.test.ts

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-17 11:56:55 +00:00
Hariom Balhara b8b6c48d7d Improvements: Prefill Routing Forms and connect prefilling with Booking Form (#8780)
* Support prefilling routing form and prefilling Booking form through routing form

* Use Option Value as is instead of lowercasing

* Fix prefill validation issue

* Add prefill tests

* Fix Routing Form tests

* Small fix
2023-05-17 08:47:48 +00:00
Crowdin Bot 81655f9988 New Crowdin translations by Github Action 2023-05-17 08:47:19 +00:00
Nafees Nazik ff74822c48 Fix: locale and time format in attendee email (#8941)
* feat: add locale prop

* feat: add locale prop

* feat: add locale prop

* fix: time format
2023-05-17 08:17:09 +00:00
Jeroen Reumkens 8ec178debd CAL-1591: Remember form values in new booker form when user navigates back and forth between timeslots and form (#8920) 2023-05-16 20:34:15 +00:00
Hariom BalharaandOmar López f881061d8d Fully handle booking pages with conflicting themes being opened together (#8921)
* Handle booking pages with conflicting themes being opened together

* Add comments

---------

Co-authored-by: Omar López <zomars@me.com>
2023-05-16 19:41:47 +00:00
Crowdin Bot 2525559d6b New Crowdin translations by Github Action 2023-05-16 11:27:38 +00:00
Carina WollendorferandCarinaWolli 38fb7a3f77 fix locked toggle (#8926)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-16 11:04:03 +00:00
Alex van Andel 08956e54c5 Fix yarn.lock (missing lockfile commit in #8769) 2023-05-16 00:51:24 +02:00
ea65a2a27e fix: add exp in /meeting-tokens (#8869)
* fix: add exp in /meeting-tokens

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* hijacking this PR to add a NIT change lol

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-15 20:15:05 +00:00
Crowdin Bot 0d45cfb7ea New Crowdin translations by Github Action
release.yml / release (push) Canceled after 0s
2023-05-15 16:13:08 +00:00
Alex van Andel a4fc25e260 v2.9.0 2023-05-15 18:12:07 +02:00
Jeroen ReumkensandAlex van Andel 796c932311 CAL-1550: Align form submit button of new booker to bottom (#8896)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-15 15:02:16 +00:00
Jeroen Reumkens 4137f63ec7 CAL-1664: Improve flash of toggle group when rerendering (#8900)
* CAL-1664: Improve flash of toggle group when rerendering, because active element moves into position.

* Added back newline
2023-05-15 14:38:02 +00:00
Jeroen Reumkens 2147cc82a5 CAL-1557: Improve timeformat selector alignment in new booker (#8898) 2023-05-15 14:37:23 +00:00
Crowdin Bot 40e646e9a4 New Crowdin translations by Github Action 2023-05-15 14:22:54 +00:00
cb2225259c Enabling workflows for managed events (#8446)
* Enabling workflows for managed events

* Disabling fields for workflow when readonly

* Disabling event type workflows if readonly

* Installing auth app

* Reverting yarn.lock

* Again reverting yarn

* Showing user workflows in managed event type

* Reusing existing code to show all workflows

* Further extending workflow support

* Added unit test

* Fixing workflow assignment

* Fixing locked workflows for children MET

* Update packages/features/ee/workflows/components/EventWorkflowsTab.tsx

Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>

* Personal workflows fix, matching count numbers

* Fixing menu items for managed event types

* Fixing type checks

* Fixing empty activeOn select

* Fixing unit test

* handling active workflows for MET

* Fixing MET slug nit

* Embed option in action restored for non-MET

* Correcting mobile view when hidden

* More adjustments

* fix sms reminder field for children

* remove console.log

---------

Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-15 13:56:26 +00:00
372cd94d9f Gitpod setup And Bio Detail Overflow Bug Fixed (#8824)
* feat: Add Gitpod setup and update README.md

* fix: Fix overflow issue in bio details with word-wrap property

* minor changes in gitpod script

* updated gitpod url for cal

* gitpod url fixed in markdown

* fix: lint errors

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* added vscode extensions and  enabled prebuilds to reduce waiting time

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-15 13:18:31 +00:00
Vedant Jainandsean-brydon c7c282f30f [fix] : select options marginal space (#8892)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-15 10:25:33 +00:00
959488910f fix: strip markdown from meta description tag in users page (#8769)
* fix: remove markdown validation

* feat: use markdown stripped bio

* fix: use remove markdown

* fix: type errors

---------

Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-15 07:44:23 +00:00
Hariom Balhara 0ca0cc3265 Add eventTypeSelected event (#8894) 2023-05-15 06:30:08 +00:00
69bc12187e Fixed dark mode bugs in the availability section (#8630)
* Fixed dark mode bugs in the availability section

* Reverted the tooltip change for delete button

* Updated tooltip of delete button conditionally based on isLastSchedule flag

* fix: disabled button state

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-14 17:46:19 +00:00
Abdurrahman RajabandCarina Wollendorfer 5e772530b2 Feat: select all days in schedule (#8796)
* feat: add select all

* fix: fix deleted days

* chore: add i18n select all

* chore: check all days when select all

* chore: use calcom checkbox

---------

Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
2023-05-14 16:00:55 +00:00
Peer Richelsen 3088b1174a only border top for bottom nav (#8882) 2023-05-14 11:06:10 +00:00
Santosh Kuchetti fadf12b2bd Star not centered issue #8519 (#8872)
* modifications for the issues #8159 are done

* modifications for the issue #8519 are made
2023-05-13 09:51:16 +00:00
sean-brydon c81f30b092 Fix hidden label breaking layout (#8867) 2023-05-13 09:50:00 +00:00
Hariom Balharaandzomars 476119d627 Add changesets/cli to release embed (#8126)
* Add dep versions

* Release new version for embeds

* Add prepublish

* Use prepare script which works with both npm and yarn

* Add changesets correctly

* Add embed publishing command

---------

Co-authored-by: zomars <zomars@me.com>
2023-05-13 08:22:31 +00:00
Crowdin Bot 040f03a9b5 New Crowdin translations by Github Action 2023-05-13 04:31:26 +00:00
Shivang SharmaandOmar López b552bf6956 Fix: #8528 Moved the data checks to superRefine (#8749)
* Fix: #8528 Moved the data checks to superRefine

* Resolved lint isseu

* Updated to parse from safeParse

* added new line

---------

Co-authored-by: Omar López <zomars@me.com>
2023-05-13 04:11:12 +00:00
82d3c4370d cancel and schedule reminders when workflow activated/deactivated on event type (#8757)
* add switches to advanced even type settings

* only show switches when workflow is enabled

* check in event type update handler if user is allowed to disable standard emails

* don't send emails if disabled

* remove  reminders when workflow is deactivated on event type

* make sure emails can't be disabled if no workflow exist

* send workflow emails to all attendees

* code clean up

* add translations

* always send to all attendees when scheduling reminders

* schedule reminders if event type gets activated on workflow

* schedule reminders (commented code)

* change text

* schedule reminders for all attendees not just first one

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
2023-05-12 17:31:01 +00:00
492b4d3e97 Refactor/readme.md (#8723)
* Update README.md 

Removed 
- Heroku DB setup section (since it's no longer free). 
Added
- Section for setting up local DB.
- Some other minor details.

* Minor grammer fixes

---------

Co-authored-by: vaibhav bisht <vaibhav@aus.co.in>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-12 10:39:03 -06:00
0ae319d206 a11y: Exit the lexical Editor and button a11y on tab index (#8139)
* a11y: Exit the lexical Editor and button a11y on tab index

Signed-off-by: GurkiranSingh <gurkiransinghk@gmail.com>

* chore: Updated lexical to v0.9.0

Signed-off-by: GurkiranSingh <gurkiransinghk@gmail.com>

* chore: Added ErrorBoundary for Lexical RichTextPlugin

Signed-off-by: GurkiranSingh <gurkiransinghk@gmail.com>

* chore: yarn install changes

Signed-off-by: GurkiranSingh <gurkiransinghk@gmail.com>

* fix: merge conflicts

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* Update yarn.lock

---------

Signed-off-by: GurkiranSingh <gurkiransinghk@gmail.com>
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-05-12 10:28:14 -06:00
Hariom Balhara 749311be2a Pull latest main in every submodule (#8537)
* Update to latest main so that yarn.lock is always correct

* Update git-setup.sh
2023-05-12 10:20:32 -06:00
Crowdin Bot 3cce4e5009 New Crowdin translations by Github Action 2023-05-12 15:46:20 +00:00
Mendy Landa 341f82ccb9 chore: removed duplicate value in className @ Tooltip.tsx (#8865) 2023-05-12 09:45:32 -06:00
Pranjal Goyal e028a339f5 Adding icon.svg and renaming config file (#8859) 2023-05-12 12:57:09 +00:00
sean-brydonandBailey Pumfleet c55e432bc3 Feat/team invite flow (#8804)
* completeOnboarding drives invite flow changes

* Username prefil - force getting started when acc doesnt exist

* Change subtitle text and unique error on multiple invites

* User exists and no password set - generate signup link still

* Fix callback param

* Update packages/trpc/server/routers/viewer/teams/inviteMember.handler.ts

* Fix spacing

* Add password hints

* Fix translations

---------

Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-05-12 12:52:09 +00:00
Syed Ali ShahbazandAlex van Andel 98e0a97c47 SWAGGER: Adds query example and response body example to /Availability (#264)
This PR adds query examples and response body example to /Availability

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-12 14:46:06 +02:00
Hariom BalharaandJoe Au-Yeung f47c3cd538 Fix/ Routing Form Routes (#8827)
* Reuse split routes

* Add cache

* Update formMutation.handler.ts

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-05-12 12:01:05 +00:00
Nafees Nazik 4b70a20941 fix: overflow (#8858) 2023-05-12 10:55:11 +00:00
Hariom Balhara c873b83965 Unstage enums file (#8836) 2023-05-12 05:02:42 +00:00
Hariom Balhara ff859737ec Improvement/AppStore: Remove seeding from app-store-cli. (#8486)
* Remove seeding from cli

* Self review fixes

* Fix TS error
2023-05-12 04:59:15 +00:00
AnsariandPeer Richelsen 607ef71f9f fix: teams upgrade banner on smaller screens (#8786)
* background image fix 📲

* object image position change 🖼

* Duplicate Deleted Field 🎭

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-12 00:23:11 +00:00
24dd4002fa fixed color of status bar for pwa (#8583)
* fixed color of status bar for pwa

* Apply suggestions from code review

* Apply suggestions from code review

---------

Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-11 23:50:11 +00:00
Praveen DiasandJoe Au-Yeung 078c9ddca5 Improved API key error message for SendGrid setup page (#8847)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-05-11 23:04:10 +00:00
alannnc b44e5a7aae Fix no video reference on google-meet (#8849) 2023-05-11 22:49:10 +00:00
Alex van Andel 4c02bb960b Remove sessionGetter as it's deprecated (#265)
Fixes API build, error introduced in
https://github.com/calcom/cal.com/pull/8419
2023-05-12 00:22:24 +02:00
4374da08e2 #8701 CAL-1621 new booker dialog grow in height (#8774)
* increase scrollable height

* Fix react-select version - import esm error

* Increase booking form modal height

* Update packages/features/bookings/Booker/components/BookEventForm/BookEventForm.tsx

* Match design specs

* nit change

* Trying to fix type errors

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-11 17:31:51 +00:00
Crowdin Bot 98b531e6b5 New Crowdin translations by Github Action 2023-05-11 16:26:01 +00:00
74414db760 feat: add meta and seo tags for new booker component (#8697)
* feat: add hidden to select

* feat: add hide branding to store

* fix: remove branding from store

* feat: prefetch data

* feat: use meta tags

* fix: remove branding from store

* fix: prefetching

* refactor: useEvent hook

* fix: type

* fix :booker seo

* fix: type error

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
2023-05-11 16:02:13 +00:00
sean-brydon bdf3e34ea1 Feat/onboarding video step connection (#8838)
* UI work - WIP scrollable area

* Add translations - refactor some components

* Add installed text

* Disable if there is no currently installed

* Extract loader

* Fix conditional

* Fix E2E

* fix typo
2023-05-11 13:20:39 +00:00
Jeroen Reumkens 738e0f3e50 CAL-1553: Show dates for multi occurence event instead of input to change occurences, during booking step. Also make form less wide and meta a bit wider during booker step (in small view only), so form looks better and dates fit on a single line for the multiple occurences. When split over multiple lines they would otherwise take up a lot of unneccesary space. (#8834) 2023-05-11 11:51:41 +00:00
Jeroen Reumkens 16ae19abdb CAL-1624: Timezone select layout improvements when typing (#8832) 2023-05-11 08:19:26 +00:00
a2e18ae9ba deleted fields in duplicate form 🎭 (#8808)
* deleted fields in duplicate form  🎭

* Fixed duplicate deleted fields

* Update packages/app-store/routing-forms/trpc/_router.ts

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-11 07:42:37 +00:00
e2cfd0d1d1 Webex integration (#7651)
* start webex app creation

* webex integration wip

* fix lint errors

* fix lint errors

* add webex env vars in appStore.example

* webex app wip

* fix lint errors

* edit webex oauth scopes

* add location in webex app config

* add site url placeholder and regex in webex config location

* debug translateEvent

* fix utc formatting for event start time, add test boilerplate for webex, add envs

* fix location and datetime formatting

* get correct videoCredentials for deleteMeeting

* Move webex specific readme content to webex README

* Fix app not visible in app-store

* Delete setup route

* add webex icon

* delete prev icon

* webex api fix

* add app screenshots

* Revert tests changes as they dont run

* Use config instead of hardcoding vales

* Update README

* Remove all env variables related to WEBEX app. They can be added through settings->admin->apps interface

* update from origin

* fix icon path

* update webex readme

* Update yarn.lock

* update webex readme

* Remove unnecessary URL from webex

* revert changes in cancel booking handler

* simply webex zod schemas, logs for debugging

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-11 07:14:32 +00:00
Crowdin Bot 067b77faf1 New Crowdin translations by Github Action 2023-05-11 04:07:21 +00:00
Ashray ShettyandAlex van Andel 740c01ac29 align text "Date overrides" with corresponding svg (#8819)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-11 03:45:14 +00:00
asadath1395andBailey Pumfleet 97cfd1ffa7 Fix delete icon background color in availability (#8810)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-05-10 15:15:13 +00:00
Jithil P Ponnan a7b2cfc90f fix: cal-1647 alignment issues (#8817) 2023-05-10 15:05:46 +00:00
d067b0782a feat: add RECORDING_READY webhook (#8277)
* feat: add RECORDING_READY webhook

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: type errors and improvements

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-10 14:56:31 +00:00
203a36e2b5 Make Jitsi Host configurable (#8636)
* Closes #1847 - adds an environment variable `JITSI_HOST_URL` to configure the Host URL for self hosted instances

* Closes #1847 - adds an environment variable `JITSI_HOST_URL` to configure the Host URL for self hosted instances

* Closes #1847 - adds an environment variable `JITSI_HOST_URL` to configure the Host URL for self hosted instances

* Replace Tab with spaces

* Add JITSI_HOST_URL env

* Remote Tabs for Spaces

* Support jitsi_host key

* Remove ENV, add Interface jitsi host URL and fallback

* Fix linting issues

* Clean code

* add missing await

* Add configurable meeting slug

* Refactor to jitsiHost, remove slug generator

* zod default doesnt work right now. So remove it

---------

Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-10 14:46:14 +00:00
Hariom Balhara f5a38c3f89 Add missing zoho-bigin import (#8798) 2023-05-10 14:37:16 +00:00
Keith Williams f179c23cc5 v2.8.13
release.yml / release (push) Canceled after 0s
2023-05-10 11:26:52 -03:00
Jeroen Reumkens 9f83885e8c CAL-1577: Improved input addon styles. (#8803) 2023-05-10 08:59:32 +00:00
Syed Ali Shahbaz 8ffb5529e6 Use user profile timezone from DB as fallback for CalDAV all-day events (#8755)
* adds timezone pull from user profile in DB

* minor fixes

* fixes promise return type

* comments and minor fixes

* minor improvement

* fix return type

* changes for help in debugging
2023-05-10 08:44:15 +00:00
Jon@1599 2e686d03fa feat: allow only team users to record daily meetings (#8799) 2023-05-10 08:28:49 +00:00
Jeroen Reumkens cc3be0a6ac CAL-1623 CAL-1620: Improve animation for booker, and push mini calendar down in fullscreen views (#8773)
* CAL-1623 CAL-1620: Improve animation for booker, and push mini calendar down in fullscreen views

* Updated yarn.lock
2023-05-10 08:26:59 +00:00
ec3a3268c9 Resolved[#8732] Adding Trim to remove extra space (#8736)
* Resolved[#8732] Adding Trim to remove extra space

* fix: improve code

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* chore: add lowercase

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* chore: use lowercase

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-10 07:45:15 +00:00
Udit Takkar 77eed5611e fix: use useTeamsPlan hook (#8789)
* fix: use useTeamsPlan hook

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: z index bug on dialog

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-10 07:11:01 +00:00
Crowdin Bot a827d1defb New Crowdin translations by Github Action 2023-05-10 04:27:42 +00:00
Hariom Balhara b08a62d30b Allow booking responses to have the data from variantsConfig (#8718) 2023-05-10 03:59:51 +00:00
d6fb0df64f perf: tRPC procedures and middleware refactor (#8419)
* trpc procedures an middleware refactor

* allow use sessionMiddleware without a req object

* sync with the new tRPC structure

* tRPC refactor on routing form app

* import Prisma from @prisma/client

* Lazy load apps from appstore

* remove unrelated changes

* Add types for PaymentService

* type fixes

* Merge branch 'main' into roae85/cal-1514-set-the-user-session-only-on-the

* fix typo

* remove console.log

* remove explicit types from apstore object

* linter fixes

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-09 19:27:05 +00:00
Crowdin Bot 03548d8381 New Crowdin translations by Github Action 2023-05-09 17:41:16 +00:00
Carina WollendorferandCarinaWolli 36d8554fd5 disable standard confirmation emails if workflow exists (#8747)
* add switches to advanced even type settings

* only show switches when workflow is enabled

* check in event type update handler if user is allowed to disable standard emails

* don't send emails if disabled

* make sure emails can't be disabled if no workflow exist

* send workflow emails to all attendees

* code clean up

* add translations

* always send to all attendees when scheduling reminders

* change text

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-09 17:08:14 +00:00
sean-brydonandUdit Takkar 6fc9e9315d Bug/checkbox calendar sync state (#8677)
* switch wip

* Implement calendar switch component

* Checked default

* Add spinner to improve UX

* Add connected calendar reivaluate

* Remove local state

* Move back to middleware

* Fix spacing issue

* fix: spacing

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-09 17:53:23 +01:00
Ashray ShettyandBailey Pumfleet 6eb8119a82 Added the 'Add' button (#8777)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-05-09 17:45:53 +01:00
Keith Williams f4c613e6d1 Enable workflows on merge_group (#8781)
* Enable workflows on merge_group

* Reverting back to pull_request_target
2023-05-09 17:43:07 +01:00
Nafees NazikandHariom Balhara 082507aea5 fix: location select logo in dark mode (#8633)
* fix: logo

* fix: icon on booker

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-09 15:27:09 +00:00
Leo GiovanettiandJoe Au-Yeung 90c1270e3d Fixing availability for MET (#8662)
* Fixing availability for MET

* Removing unneeded code

* Fixing unit tests

* Lint fixes

---------

Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
2023-05-09 11:15:13 -03:00
Joe Au-Yeungandalannnc 94917dbb1e Disable reserve slot on seated events (#8761)
* Disable reserve slot on seated events

* Move seats and reserve logic to backend

* Pass booking attendees

* Type fix

* Create booking when two users choose a slot before booking is created

* Update packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts

---------

Co-authored-by: alannnc <alannnc@gmail.com>
2023-05-09 11:02:19 +01:00
Carina WollendorferandCarinaWolli fbbcc401cb fix START_TIME variable + allow sms for self hosted (#8762)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-09 07:50:17 +00:00
swaraj bachu af7d7ec678 fixed ui bug (#8741) 2023-05-09 08:45:45 +01:00
Reckson Zirsangzela Khiangte 3b7d85852a Bug: Change color variable for dark mode (#8758) 2023-05-09 08:44:17 +01:00
Peer RichelsenandUdit Takkar 5362cd66b4 added gradients to dark dashboard and dark booking page (#8459)
* added gradients to dark dashboard and dark booking page

* removed bg of timezone dropdown for dak

* added gradient to confirmation screen

* only gradient in dashboard

* fix: prettier

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-05-08 16:03:24 -03:00
Zoheb AhmedandAlex van Andel 2907405d4e Fixes Bold/Italics Issue (#8613)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-08 14:11:25 +02:00
3c46c39114 feat: catch emails sent locally using Mailhog (#8470)
* feat: added mailhog to catch emails sent locally

* fix: added new line at the end of packages/emails/docker-compose.yml

* chore: removed EMAIL_SERVER_USER and EMAIL_SERVER_PASSWORD for local usage with Mailhog

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-06 19:08:04 -03:00
Manish Roy c6ab889b98 handles scenario where defaultschedule is nil (#8714) 2023-05-06 08:52:54 +01:00
Hariom Balhara a2e2b0ed34 Fix broken appsRouter (#8719) 2023-05-06 08:50:52 +01:00
bc38b3bc55 enhance Timezone Component with Box Shadow (#8582)
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-05 21:38:19 +00:00
Jeroen Reumkens 7611d5c24e CAL-1555: Show correct team avatars (#8665) 2023-05-05 21:44:21 +01:00
5d2fd7aafb [Symbolic Link Issues] Added instructions for setup on windows (#8574)
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
2023-05-05 21:43:40 +01:00
b9ade55ac1 Update README.md (#8679)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-05 21:41:47 +01:00
Jeroen Reumkens d7051c4a3f Centered small_calendar view vertically (#8712) 2023-05-05 21:39:00 +01:00
Jeroen Reumkens ab50067194 Set selecteddate to today when switching layout. Before we were getting the current layout from the store, which would actually be the OLD layout you were switching from 😅 (#8711) 2023-05-05 16:42:47 +00:00
cdba1920fc refactor: split up routers to separate lambdas (#8041)
* split up routers to separate lambdas

* fix responsemeta

* move

* add typeguards to make sure all endpoints are covered in the approuter

* prettier

* move slotsrouter

* split ssg/ssr

* make sure correct headers are sent on viewer.public

* make sure correct headers are sent + use ctx.prisma

* Fixed new prefetch broken by merge

* Fixes after merge

* Created separate API route for all tRPC routers

* More fixes from refactor

* Fixed tRPC query for slots

* Put back extra line

* Fixed type checks

* Removed Endpoint type check since it loads from client

* Reverted change in getSchedule test

* Fix trpc routes in expectations

* Fix one more route test

---------

Co-authored-by: Efraín Rochín <roae.85@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-05 13:19:10 -03:00
Jeroen Reumkens 98a3508b8f CAL-1552: Add newline in front of time for selected timeslot in booker meta. (#8669) 2023-05-05 16:55:54 +01:00
Alex van Andel 446f384405 Add publishHandler user.id (#8703) 2023-05-05 15:36:33 +00:00
Alex van Andel b6c3dce692 Fix with upstream (#263) 2023-05-05 16:33:24 +02:00
Jeroen Reumkensandsean-brydon be79b8ecd6 CAL-1554: remove gap between form and event meta on now booker due to css grid alignment (#8667)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-05 12:38:21 +00:00
371e7b024a add "reset to default" color option for ColorPicker (#8643)
* add reset to default color option

* Do not show reset button in DOM if resetDefaultValue is undefined

* handle edge case: if invalid hexcode is set for resetDefaultValue

* Do not show the reset button if the color is already set to the default value

* Remove data-testid from Button

---------

Co-authored-by: Praneeth Bhogaraju <praneeth.bhogaraju@ni.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-05 13:25:18 +01:00
sean-brydon 76807a7e70 Fix switch label hover (#8696) 2023-05-05 12:47:00 +01:00
Hariom BalharaandPeer Richelsen d3f77bf292 Fix: Embed Theme switching when appearance is using System Theme (#8655)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-05-05 16:54:06 +05:30
Nafees Nazik 2f175eacf5 fix: load date picker on client side (#8690) 2023-05-05 13:04:58 +02:00
Nafees Nazik b45aea3f26 feat: add search for members (#8659)
* feat: add search team members

* fix: add default value

* fix: add placeholder
2023-05-05 10:35:27 +01:00
Jeroen Reumkens c401a58bb1 CAL-1589: Added utm link to powered by in booker. Also added new colors to powered by component, so theyre also used in current booker form now on. (#8670) 2023-05-05 08:36:23 +01:00
05b42c001f feat: Add Zoho Bigin app to appstore (#8158)
* feat: add zoho bigin app to appstore

* Handle appKeys save and read correctly

* Fixes

* Remove env variables and seeding

* Create README for zoho-bigin and link to that in main README

* Remove imageSrc, thats deprecated

* Improved logs

* Remove stray beecepter fetch

* Add Zoho Bigin package.json description

* Load constants from config.json

* Refactor bigin auth tokens management

* Remove try catch

* fix refresh token not getting stored properly

* load api domain dynamically

* Fix reschedule not updating zoho bigin event

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-05-04 20:19:48 +00:00
Mahesh Bansodeandsean-brydon 20f7a5841e Added validation for duration field in the event types (#8649)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-04 12:05:52 +00:00
zomars dbf6bb991f Revert "perf: fix multiple versions of emotion/react loaded warning (#8549)"
This reverts commit 1cea7f9760.
2023-05-04 13:01:16 +01:00
Zeeshan BhatiandEfraín Rochín 75cd5a05b8 Fix Hover Effect in booking page (#8650)
Co-authored-by: Efraín Rochín <roae.85@gmail.com>
2023-05-04 11:58:27 +00:00
Joeandsean-brydon ca6afed27c fix: changed assign to field as typeable input (#8637)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-05-04 11:39:43 +00:00
Jeroen Reumkens 45250f6f3e CAL-1558: Fixed responsiveness of booker for small calendar layout (#8660)
* CAL-1558: Fixed responsiveness of booker for small calendar layout

* Remove commented code
2023-05-04 12:32:22 +01:00
Jeroen Reumkens bd5af9e821 Fix/prevent duplicate avatars (#8664)
* Prevent duplicate avatars in new booker by also checking on profile url.

* Don't filter out profile without profile url

* Use webapp_url for avatars since that's what is used in the rest of the platform, that way the unique filter on avatar works
2023-05-04 11:07:37 +00:00
Jeroen Reumkens 4267c9063b CAL-1556: Alignment of current day dot in datepicker. (#8663) 2023-05-04 11:53:50 +01:00
Crowdin Bot 2b49d96e4a New Crowdin translations by Github Action 2023-05-03 18:37:57 +00:00
127c96b46c Update README.md (#8632)
* Update README.md

* Update README.md

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-03 15:36:55 -03:00
Hariom Balhara 3595ba9824 Fix tests (#8640) 2023-05-03 12:30:26 -03:00
Keith Williams 56acfa38f1 v2.8.12
release.yml / release (push) Canceled after 0s
2023-05-03 10:12:34 -03:00
Syed Ali Shahbaz e78fb22451 [URGENT] Hotfix: re-adds the password and username set check in signup (#8638)
* Check for existing password and username to ensure it isn't an invite

* added check with verified to allow SAML linking

* wrong verified check lol

* updated comment

* unintended
2023-05-03 10:10:28 -03:00
Babis DigosandKeith Williams 99f736b317 fix: Use correct values on append DayRange (#8597)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 19:43:32 -03:00
ee9f80ae3b Fix form inputs height to 36px (#8541)
* fix form inputs height to 36px

* fix: remove h-9 from preset

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix input addOns container height

* replace minHeight class with height in input addOn

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 21:49:17 +00:00
a3c283da5e Updated the CSS classes for the user name and profile (#8571)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 18:20:01 -03:00
Zoheb Ahmed 0ef678b2cf Booking page bug fixed (#8614) 2023-05-02 18:10:47 -03:00
4f466fd95d [CAL-1095] Embed modal (floating pop up button) - UI/layout/spacing issues (#8217)
* [CAL-1095] Embed modal (floating pop up button) - UI/layout/spacing issues

* requested changes

---------

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 15:57:01 -03:00
Keith Williams 5672a721d9 v2.8.11
release.yml / release (push) Canceled after 0s
2023-05-02 15:21:58 -03:00
Mohd Afzal KhanandKeith Williams 5ad45900ea fix the auto-focus issue in teams setting page (#8577)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 15:20:03 -03:00
Hariom Balhara ada88a2f7e Fix: Show smsReminderNumber on booking success page (#8596) 2023-05-02 16:58:39 +00:00
Srijan MukherjeeandAlex van Andel 9ba90e18de resolves #3565 (#8581)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-02 16:56:29 +00:00
Carina WollendorferandCarinaWolli a88eb0fdc5 Allow booking date overrides outside of working hours (#8538)
* allow booking on date overrides outside of working hours

* remove comment

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-05-02 11:38:56 -03:00
4b4c1200cd Add HistoryPlugin to the Editor UI component (#8603)
* Add HistoryPlugin to the Editor UI component

* Fix ESLint errors

---------

Co-authored-by: Praneeth Bhogaraju <praneeth.bhogaraju@ni.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-05-02 11:29:52 -03:00
Nafees NazikandUdit Takkar 1cea7f9760 perf: fix multiple versions of emotion/react loaded warning (#8549)
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2023-05-02 18:31:54 +05:30
28dcf69d18 use named imports instead to avoid polluting the global namespace. in… (#8616)
* use named imports instead to avoid polluting the global namespace. in nodemailer

* Update packages/emails/templates/_base-email.ts

Lint fix.

* Revert yarn.lock changes

---------

Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-02 12:58:47 +00:00
Zeeshan Bhatiandnafees nazik 83d5176ddb Remove redirection after app uninstalltion (#8556)
Co-authored-by: nafees nazik <nafeesnazik21@gmail.com>
2023-05-02 18:14:09 +05:30
Alex van Andel 3815a4c4bf Fixed yarn.lock 2023-05-02 14:14:42 +02:00
Julius MarmingeandAlex van Andel 53748eb380 add an enum generator, stop importing from @prisma/client (#8548)
* add an enum generator and start importing from it

* keep moving imports

* fix remaining

* Header simplified

* Removed generated file from repo

* Updated .gitignore to exclude enums directory

* Add eslint rule to check for @prisma/client Prisma enum import

* Added another enum import + exclude PrismaClient

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-05-02 13:44:05 +02:00
hiteshbedre 28af11f90e fix: corrected discord link pattern (#8612) 2023-05-02 15:44:26 +05:30
Peer Richelsen ea676907b2 fixed border of status badge (#8568) 2023-04-30 13:26:09 +05:30
hallidayo 221c8b75bc added alignment on items (#8544) 2023-04-28 16:56:31 +05:30
GitStart-Cal.comandgitstart-calcom 5b9b7ab22d [CAL-1530] Assigned members to managed event types missing preview URL (#8552)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-04-27 14:51:20 -03:00
668ea088ef fix: password not updatable after an api error (#8514)
* fix: error clearance

* changes

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2023-04-27 11:43:23 +00:00
Nafees NazikandKeith Williams 8a6c420268 perf: prevent refetching i18n on route change (#8535)
* fix: prevent refetching i18n on route change

* remove additional properties

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-27 10:55:26 +00:00
Crowdin Bot d2f8a5c076 New Crowdin translations by Github Action 2023-04-27 08:08:34 +00:00
Abdurrahman RajabandPeer Richelsen 9c0f7bbfc7 Chore: fix RTL style in Color picker, Return arrow, Two factor page (#8317)
* chore: UI arrow left add RTL.

* chore: fix appearence page RTL

* chore: add margins two-factor RTL

* chore: update due to review

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-27 08:07:32 +00:00
Joe 8297824051 fix: edit mode set to true by default (#8468) 2023-04-26 22:06:04 +05:30
Joe Au-YeungandHariom Balhara 7ff5b66f46 Bookings with no-show fee to set proper location & prevent broken payments from blocking payment page (#8508)
* Better error logging on Stripe payment service

* Update booking

* If missing payment, load rest of bookings

* Address feedback

* Move requires confirmation threshold to webhook

* Use requiresConfirmation

* Revert unnecessary prettier changes

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-26 10:12:14 -04:00
Kirat 55570ed4bf Fixed discord validation (#8536) 2023-04-26 13:20:18 +00:00
Hariom Balhara 51695ee79d chore/AppStore: Remove deprecated imageSrc and make the paths relative in logo (#8479)
* Remove depreated imageSrc and make the paths relative in logo

* Do logo replacement at a single place

* Make logo relative at other places

* Fix campfire page not working in dev environment
2023-04-26 12:03:34 +01:00
Crowdin Bot 543466f1b9 New Crowdin translations by Github Action 2023-04-26 08:30:45 +00:00
Peer Richelsen 4abf2d67d9 removed devcontainer (#8521) 2023-04-26 10:29:54 +02:00
1eeb91a793 perf: lazy load tRPC routes (#8167)
* experiment: cold start perf

* fix: update failing test

* chore: add database indexes

* chore: use json protocol and add query batching back

* Update [status].tsx

* Update [trpc].ts

* Delete getSlimSession.ts

* Update createContext.ts

* remove trpc caller

* correctly import Prisma

* lazy ethRouter

* replace crypto with md5

* import fixes

* public event endpoint refactor

* Update yarn.lock

* Update yarn.lock

* Using yarn.lock from main

---------

Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Efraín Rochín <roae.85@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-25 19:39:47 -03:00
Nafees Nazik a4725920ff fix: font not loaded in cal video (#8517) 2023-04-25 20:59:39 +02:00
Richard Poelderl 4cc7766f88 add noindex tags for apps setup pages (#8518) 2023-04-25 20:59:15 +02:00
Crowdin Bot 0c78715e9a New Crowdin translations by Github Action 2023-04-25 14:30:39 +00:00
Crowdin Bot 671d9b4903 New Crowdin translations by Github Action 2023-04-25 14:29:36 +00:00
Jeroen ReumkensandPeer Richelsen 524cefcbad UI Improvements for new booker (#8483)
CAL-1578: No layout shift when switching months (because of timeslots disappearing again)
CAL-1576: Font weight tweaks
Bigger sidebar on fullscreen booker layouts
CAL-1573: Slightly smaller padding around booker sections
CAL-1563: Prevent timezone select from resizing when typing in it
CAL-1561: Spacing improvements timeslots + button height
CAL-1560: Improve resize animation when changing from time slot picker to form
CAL-1549: Added overflow scroll to event description, removed icon from event description so we have more space, and added sexy scrollbars

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-25 14:28:32 +00:00
Crowdin Bot 72f72d86b2 New Crowdin translations by Github Action 2023-04-25 14:08:18 +00:00
Crowdin Bot c5c29322d3 New Crowdin translations by Github Action 2023-04-25 14:07:30 +00:00
Crowdin Bot 863b04e9c1 New Crowdin translations by Github Action 2023-04-25 14:06:34 +00:00
Crowdin Bot c2833f1b44 New Crowdin translations by Github Action 2023-04-25 14:05:43 +00:00
Hariom Balhara 25df264823 Remove reviews/rating/trending/verified props (#8482) 2023-04-25 16:04:40 +02:00
Crowdin Bot e870312ebe New Crowdin translations by Github Action 2023-04-25 14:04:23 +00:00
Crowdin Bot 5371bff6ff New Crowdin translations by Github Action 2023-04-25 14:03:32 +00:00
Jeroen Reumkens c791344c8b Switch back to small calendar layout when switching from mobile to desktop view. Also fixed rerender bug triggerd by ToggleGroup constantly updating because it got a new instance for the onValueChange function. (#8515) 2023-04-25 15:02:34 +01:00
Crowdin Bot 5e149d9f5f New Crowdin translations by Github Action 2023-04-25 12:22:07 +00:00
Alex van Andel 3e53aa13eb v2.8.10
release.yml / release (push) Canceled after 0s
2023-04-25 14:16:42 +02:00
317f961bc8 Feat/weekly booking view (#8484)
* Wip on booker atom

* Wip on booker atom

* Added correct icon imports

* Fixed build

* Responsive improvements

* Removed package lock

* Responsive tweaks

* Animation improvements and cleanup

* Animation improvements and event meta layout improvements.

* Tweaked margins.

* Added more event meta blocks

* Layout tweaks

* Converted booker layout to css grid and implemented multiple layout options

* cleanup

* Fixed build

* Fixed build

* Added temporary api route to enable/disable new booker

* Added sticky behavior

* Reverted yarn.lock and reinstalled new packages to see if this fixes build on vercel.

* Ensure divider lines always have 100% height.

* Improved animation config + initial load

* Ensure to pass eventid to getschedule, otherwise custom availability schedule wont work and wont return any availability

* Fixed divider line heights in booker

* Fixed timezone select positioning

* Added ability to view multiple days of timeslots

* Added icons to booker toggle

* Always show timeslots in timeslots view, also if no date is selected yet. In that case we show upcoming 5 days.

* Fixed timeslots in small calendar view

* Show selected day in calendar

* Fixed booker timeslots view

* Wip in making booking form work

* Moved most of the booker atom stuff to features, since it belongs there. Atom should be a rather small wrapper.

* Added create event functionality to booker form.

* Added guests toggle to booker form and styled input addons in dark mode.

* Added dynamic weekstart to booker

* Added seats limit feature to timeslots.

* Removed todo

* Added correct event avatars

* Added correct event name and icons

* Added correct translation for minutes text in multi duration

* Add rescheduling functionality to new booker.

* Added selected booking time to booking meta in sidebar.

* Abstracted away timeformat to custom hook

* Added correct key props to all components in booker.

* Fix build

* Create some new custom hooks to have a lot less repitition in code.

* Moved bookerform component inside booker directory since it is tied to it.

* Added error messages to booker form, plus fixed bug in recurring events.

* Added some comments <3

* Fixed todos in booker form.

* Added loading state for timeslot selector, and added prefetching of next month, in case of multi day view showing 2 months at the same time.

* Fixed import paths

* Added away view

* Validate uniqueness of event attendees.

* Tweaked comment

* #5798 added correct date format and style for selected date in booker.

* UI improvements

* Enable possibility to add booking values via query params.

* Added functionality to update query params when user selects date/duration etc in booker

* First steps in adding e2e test.

* Fixes after merge with main, and added new form builder.

* Implemented new form types and validation to booker, confirming new form builder. Validation still throwing wrong error keys though.

* Added search to timezone dropdown

* Added e2e test for booker (copy of current booker tests, only enabling cookie), plus fixed reschedule view.

* Updated yarn.lock

* Added new booker for team pages.

* Fixed input addon (hover) styles.

* Added dynamic booking.

* Hide timeformat  select for multi day view for now.

* Cleanup and ui tweaks

* removed log

* Mobile improvements

* Cleanup

* Small design tweaks after talking to ciaran.

* Text color and weight tweaks in booker

* Added rainbow gates to new booker.

* Added in default values which fixes form vallidation (???).

* Added empty defaults for name and email

* Added metadata

* Reset yarn.lock

* Fixed booker zod validation after change in main.

* Icon tweak

* Fixed timezone select styles after new classnames have been merged.

* Updated seat availability styles.

* Update yarn.lock

* Added explanation for alchemy key to .env.example

* Added tooltip to booker month/week/multiday toggle

* Fixed timezoneselect styles in booker after select updates.

* Updates bookingfields component by taking changes from current booker component

* Removed remaining booker todos

* Fix bookeventform

* Fix for recurring event meta

* Type fixes

* Typefixes

* Team event fixes

* Avoid hydration errors by only rendering date picker client side. Remove web3 gates since we dont offer them anymore. Prevent timeslot select from staying open when switching to a different month.

* Don't show calendar on mobile booker during booking.

* Always align booker buttons to bottom

* Don't show backend messages in error, rather show a helpful text like the current booker does as well.

* Do invisible next rewrite based on cookie from next.config.js (#7949)

* Do invisible next rewrite based on cookie from next.config.js

* Name embed link instead of bookerPath

* Rewrites only dynamic user pages

---------

Co-authored-by: zomars <zomars@me.com>

* Don't allow change of timezone when bookerform is visible

* Don't add duration to query param if the event is not a multi duration event.

* Update next.config.js

* Added correct timezone formatting to event meta when timeslot is selected.

* removed .env variable that isn't needed anymore.

* Update Gates.tsx

* Type fixes

* Allows to run all tests with the new booker

* Fixed timezone select styles after merge.

* Don't throw error when event doesn't have hosts, rather return no users, which will result in no availability in UI.

* Make booker errors of severity info instead of warning.

* Ensure team avatars are shown, as well as filter on uniqueness of avatars.

* Added all booked today message to timeslots.

* Added cal.com logo to booker.

* Fixed fragment classname error, minor mobile animation tweaks plus make all booked today text smaller for multi day layout.

* Improved timezone select styles, and updated arguments of getbooking function after updates in main.

* Prevent infinite loop in rewriting new booker.

* Prevent infinite loop in rewriting new booker.

* Moved new-booker pages to their own directory to prevent regexes confusing next and thus nut running getserversideprops after rewrite. Also adding clearing of old date in booker store, that could stick around when user immediately navigates back to the same page after booking.

* Fixed cal logo color in darkmode for new booker.

* Implemented new color tokens and theme variables. Also small design tweaks after merge with main.

* Minor style tweaks

* Show multiple locations in tooltip on booker #8222

* Radio button style tweaks

* Fixed build

* Updated calendar imports to new lucide names

* Removed resetting of selected times logic, because otherwise url params wouldnt be taken into account which is actually what we want. So old values sticking around when navigating back is actually the desired behavior.

* Updated tests to instead of always run the new booker in tests, have a utility to run both the new and old booker for specified tests.

* Added comment and eslint disable for if statement in booker test.

* Update packages/features/bookings/components/event-meta/Details.tsx

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>

* Fix badge types

* Lazy loaded timezone select to save 85kb in bundle size.

* Upgraded framer to latest. Als moved framer and react sticky deps to features instead of atoms.

* Added new pagewrapper logic

* Simplified rescheduling ssr fetches, this now also supports multi seat rescheduling.

* Unset selected time when user is rescheduling directly after a new booking, otherwise it would show the form instead of new time selection.

* Updated form builder logic as per form builder in current booker.

* Updated form builder prefill logic as per logic in current booker.

* Updated getbooking function to fetch correct details when a reschedule uid is used

* Fixed booking questions test by NOT waiting for /book page because the new booker doesnt have this.

* Added former meeting time to reschedule view.

* Fixed types

* Undo playwright config update by mistake.

* Fixed event types test by only waiting for /book page in old booker

* Set new booker cookie to one year in the future instead of 2050

* added reset mockdate to test

* Temporary disabled test to see if this solves the out of memory error.

* Deleted test to see if that fixes the memory error

* Large View Header

* BookFormModal

* Modal

* Fix modal

* Select first day when switching months in booker

* SetSelected Date on large layouts

* Fix re-renders

* Fix yarn.lock

* Set selected date when switching layout

* Add empty state

* Lint

* sticky button on modal

* paramater layout & empty state

* fix: 7040 fix - team profile description (#8469)

* New Crowdin translations by Github Action

* Not center

* Fix positionion

* Removed unused dependnecy in effect

* Update apps/web/public/static/locales/en/common.json

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Fix padding overflow

---------

Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: hallidayo <22655069+Hallidayo@users.noreply.github.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-04-25 13:01:45 +01:00
b0c57a5c38 add australia country code to noAlphanumericSenderIdSupport (#8510)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-25 10:18:44 +00:00
Crowdin Bot 39c16bebd5 New Crowdin translations by Github Action 2023-04-25 09:55:06 +00:00
Alex van Andel b3a5f4a6c0 Fix yarn.lock file 2023-04-25 11:54:03 +02:00
Crowdin Bot 379785196d New Crowdin translations by Github Action 2023-04-25 06:41:22 +00:00
hallidayo 04f8de238f fix: 7040 fix - team profile description (#8469) 2023-04-25 12:10:35 +05:30
Joe 0af2be9d8f Fix: settings moved to userdropdown (#8409) 2023-04-24 23:51:17 +02:00
Crowdin Bot 98d31157cb New Crowdin translations by Github Action 2023-04-24 21:38:14 +00:00
Joe f99d518a06 fix: checkbox and text alignment (#8503) 2023-04-24 23:37:16 +02:00
Crowdin Bot 62770ecc49 New Crowdin translations by Github Action 2023-04-24 18:54:34 +00:00
Crowdin Bot be05ec66ce New Crowdin translations by Github Action 2023-04-24 18:53:52 +00:00
Crowdin Bot 8defc351be New Crowdin translations by Github Action 2023-04-24 18:52:54 +00:00
Crowdin Bot ab112d92ea New Crowdin translations by Github Action 2023-04-24 18:51:55 +00:00
Crowdin Bot cf1b124dc1 New Crowdin translations by Github Action 2023-04-24 18:51:07 +00:00
Crowdin Bot 38158ee043 New Crowdin translations by Github Action 2023-04-24 18:50:10 +00:00
Crowdin Bot 8d214cd8ac New Crowdin translations by Github Action 2023-04-24 18:49:15 +00:00
Crowdin Bot 01ed11ae33 New Crowdin translations by Github Action 2023-04-24 18:48:27 +00:00
Crowdin Bot 5c7756ce6b New Crowdin translations by Github Action 2023-04-24 18:47:38 +00:00
Crowdin Bot a8c5227536 New Crowdin translations by Github Action 2023-04-24 18:46:51 +00:00
Crowdin Bot f3730daf05 New Crowdin translations by Github Action 2023-04-24 18:46:08 +00:00
Crowdin Bot 47d5d800b0 New Crowdin translations by Github Action 2023-04-24 18:45:18 +00:00
Peer Richelsen f6d00a41fb removing more leading-none (#8464) 2023-04-24 18:44:30 +00:00
Crowdin Bot 692f2778e4 New Crowdin translations by Github Action 2023-04-24 17:22:12 +00:00
81d8628a87 remove application_fee_amount (#8496)
* Clean up linting

* Type fix

---------

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-04-24 17:21:24 +00:00
Crowdin Bot 07fbc4cbd3 New Crowdin translations by Github Action 2023-04-24 16:38:52 +00:00
Joe 8cb9a96c3a fix: text color when hover (#8497) 2023-04-24 16:37:53 +00:00
Crowdin Bot 73b1c1dfb7 New Crowdin translations by Github Action 2023-04-24 14:55:33 +00:00
Regina LiuandHariom Balhara 224a8864a6 Add Meta Pixel app (#8476)
* Add Meta Pixel app

* Remove app-store seedinfg for app

* Simplify code

* Apply suggestions from code review

* Fix yarn.lock

* Apply suggestions from code review

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-24 16:54:42 +02:00
6d02ac6729 New Booker Component (preparations for booker atom) (#6792)
* Wip on booker atom

* Wip on booker atom

* Added correct icon imports

* Fixed build

* Responsive improvements

* Removed package lock

* Responsive tweaks

* Animation improvements and cleanup

* Animation improvements and event meta layout improvements.

* Tweaked margins.

* Added more event meta blocks

* Layout tweaks

* Converted booker layout to css grid and implemented multiple layout options

* cleanup

* Fixed build

* Fixed build

* Added temporary api route to enable/disable new booker

* Added sticky behavior

* Reverted yarn.lock and reinstalled new packages to see if this fixes build on vercel.

* Ensure divider lines always have 100% height.

* Improved animation config + initial load

* Ensure to pass eventid to getschedule, otherwise custom availability schedule wont work and wont return any availability

* Fixed divider line heights in booker

* Fixed timezone select positioning

* Added ability to view multiple days of timeslots

* Added icons to booker toggle

* Always show timeslots in timeslots view, also if no date is selected yet. In that case we show upcoming 5 days.

* Fixed timeslots in small calendar view

* Show selected day in calendar

* Fixed booker timeslots view

* Wip in making booking form work

* Moved most of the booker atom stuff to features, since it belongs there. Atom should be a rather small wrapper.

* Added create event functionality to booker form.

* Added guests toggle to booker form and styled input addons in dark mode.

* Added dynamic weekstart to booker

* Added seats limit feature to timeslots.

* Removed todo

* Added correct event avatars

* Added correct event name and icons

* Added correct translation for minutes text in multi duration

* Add rescheduling functionality to new booker.

* Added selected booking time to booking meta in sidebar.

* Abstracted away timeformat to custom hook

* Added correct key props to all components in booker.

* Fix build

* Create some new custom hooks to have a lot less repitition in code.

* Moved bookerform component inside booker directory since it is tied to it.

* Added error messages to booker form, plus fixed bug in recurring events.

* Added some comments <3

* Fixed todos in booker form.

* Added loading state for timeslot selector, and added prefetching of next month, in case of multi day view showing 2 months at the same time.

* Fixed import paths

* Added away view

* Validate uniqueness of event attendees.

* Tweaked comment

* #5798 added correct date format and style for selected date in booker.

* UI improvements

* Enable possibility to add booking values via query params.

* Added functionality to update query params when user selects date/duration etc in booker

* First steps in adding e2e test.

* Fixes after merge with main, and added new form builder.

* Implemented new form types and validation to booker, confirming new form builder. Validation still throwing wrong error keys though.

* Added search to timezone dropdown

* Added e2e test for booker (copy of current booker tests, only enabling cookie), plus fixed reschedule view.

* Updated yarn.lock

* Added new booker for team pages.

* Fixed input addon (hover) styles.

* Added dynamic booking.

* Hide timeformat  select for multi day view for now.

* Cleanup and ui tweaks

* removed log

* Mobile improvements

* Cleanup

* Small design tweaks after talking to ciaran.

* Text color and weight tweaks in booker

* Added rainbow gates to new booker.

* Added in default values which fixes form vallidation (???).

* Added empty defaults for name and email

* Added metadata

* Reset yarn.lock

* Fixed booker zod validation after change in main.

* Icon tweak

* Fixed timezone select styles after new classnames have been merged.

* Updated seat availability styles.

* Update yarn.lock

* Added explanation for alchemy key to .env.example

* Added tooltip to booker month/week/multiday toggle

* Fixed timezoneselect styles in booker after select updates.

* Updates bookingfields component by taking changes from current booker component

* Removed remaining booker todos

* Fix bookeventform

* Fix for recurring event meta

* Type fixes

* Typefixes

* Team event fixes

* Avoid hydration errors by only rendering date picker client side. Remove web3 gates since we dont offer them anymore. Prevent timeslot select from staying open when switching to a different month.

* Don't show calendar on mobile booker during booking.

* Always align booker buttons to bottom

* Don't show backend messages in error, rather show a helpful text like the current booker does as well.

* Do invisible next rewrite based on cookie from next.config.js (#7949)

* Do invisible next rewrite based on cookie from next.config.js

* Name embed link instead of bookerPath

* Rewrites only dynamic user pages

---------

Co-authored-by: zomars <zomars@me.com>

* Don't allow change of timezone when bookerform is visible

* Don't add duration to query param if the event is not a multi duration event.

* Update next.config.js

* Added correct timezone formatting to event meta when timeslot is selected.

* removed .env variable that isn't needed anymore.

* Update Gates.tsx

* Type fixes

* Allows to run all tests with the new booker

* Fixed timezone select styles after merge.

* Don't throw error when event doesn't have hosts, rather return no users, which will result in no availability in UI.

* Make booker errors of severity info instead of warning.

* Ensure team avatars are shown, as well as filter on uniqueness of avatars.

* Added all booked today message to timeslots.

* Added cal.com logo to booker.

* Fixed fragment classname error, minor mobile animation tweaks plus make all booked today text smaller for multi day layout.

* Improved timezone select styles, and updated arguments of getbooking function after updates in main.

* Prevent infinite loop in rewriting new booker.

* Prevent infinite loop in rewriting new booker.

* Moved new-booker pages to their own directory to prevent regexes confusing next and thus nut running getserversideprops after rewrite. Also adding clearing of old date in booker store, that could stick around when user immediately navigates back to the same page after booking.

* Fixed cal logo color in darkmode for new booker.

* Implemented new color tokens and theme variables. Also small design tweaks after merge with main.

* Minor style tweaks

* Show multiple locations in tooltip on booker #8222

* Radio button style tweaks

* Fixed build

* Updated calendar imports to new lucide names

* Removed resetting of selected times logic, because otherwise url params wouldnt be taken into account which is actually what we want. So old values sticking around when navigating back is actually the desired behavior.

* Updated tests to instead of always run the new booker in tests, have a utility to run both the new and old booker for specified tests.

* Added comment and eslint disable for if statement in booker test.

* Update packages/features/bookings/components/event-meta/Details.tsx

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>

* Fix badge types

* Lazy loaded timezone select to save 85kb in bundle size.

* Upgraded framer to latest. Als moved framer and react sticky deps to features instead of atoms.

* Added new pagewrapper logic

* Simplified rescheduling ssr fetches, this now also supports multi seat rescheduling.

* Unset selected time when user is rescheduling directly after a new booking, otherwise it would show the form instead of new time selection.

* Updated form builder logic as per form builder in current booker.

* Updated form builder prefill logic as per logic in current booker.

* Updated getbooking function to fetch correct details when a reschedule uid is used

* Fixed booking questions test by NOT waiting for /book page because the new booker doesnt have this.

* Added former meeting time to reschedule view.

* Fixed types

* Undo playwright config update by mistake.

* Fixed event types test by only waiting for /book page in old booker

* Set new booker cookie to one year in the future instead of 2050

* added reset mockdate to test

* Temporary disabled test to see if this solves the out of memory error.

* Deleted test to see if that fixes the memory error

* Select first day when switching months in booker

---------

Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Sean Brydon <sean@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-24 16:32:30 +02:00
Crowdin Bot f838e8bd53 New Crowdin translations by Github Action 2023-04-24 14:13:48 +00:00
Hariom Balhara 5dac6896d2 Routing-Forms/External Redirect URL improvement (#8487) 2023-04-24 19:42:50 +05:30
Crowdin Bot 496cb265d1 New Crowdin translations by Github Action 2023-04-24 14:08:30 +00:00
sean-brydon c037a62a9d Sad to see it go (#8230) 2023-04-24 19:37:29 +05:30
Alex van Andel 9490b65775 Fix type error by no longer initialData the user 2023-04-23 18:57:21 +02:00
Alex van Andel 02094904be Patch vulnerability that allowed self-promotion 2023-04-23 18:43:23 +02:00
Crowdin Bot 88d17165ec New Crowdin translations by Github Action 2023-04-22 19:57:56 +00:00
Alex van Andel 0e7e1c2cc0 v2.8.9
release.yml / release (push) Canceled after 0s
2023-04-22 21:56:46 +02:00
Crowdin Bot eb97feb173 New Crowdin translations by Github Action 2023-04-22 19:53:44 +00:00
Peer Richelsen 7d702dd546 only show vibrancy on MacOS (#8462) 2023-04-22 20:52:50 +01:00
Hariom Balhara 82b6b83885 Possible fix for iOS redirection (#8455) 2023-04-22 19:45:22 +02:00
Peer Richelsen 39b6def444 fixed timezone dropdown (#8461) 2023-04-22 10:32:06 -07:00
Crowdin Bot 7f5cdbab9b New Crowdin translations by Github Action 2023-04-22 15:48:07 +00:00
Peer Richelsen 1770b832f4 fixed bg for profile on light mode (#8457) 2023-04-22 17:47:15 +02:00
Crowdin Bot d30c0a626d New Crowdin translations by Github Action 2023-04-22 10:58:56 +00:00
Syed Ali ShahbazandAlex van Andel 2eed750ef6 Hotfix - CalDAV/Wraps timezone addition in try catch (#8453)
* Wraps timezone addition in try catch

* Suggestion accepted

Co-authored-by: Alex van Andel <me@alexvanandel.com>

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-22 10:58:03 +00:00
dd8968d0e7 Powered by for ee (#8434)
* moved poweredBy into ee/ to make it possible to change it when a whitelabel is applied

* added text-emphasis for custom powered by text in PoweredBy

---------

Co-authored-by: René Müller <rene.mueller@clicksports.de>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-22 01:57:53 +02:00
Crowdin Bot 827bebbc31 New Crowdin translations by Github Action 2023-04-21 22:44:24 +00:00
Joe Au-Yeung d97ac0e0f8 Fix booking page when toggling payment app settings (#8451)
* Use getPaymentAppData on booking list item

* Use paymentAppdata for event type description

* Remove console.log

* Type fix

* Type fixes

* Remove updating event type price
2023-04-21 15:43:31 -07:00
Crowdin Bot 600d2725aa New Crowdin translations by Github Action 2023-04-21 22:19:49 +00:00
zomars 2a09dc6a46 Comments out e2e page pause 2023-04-21 15:18:45 -07:00
Crowdin Bot 1f746b67f4 New Crowdin translations by Github Action 2023-04-21 22:00:44 +00:00
Omar López bb95f2ba39 Enable prisma json protocol (#7993)
* Enable prisma json protocol

* Upgrades prisma

* Upgrades prisma
2023-04-21 18:59:42 -03:00
Alex van Andel 3d93b4127c Use avatar.png instead of base64. (#8450)
* Use avatar.png instead of base64.

* Removed another case of base64 avatar use
2023-04-21 20:00:31 +02:00
Efraín RochínandKeith Williams 094fae38fc Add log messages on cold/hot requests (#8420)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-21 12:08:59 -03:00
Alex van Andel 3af614f778 v2.8.8
release.yml / release (push) Canceled after 0s
2023-04-21 16:21:23 +02:00
Nafees NazikandAlex van Andel 77b41a4623 feat: add support endpoint (#8404)
* feat: open intercom

* Remove redirect from middleware, use next.config.js instead

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-21 14:18:57 +00:00
Crowdin Bot c23738b885 New Crowdin translations by Github Action 2023-04-21 13:50:42 +00:00
alannncandAlex van Andel afe1f5b72f Fix/seats-cancel-links (#8394)
* Fix cancel links

* Use searchParams API to build cancelLink

* Fix cancel showSeats

* Added test for owner cancel attendee list

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-21 15:49:53 +02:00
Crowdin Bot 5ce341093b New Crowdin translations by Github Action 2023-04-21 11:48:02 +00:00
Crowdin Bot fc6d2839fb New Crowdin translations by Github Action 2023-04-21 11:47:08 +00:00
2fadba85f4 Fix workflow not firing for event types without video app as location (#8435)
* fix error when videoCallUrl was null

* make sure videocallurl is not null

* Revert "fix error when videoCallUrl was null"

This reverts commit f23776ec8be1be334245b7e3f8a977f7e73591f1.

* Update packages/features/bookings/lib/handleNewBooking.ts

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-21 11:46:23 +00:00
sean-brydon 473b36a6be Bulk update modal (#8433)
* Use checkbox component

* Update packages/features/eventtypes/components/BulkEditDefaultConferencingModal.tsx
2023-04-21 11:04:27 +00:00
Crowdin Bot f74b9eb70a New Crowdin translations by Github Action 2023-04-21 10:51:27 +00:00
Hariom Balhara a845841ad0 Prevent looping b/w dark and light (#8440) 2023-04-21 16:20:27 +05:30
Crowdin Bot dba80a1b64 New Crowdin translations by Github Action 2023-04-21 08:25:54 +00:00
sean-brydon 41558d297c Brand colour on setup tab (#8430) 2023-04-21 10:24:59 +02:00
Crowdin Bot cd3946d482 New Crowdin translations by Github Action 2023-04-21 00:46:08 +00:00
Alex van Andel dcbf695217 Remove getDirFromLang, in favour of doing this in the I18nLanguageHan… (#8425)
* Remove getDirFromLang, in favour of doing this in the I18nLanguageHandler exclusively

* Small tweak
2023-04-21 00:45:22 +00:00
Alex van Andel 49cbdda4cf Use modularizeImports for @heroicons (#8422) 2023-04-21 00:58:57 +02:00
Crowdin Bot 22f458cb74 New Crowdin translations by Github Action 2023-04-20 22:34:42 +00:00
Peer Richelsen 561d9f154b misc frontend fixes (#8416)
* (temp) dark mode changes (#8415)

* fixes skeletons, some wrong buttons, spacing, settings
2023-04-20 22:33:49 +00:00
Peer Richelsen 0c9b9bc296 Update package.json
release.yml / release (push) Canceled after 0s
2023-04-21 00:11:59 +02:00
Alex van Andel 552bfcc7db Moved forgot? behind the label (#8421) 2023-04-20 22:06:35 +00:00
986f9dca8d Fix: appKeys handling (#8406)
* Handle appKeys save and read correctly

* Add missing zod file for zohocrm which needs keys

* Show team invites regardless of user plan

* Linting

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-04-20 21:14:50 +00:00
Omar López 3af5a7404e Show team invites regardless of user plan (#8417) 2023-04-20 20:56:38 +00:00
Crowdin Bot 10d3c6ecaa New Crowdin translations by Github Action 2023-04-20 20:02:05 +00:00
Hariom BalharaandKeith Williams a0c37ea4b7 Remove css vars handling from PageWrapper. It was removed from _app.tsx earlier (#8401)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-20 17:01:21 -03:00
Crowdin Bot 798999ad1a New Crowdin translations by Github Action 2023-04-20 18:54:58 +00:00
Crowdin Bot d40e306baa New Crowdin translations by Github Action 2023-04-20 18:54:12 +00:00
Crowdin Bot e558e61f6b New Crowdin translations by Github Action 2023-04-20 18:53:15 +00:00
Crowdin Bot 210eafcd6e New Crowdin translations by Github Action 2023-04-20 18:52:13 +00:00
Crowdin Bot c05e7d75a5 New Crowdin translations by Github Action 2023-04-20 18:51:26 +00:00
Crowdin Bot d0ebf3319a New Crowdin translations by Github Action 2023-04-20 18:50:44 +00:00
Keith Williams 9eb4187644 Added write permission for pull requests in cron action (#8391) 2023-04-20 11:49:52 -07:00
Crowdin Bot 958cebc82c New Crowdin translations by Github Action 2023-04-20 15:57:11 +00:00
Crowdin Bot 0c36dcac4c New Crowdin translations by Github Action 2023-04-20 15:56:18 +00:00
alannncandAlex van Andel fe996b4e41 Fix/user creds (#8393)
* fix-user-creds

* Type fixes

* Type fixes

* Type fixes

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-20 15:55:19 +00:00
Alex van Andel c1c95f711b v2.8.6
release.yml / release (push) Canceled after 0s
2023-04-20 15:54:26 +02:00
Syed Ali Shahbaz 7cb7006c54 CalDAV - improves the UTC offset eval to include DST (#8399)
* improves the UTC offset eval to include DST

* remove debug remnants
2023-04-20 15:51:39 +02:00
Alex van Andel e1403bfbeb Initial implementation, getAppLogos() (#8405)
* Initial implementation, getAppLogos()

* Handle localhost:3000 correctly

* New URL wasn't working with all hostnames

* Only get the first of the subdomainParts, join not needed

* rename url -> hostname

* getAppLogos -> getTeamLogos
2023-04-20 13:43:06 +00:00
Hariom Balhara c38dd2d072 Hotfix: Fix theme not changing once page has started loading (#8400)
* Fix theme not changing once page is loaded

* Add toggle case in playground
2023-04-20 11:57:28 +00:00
Crowdin Bot f9d9e74d6b New Crowdin translations by Github Action 2023-04-20 11:39:48 +00:00
sean-brydon 2ab597addc Fixing default event location URL for dynamic events (#8396)
* Set bookingLocaiton to URL if there is a default location

* Update packages/features/bookings/lib/handleNewBooking.ts

* Suggestions implmented

* Remove old implemntation

* Cleanup
2023-04-20 13:38:57 +02:00
Hariom Balhara 33e394d5ed One App shouldnt break other app, or the entire cal.com build. Also, handle slug change in seeding update (#8294) 2023-04-20 04:41:14 +00:00
Hariom Balhara 37a2209871 Hotfix: Make bookingFields optional (#258) 2023-04-19 21:27:25 -07:00
Crowdin Bot 4577de3b17 New Crowdin translations by Github Action 2023-04-19 23:03:32 +00:00
Crowdin Bot 658b529840 New Crowdin translations by Github Action 2023-04-19 23:02:40 +00:00
Alex van Andel 4aed769da4 Invert domain check, make default logo work 2023-04-20 01:01:29 +02:00
Crowdin Bot 6c753290aa New Crowdin translations by Github Action
release.yml / release (push) Canceled after 0s
2023-04-19 22:20:17 +00:00
Alex van Andel 59c91607db v2.8.5 2023-04-20 00:19:14 +02:00
b0530d59af Remove Intl.Provider (#8208)
* Add payment option to schema

* Add payment option to Stripe zod

* Set payment option on event type

* Create manual payment intent in Stripe

* Set payment option from Stripe app

* Add payment option to DB

* Pass React.ReactNode to checkbox

* Create uncaptured payment intent

* WIP

* Capture card in setup intent

* Show charge card option

* Charge card from booking page

* Bug fixes

* Clean up

* Clean up app card

* Add no-show fee messaging on booking page

* Send payment email on payment & add price

* Fix messaging

* Create no show fee charged email

* Send charge fee collected email

* Disable submit on card failure

* Clean up

* Serverside prevent charging card again if already charged

* Only confirm booking if paid for

* Type fixes

* More type fixes

* More type fixes

* Type fix

* Type fixes

* UI changes

* Payment component rework

* Update apps/web/public/static/locales/en/common.json

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update apps/web/public/static/locales/en/common.json

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update apps/web/components/dialog/ChargeCardDialog.tsx

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update packages/trpc/server/routers/viewer/payments.tsx

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Revert GTM config

* Adjust payment option dropdown

* Show alert when seats are set

* Small bug fixes

* Create collect card method

* clean up

* Prevent seats & charge no-show fee to be enabled together

* Do not charge no-show fee on unconfirmed bookings

* Add check to collect card method

* Webhook send request emails

* Fix some dark mode colours

* Change awaiting payment language

* Type fixes

* Set height of Select and TextField both to 38px to fix alignment

* Fix message seats & payment error message

* Type fix

* Remove Intl.Provider

* Add percentFeePercentage

* WIP

* Use i18n language

* Type fix

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Omar López <zomars@me.com>
2023-04-19 21:38:06 +00:00
Omar López b1ff829745 Warns about lodash usage (#8390) 2023-04-19 23:07:48 +02:00
sean-brydonandzomars d202b536b5 Feat/subdomain logochanges (#8264)
* logo map

* Archimed logo

* usememo

* Subdomain logo logic

* or our logo

* Update packages/features/orgs/SubdomainProvider.tsx

* Provider comments

* Move DB logic to db

* Fix a11y on alt tag

* Added example for dynamic endpoint

* Move to API approach

* Implement Icon logo on subdomain level

---------

Co-authored-by: zomars <zomars@me.com>
2023-04-19 13:55:40 -07:00
Joe Au-Yeung 2ac5ef10ba Add event type redirect URL (#8385) 2023-04-19 13:46:59 -07:00
8a2ab68e9a feat: add user hash for intercom (#8263)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-19 22:22:07 +02:00
877220caa0 Event Type: Title not displayed in the mobile view (#7451)
* Event Type: Title not displayed in the mobile view

* Fix toggle not updating in UI

---------

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-19 13:17:54 -07:00
0686c08de3 Fix/insights load speed (#8364)
* Adding skipBatch to trpc calls

* Use view in trpc insights

* Added performance data creation on seed-insights

* fix some scenarios

* Fix migration view fields

* Prevent revalidating too often

---------

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-04-19 20:14:09 +00:00
Alex van Andel d3f1f8b906 Shaves off an easy 1.4kb win from the global package (#8382) 2023-04-19 16:23:49 -03:00
Syed Ali Shahbaz 38987b77bb Swagger/schedules request and response examples (#257)
This PR adds request body and response body examples to swagger in
/schedules endpoint
Added for:
- [x] `/schedules/_post`
- [x] `/schedules/_get`
- [x] `/schedules/[id]/_get`
- [x] `/schedules/[id]/_post`
- [x] `/schedules/[id]/_patch`
2023-04-19 12:22:07 -07:00
Crowdin Bot 33a69d3ef6 New Crowdin translations by Github Action 2023-04-19 18:25:28 +00:00
Alex van Andel d91b451d7b Also unpack React / don't directly import React (#8384) 2023-04-19 20:24:34 +02:00
Nafees Nazik 9e17149e5e fix: limit avatar upload size (#8135) 2023-04-19 18:19:31 +02:00
Peer Richelsen de61b032b7 RFC: added brandcolor for switch (#8213) 2023-04-19 14:39:23 +00:00
bdbf9bd04d perf: reduce bundle size (#8337)
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-19 19:45:08 +05:30
Henrique PachecoandUdit Takkar ccd589ef38 fix: addon wrapper to password input field (#8320)
* fix: addon wrapper to password input field

* fix: tooltip

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-04-19 14:12:55 +00:00
Crowdin Bot b4c3753566 New Crowdin translations by Github Action 2023-04-19 14:03:48 +00:00
2fdadb98ac fix the issue "ReferenceError: window is not defined" (#8193)
Co-authored-by: Nafees Nazik <84864519+G3root@users.noreply.github.com>
Co-authored-by: nafees nazik <nafeesnazik21@gmail.com>
2023-04-19 19:32:55 +05:30
Crowdin Bot a33847a878 New Crowdin translations by Github Action 2023-04-19 13:03:16 +00:00
Nafees Nazik 88cf535c8e fix: address input (#8352) 2023-04-19 13:02:26 +00:00
Carina WollendorferandCarinaWolli ea0b59d7c0 Fixes editor not saving new value (#8379)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-04-19 17:10:18 +05:30
Syed Ali Shahbaz d5db1e4171 Swagger/booking req resp body (#256) 2023-04-19 12:58:05 +02:00
Hariom BalharaandPeer Richelsen 39b93cdb5b Fix Editor not triggering setText (#8368)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-19 12:25:05 +02:00
Nafees Nazik e27fc05d5f fix: frontend issues and dark mode regressions (#8373) 2023-04-19 12:14:59 +02:00
Carina WollendorferandCarinaWolli 20c010fef1 Revert "Date override fixes (#8330)" (#8369)
release.yml / release (push) Canceled after 0s
This reverts commit 3ef328421f.

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-04-19 08:43:08 +00:00
Peer Richelsen 1a7911e9e2 Update package.json
release.yml / release (push) Canceled after 0s
2023-04-19 08:57:31 +02:00
Crowdin Bot cb09b5bc5f New Crowdin translations by Github Action 2023-04-19 06:47:15 +00:00
Efraín Rochín a99031bdd2 fix: [CAL-1490] Google Cal/Outlook not actively syncing/self hosted (#8305) 2023-04-19 08:46:17 +02:00
ada8a98362 chore: add database indexes (#8361)
Co-authored-by: Mythie <me@lucasjamessmith.me>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-18 16:50:42 -07:00
Yagiz Nizipli e176e81bae perf: improve bookings performance (#8362) 2023-04-18 16:48:53 -07:00
zomars b64dd66c2c Fixes bundle comments
https://github.com/hashicorp/nextjs-bundle-analysis/issues/52#issuecomment-1513913373
2023-04-18 16:40:06 -07:00
Crowdin Bot 7fd162601b New Crowdin translations by Github Action 2023-04-18 23:29:50 +00:00
c1f346c935 Cal 1099 availability section defined hour mismatch (#7416)
* CAL-1099 Add prop for availability in formMethods

* fix: show correct availabilty name

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* CAL - 1099 / fix 12 hr time format bug

* fix: remove useEffect and fix vertical tab item ui

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* Fixes merge conflicts

* Update index.tsx

* More conflict fixes

* Update packages/ui/components/navigation/tabs/VerticalTabs.tsx

* Type fixes

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: zomars <zomars@me.com>
2023-04-18 23:29:02 +00:00
Keith Williams 36d47bd2d8 v2.8.3
release.yml / release (push) Canceled after 0s
2023-04-18 18:22:24 -03:00
26cdb6521f perf: Adds PageWrapper to pages (#8344)
* Adds PageWrapper to pages

* Add missing PageWrapper

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-18 15:45:32 -03:00
Leo Giovanetti 014f1986de Adding missing mutation (#8357)
* Adding missing mutation

* Returning to prop for disabled
2023-04-18 16:48:19 +00:00
Carina WollendorferandCarinaWolli 3ef328421f Date override fixes (#8330)
* fix date override for fixed round robin + time zone in date override

* check if slot is within working hours of fixed hosts

* add test for date override in different time zone

* fix date overrides for not fixed hosts (round robin)

* code clean up

* fix added test

* use the correct timezone of user for date overrides

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-04-18 17:21:27 +02:00
Ben HybertandHariom Balhara c4fe69d826 Add Plausible (Custom) App (#8189)
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-18 19:24:51 +05:30
Hariom Balhara 0d1ad23c57 API Support: Manage Booking Questions and responses (#253)
Works with https://github.com/calcom/cal.com/pull/8115
2023-04-18 19:17:29 +05:30
Hariom Balhara 6fd64b2209 Fix: cssVars API not working correctly on Booker Timeslot selection page (#8296)
* Use a method out of react scope to set CSS vars as that doesnt need react

* Refactor
2023-04-18 12:53:46 +00:00
Crowdin Bot 585e36793a New Crowdin translations by Github Action 2023-04-18 12:53:33 +00:00
Crowdin Bot 09b9370e13 New Crowdin translations by Github Action 2023-04-18 12:52:43 +00:00
Udit Takkar a76a4996b4 fix: address input (#8349)
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-04-18 18:21:46 +05:30
Hariom Balhara b28d60b6dc API Support: Manage Booking Questions and responses (#8115) 2023-04-18 18:05:06 +05:30
Nafees Nazik a716eda14c fix: use the correct timezone of the user in booking detail page (#7915)
* fix: send timezone in query

* fiz: timezone

* fix: remove tz from createPayment

* fix: send timezone in query

* fiz: timezone

* fix: remove tz

* fix: remove tz

* fix: remove timezone query

* fix: timezone
2023-04-18 14:29:26 +02:00
Crowdin Bot 99f1524183 New Crowdin translations by Github Action 2023-04-18 12:10:14 +00:00
Peer Richelsen 7ce6454915 Update package.json
release.yml / release (push) Canceled after 0s
2023-04-18 14:09:25 +02:00
Crowdin Bot 93cb21f55a New Crowdin translations by Github Action 2023-04-18 10:09:05 +00:00
0aca769d06 Allow editing workflow templates (#8028)
* add event end time as variable

* add timezone as new variable

* add first version of template prefill

* set template body when template is updated

* set reminder template body and subject when creating workflow

* set email subject when changes templates

* save emailBody and emailsubject for all templates + fix duplicate template text

* add more flexibility for templates

* remove console.log

* fix {ORAGANIZER} and {ATTENDEE} variable

* make sure to always send reminder body and not default template

* fix import

* remove email body text and match variables in templates

* handle translations of formatted variables

* fix email reminder template

* add cancel and reschedule link as variable

* add cancel and reschedule link for scheduled emails/sms

* make sure empty empty body and subject are set for reminder template

* add info message for testing workflow

* fix typo

* add sms template

* add migration to remove reminderBody and emailSubject

* add branding

* code clean up

* add hide branding everywhere

* fix sms reminder template

* set sms reminder template if sms body is empty

* fix custom inputs variables everywhere

* fix variable translations + other small fixes

* fix some type errors

* fix more type errors

* fix everything missing around cron job scheduling

* make sure to always use custom template for sms messages

* fix type error

* code clean up

* rename link to url

* Add debug logs

* Update handleNewBooking.ts

* Add debug logs

* removed unneded responses

* fix booking questions + UI improvements

* remove html email body when changing to sms action

* code clean up + comments

* code clean up

* code clean up

* remove comment

* more clear info message for timezone variable

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: alannnc <alannnc@gmail.com>
2023-04-18 11:08:09 +01:00
Nafees Nazik c0bda6257e Fix: dark mode issues (#8348)
* fix: dark mode

* fix: dark mode
2023-04-18 09:12:12 +00:00
Yagiz Nizipliandzomars ae22246f05 perf: improve application toggle flow (#8302)
* perf: improve application toggle flow

* Reverses logic for enabled apps

---------

Co-authored-by: zomars <zomars@me.com>
2023-04-18 01:17:16 -07:00
Crowdin Bot e2931d9fa2 New Crowdin translations by Github Action 2023-04-18 07:54:34 +00:00
Crowdin Bot e6a8a31b53 New Crowdin translations by Github Action 2023-04-18 07:53:41 +00:00
Crowdin Bot ee86c751f7 New Crowdin translations by Github Action 2023-04-18 07:52:53 +00:00
Crowdin Bot 073b212c05 New Crowdin translations by Github Action 2023-04-18 07:52:00 +00:00
Nafees NazikandBailey Pumfleet cd8e2124c4 fix: check box (#8328)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-04-18 08:51:03 +01:00
JoeandOmar López 9dd36bd20e fix: signup form submiting after api error (#8298)
Co-authored-by: Omar López <zomars@me.com>
2023-04-18 01:58:54 +00:00
Crowdin Bot b1404356ff New Crowdin translations by Github Action 2023-04-18 01:55:59 +00:00
Nafees Nazikandzomars f467bb7957 perf: use LRU cache for getServerSession (#8339)
* chore: add lru package

* feat: use LRU cache

* fix: type

* Updates package json

---------

Co-authored-by: zomars <zomars@me.com>
2023-04-18 01:55:01 +00:00
597b14cf4c perf: improve application list execution (#8301)
* perf: improve application list execution

* Removed unused interface

* Type fix

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-04-18 00:54:15 +00:00
2bdd6df755 avoid calendar cache on cold starts (#8311)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
2023-04-17 23:56:08 +00:00
Yagiz NizipliandEfraín Rochín ad958f10bd perf: improve booking confirm authorization (#8304)
* perf: improve booking confirm authorization

* removes unreachable code

---------

Co-authored-by: Efraín Rochín <roae.85@gmail.com>
2023-04-17 23:50:34 +00:00
e5eb7c3906 perf: use getSlimServerSession for session retrieval (#8308)
* perf: use getSlimServerSession for session retrieval

Creates a new `getSlimServerSession` method and replaces all calls to `getServerSession`.

The new method is much faster than `getServerSession` with it not requiring the NextAuth options object which includes a number of additional packages.

Additionally introduces a primitive in-memory cache for slim sessions.

* fix: account for seconds in token.exp

* Reverts diffs

* Replaces getServerSession with slimmer version

* Update disable.ts

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-04-17 23:48:00 +00:00
zomars 667d42d5da Update yarn.lock 2023-04-17 15:46:43 -07:00
zomars a23a9ad15a Reverts PR checks limit 2023-04-17 15:26:17 -07:00
Crowdin Bot 4482ffc66b New Crowdin translations by Github Action 2023-04-17 22:23:34 +00:00
Udit Takkar 493efabd2e perf: remove sentry (#8334) 2023-04-17 22:22:44 +00:00
Crowdin Bot a0355e276d New Crowdin translations by Github Action 2023-04-17 19:55:05 +00:00
b5c993e153 perf: replace notIn with equals on booking (#8303)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-04-17 16:54:14 -03:00
Crowdin Bot da3ee3f1fe New Crowdin translations by Github Action 2023-04-17 16:20:34 +00:00
Udit TakkarandPeer Richelsen d9fc595444 fix: undo showRecordingsButton (#8262)
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-17 16:19:24 +00:00
06d13e0f6e feat: Added option to select the exchange server version (#7908)
* Added option to select the exchange server version

* Fixed linting issues

* Removed yarn changes

* Update packages/app-store/exchangecalendar/lib/CalendarService.ts

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>

* Removed requested change

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-17 10:21:14 -04:00
Udit Takkar 7dc3266133 fix: use text-emphasis (#8332)
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-04-17 14:54:39 +01:00
Hariom Balhara 2c96444058 Fix/Keep themes in peace across embed and booking pages and App (#8108) 2023-04-17 17:46:54 +05:30
Nafees Nazik 39c48e7f79 fix: some ui regressions (#8260)
* fix: icon size

* fix: icon size

* fix: border
2023-04-17 12:09:30 +00:00
Hariom Balhara b6e1989f17 Invalidate the form query on toggle to update toggle state in UI (#8325) 2023-04-17 17:34:25 +05:30
Nafees Nazik 45b5b2a376 fix: giphy input dark color 2023-04-17 17:27:30 +05:30
JoeandPeer Richelsen 05726ec94c fix: varients to layer (#8171)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-16 22:22:10 +00:00
Peer RichelsenandAlex van Andel 6340ff43d8 removed page_view tracker (#8267)
* removed page_view tracker

* Removed unused useTelemetry

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-16 21:58:47 +00:00
Peer Richelsen e64b26c7e1 fixed dark mode booker (#8315) 2023-04-16 21:47:07 +00:00
Joe c829a7de82 fix: remove line-clamp from plugins (#8309) 2023-04-16 23:05:44 +02:00
JoeandPeer Richelsen 0205bfb066 fix: MobileSettingsContainer height (#8295)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-16 20:18:56 +00:00
5fd7d63388 correction of position on 'Adding events to' button (#8290)
* correction to position

* Update apps/web/components/settings/CalendarSwitch.tsx

---------

Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-16 20:06:02 +00:00
e1ea2cb532 chore: UI username RTL (#8300)
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-16 19:35:17 +00:00
Joe 88d151aa35 fix: scroll-bar class for editor compnent (#8310) 2023-04-16 21:17:07 +02:00
Crowdin Bot 4e7c93a322 New Crowdin translations by Github Action 2023-04-16 18:50:25 +00:00
Peer Richelsen 281c7628c1 fixed bg 2023-04-16 20:49:12 +02:00
Crowdin Bot 1b24bc14cd New Crowdin translations by Github Action 2023-04-15 13:23:37 +00:00
Hariom Balhara be3d2fca05 Use name to generate unique for attribute for label (#8265) 2023-04-15 13:22:51 +00:00
Crowdin Bot 327e11e7c7 New Crowdin translations by Github Action 2023-04-15 11:51:04 +00:00
Peer Richelsen bd999345f4 Update package.json
release.yml / release (push) Canceled after 0s
2023-04-15 13:50:06 +02:00
Keith Williams 081776b4f9 Fixing syntax error in stale issue cron action (#8269) 2023-04-15 13:49:16 +02:00
Peer Richelsen 8c328ce5d7 fixed yarn dx (#8293) 2023-04-15 11:48:44 +00:00
Crowdin Bot 0fa2a6aea3 New Crowdin translations by Github Action
release.yml / release (push) Canceled after 0s
2023-04-15 09:21:02 +00:00
Peer Richelsen 440251f9c3 Update package.json 2023-04-15 11:20:06 +02:00
Omar LópezandLeo Giovanetti 7f6847f7c7 In-app users admin (#8035)
* WIP

* WIP

* Update trpc-router.ts

* Fixes

* Update trpc-router.ts

* Update zod-utils.ts

* Apply suggestions from code review

Co-authored-by: Leo Giovanetti <hello@leog.me>

* Feedback and dark mode fixes

* Feedback

* Fixes

* Update UserForm.tsx

---------

Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-04-14 17:04:48 -07:00
zomars 9f1fa83a97 Update pr.yml 2023-04-14 17:04:35 -07:00
Joe Au-Yeung f00b112792 Change Stripe <CardElement /> to <PaymentElement /> (#8268)
* Use Stripe PaymentElement

* Only show needs confirmation, if the booking needs it

* Clean up

* Type fix

* More type fixes
2023-04-14 21:56:16 +00:00
Yagiz Nizipli 5339a489f5 perf: reduce array iteration on bookings router (#8276) 2023-04-14 21:29:43 +00:00
Yagiz Nizipli f7df204e0b perf: parallelize database calls to improve speed (#8275) 2023-04-14 21:27:10 +00:00
Alex van Andel 4975aba5e0 Move some dependencies into async (#8270)
* Move some dependencies into async

* Also remove jackson & jose from global scope
2023-04-14 14:25:15 -07:00
Omar López 29d61ad67b Update CODEOWNERS 2023-04-14 14:18:06 -07:00
Udit Takkar 6e555e64fa fix: spacing in booking item mobile (#8279)
release.yml / release (push) Canceled after 0s
2023-04-14 22:35:17 +02:00
Peer Richelsen c748bbc7e6 Update package.json 2023-04-14 22:34:32 +02:00
Leo Giovanetti 0681359bf3 Removing unneeded endpoint (#8280) 2023-04-14 20:27:37 +00:00
Yagiz Nizipli 4c9d4d7972 refactor: remove unnecessary or operation (#8274) 2023-04-14 11:03:24 -07:00
Crowdin Bot 67f8de42b3 New Crowdin translations by Github Action 2023-04-14 11:00:31 +00:00
Peer Richelsen 87584132b5 Update package.json
release.yml / release (push) Canceled after 0s
2023-04-14 12:59:31 +02:00
Crowdin Bot 5b943742e0 New Crowdin translations by Github Action 2023-04-14 08:05:36 +00:00
Hariom Balhara fe155b0b97 Fix: Sylaps app shown uninstalled after installation (#8256) 2023-04-14 10:04:41 +02:00
Udit TakkarandOmar López 6639588c2d fix: selectfield bug and min height (#8253)
* fix: selectfield bug and min height

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: remove overflow

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Omar López <zomars@me.com>
2023-04-13 21:45:18 +00:00
zomars 7f9e8ca7a6 Runs pipelines only when a PR has a requested review 2023-04-13 14:24:26 -07:00
e478a46358 Feature: Reserve slots currently being booked (#6909)
* Reserving slot picked up on cache

* change memory-cache to database table to block slots while reservation completes

* remove memory-cache

* update realeaseAt field when same user change te selected Slot

* Change default time to book

Co-authored-by: alannnc <alannnc@gmail.com>

* remove ip field and renews the session when the user remains in the booking form

* Remove duplicate router

* types fixes

* nit picks

* Update turbo.json

* Revert unrelated change

* Uses constant

* Constant already has a fallback

* Update slots.ts

* Unit test fixes

* slot reservation on user level and support seats

* types fixes and reserve slots on click

* Fix nit var name

---------

Co-authored-by: Efraín Rochín <roae.85@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-13 19:55:26 +00:00
Udit Takkar 7c9012738a feat: add isRecordingExist field and create api handler (#6777) 2023-04-13 19:07:10 +00:00
alannnc 5c763389f7 Fix workflows on seated events (#8034)
* Fix workflows on seated events

* Fix new args required in handleConfirmation

* Update function import to new name

* added email to override for workflows
2023-04-13 19:03:08 +00:00
Efraín Rochín 7fde30edf9 avoid get error when a user has no schedule defined in getUserAvailability function (#8170) 2023-04-13 18:26:45 +00:00
Hariom Balharaandsean-brydon 0e22e92cab Feat: Support setting custom css variables through embed API. (#8169)
* Add booker border specific custom variables

* Support configuring cssVars through embed API

* Update apps/web/pages/booking/[uid].tsx

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>

---------

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-04-13 18:26:31 +00:00
JoeandPeer Richelsen 17f48614ff fix: reccuring input width (#8227)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-13 18:26:13 +00:00
zomars 2f33b57eb7 Update yarn.lock 2023-04-13 11:12:25 -07:00
zomars 9654677664 Removed embeds from API as they trigger unused build scripts 2023-04-13 11:11:56 -07:00
Nafees Nazik 6e5c3a88ee fix: clock icon size in booker page (#8249) 2023-04-13 20:08:09 +02:00
Alex van Andel 9024914f23 v2.7.16
release.yml / release (push) Canceled after 0s
2023-04-13 19:41:45 +02:00
sean-brydon 966bc08eb4 Fix radio item on future limits (#8247) 2023-04-13 11:58:08 +00:00
sean-brydon c545331cfe Few darkmode fixes - Avatar Tooltip | Forgot password page (#8242) 2023-04-13 10:59:32 +00:00
Peer Richelsen ce763f30f6 readded vibrancy for desktop app (#8245) 2023-04-13 10:59:09 +00:00
Peer Richelsen d453ae9f2b use brand for highlight (#8240) 2023-04-13 11:41:12 +01:00
Nafees Nazik 9f2b41e597 fix: Dark mode fixes (#8243)
* fix: event type card

* fix: text

* fix: border
2023-04-13 10:34:44 +01:00
GitStart-Cal.com 86e903ce4a show the link only if there's a username (#8238) 2023-04-13 07:04:52 +00:00
Crowdin Bot 9d3963436b New Crowdin translations by Github Action 2023-04-13 05:28:45 +00:00
alannnc d8218a6243 Fix payment app credential search (#8235) 2023-04-13 10:57:54 +05:30
Crowdin Bot cdc3833e09 New Crowdin translations by Github Action 2023-04-13 02:12:21 +00:00
Crowdin Bot 52b7e401a1 New Crowdin translations by Github Action 2023-04-13 02:11:27 +00:00
5170fc2424 Managed event-types (#6876)
* WIP

* Locked fields manager

* Leftovers

* Bad merge fix

* Type import fix

* Moving away from classes

* Progress refactoring locked logic

* Covering apps, webhooks and workflows

* Supporting webhooks and workflows (TBT)

* Restoring yarn.lock

* Progress

* Refactoring code, adding default values

* Fixing CRUD for children

* Connect app link and case-sensitive lib renaming

* Translation missing

* Locked indicators, empty screens, locations

* Member card and hidden status + missing i18n

* Missing existent children shown

* Showing preview for already created children

* Email notification almost in place

* Making progress over notif email

* Fixing nodemailer by mixed FE/BE mixup

* Delete dialog

* Adding tests

* New test

* Reverting unneeded change

* Removed console.log

* Tweaking email

* Reverting not applicable webhook changes

* Reverting dev email api

* Fixing last changes due to tests

* Changing user-evType relationship

* Availability and slug replacement tweaks

* Fixing event type delete

* Sometimes slug is not there...

* Removing old webhooks references
Changed slug hint

* Fixing types

* Fixing hiding event types actions

* Changing delete dialog text

* Removing unneeded code

* Applying feedback

* Update yarn.lock

* Making sure locked fields values are static

* Applying feedback

* Feedback + relying on children list, not users

* Removing console.log

* PR Feedback

* Telemetry for slug replacement action

* More unit tests

* Relying on schedule and editor tweaks

* Fixing conteiner classname

* PR Feedback

* PR Feedback

* Updating unit tests

* Moving stuff to ee, added feature flag

* type fix

* Including e2e

* Reverting unneeded changes in EmptyScreen

* Fixing some UI issues after merging tokens

* Fixing missing disabled locked fields

* Theme fixes + e2e potential fix

* Fixing e2e

* Fixing login relying on network

* Tweaking e2e

* Removing unneeded code

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
2023-04-12 23:10:23 -03:00
Nafees NazikandHariom Balhara 7349fb9f6d test: add other fields to routing form e2e (#8112)
* chore: add test id

* chore: add test

* remove console log

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>

* fix: linting

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-04-12 13:58:03 -07:00
Syed Ali Shahbaz a8368aac79 Caldav/refactor: Mutiple Fixes and General code improvement (#8031)
* code cleanup and fixes for unsupported objects and fetch requests

* improves sanitizer function

* adds comment to the utility function sanitizeCalendarObjects

* adds ICAL.parse in try catch-- fixes code breaking for all objects due to one bad ICAL body

* adds a function that ensures expand=false fallback for unsupporting calendars

* --WIP

* improves code to now support multi-event calendar ics parsing

* Handle failed calls to not break all selected calendars

* removes debug remnants

* removes further unnecessary comments
2023-04-12 14:30:39 -03:00
Abdallah AlsammanandAlex van Andel 91f381bce9 Replace react icons with lucidedev (#8146)
* migrate from react-icons to lucide-react

* replace react-icon with lucide-dev: Webhook Icon

* add lucide transformer

* Fix LinkIcon import

* Update yarn.lock to include monorepo deps

* Migrated icons in ChargeCardDialog

* Port Storybook to new icons as well

* Adjust Info & Globe icons size to match react-icons size

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-12 17:26:31 +02:00
Syed Ali Shahbaz fab5eb948c Update /booking _post.ts to have eventTypeId as required (#254)
Update` /booking` `_post.ts` to have 
- eventTypeId as a required field
- example for request body
- Updated schema that represents actual usage
2023-04-12 17:16:19 +02:00
Peer Richelsen fb9c1b18e0 remove leading-none (#8232) 2023-04-12 12:15:08 +00:00
Alex van Andel 1d18a09cc8 v2.7.15
release.yml / release (push) Canceled after 0s
2023-04-12 13:58:42 +02:00
Peer Richelsen 887d63ceef app store fixes (#8224) 2023-04-12 11:40:53 +00:00
Hariom Balhara 555fcc21f2 Revert color-scheme for embed (#8229) 2023-04-12 11:16:59 +00:00
Peer Richelsen f45fb03838 wip: replaced dark border with border-subtle (#8211) 2023-04-12 10:42:41 +02:00
Peer Richelsen 46611fdf77 make routing form full width (#8215) 2023-04-12 07:39:04 +05:30
Crowdin Bot c0f7c40bec New Crowdin translations by Github Action 2023-04-12 01:57:27 +00:00
Joe Au-Yeungandzomars f6f257c705 Refactor app store & fix admin apps list bugs (#7812)
* If omni install do not show app successfully installed toast

* Clean up. Up to hubspot

* Fix double click to enable apps

* Clean up rest of apps

* Create cli app add dirName

* Type fix

* Only enable apps if keys are valid

* Save dirName as slug

* Remove dirname from metadata

---------

Co-authored-by: zomars <zomars@me.com>
2023-04-11 18:56:43 -07:00
Crowdin Bot d61f50724b New Crowdin translations by Github Action 2023-04-11 22:14:21 +00:00
Alex van Andel 960aa0e00b v2.7.14
release.yml / release (push) Canceled after 0s
2023-04-12 00:10:27 +02:00
Joe Au-YeungandAlex van Andel 817e20f11e Stripe add the ability to place hold on cards (#8022)
* Add payment option to schema

* Add payment option to Stripe zod

* Set payment option on event type

* Create manual payment intent in Stripe

* Set payment option from Stripe app

* Add payment option to DB

* Pass React.ReactNode to checkbox

* Create uncaptured payment intent

* WIP

* Capture card in setup intent

* Show charge card option

* Charge card from booking page

* Bug fixes

* Clean up

* Clean up app card

* Add no-show fee messaging on booking page

* Send payment email on payment & add price

* Fix messaging

* Create no show fee charged email

* Send charge fee collected email

* Disable submit on card failure

* Clean up

* Serverside prevent charging card again if already charged

* Only confirm booking if paid for

* Type fixes

* More type fixes

* More type fixes

* Type fix

* Type fixes

* UI changes

* Payment component rework

* Update apps/web/public/static/locales/en/common.json

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update apps/web/public/static/locales/en/common.json

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update apps/web/components/dialog/ChargeCardDialog.tsx

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Update packages/trpc/server/routers/viewer/payments.tsx

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* Revert GTM config

* Adjust payment option dropdown

* Show alert when seats are set

* Small bug fixes

* Create collect card method

* clean up

* Prevent seats & charge no-show fee to be enabled together

* Do not charge no-show fee on unconfirmed bookings

* Add check to collect card method

* Webhook send request emails

* Fix some dark mode colours

* Change awaiting payment language

* Type fixes

* Set height of Select and TextField both to 38px to fix alignment

* Fix message seats & payment error message

* Type fix

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-11 23:44:14 +02:00
Keith Williams af0123a606 Updated issue/PR staleness checks (#8209)
* Updated issue/PR staleness checks

* Changed order of settings to group them better
2023-04-11 22:39:53 +02:00
zomars 709bbf6626 Update yarn.lock 2023-04-11 11:41:48 -07:00
zomars 53097ee3bc Delete lockfile.yml 2023-04-11 11:40:13 -07:00
zomars 31f2002654 Update lockfile.yml 2023-04-11 11:38:20 -07:00
zomars@users.noreply.github.com ee155c3643 Update yarn.lock 2023-04-11 18:23:33 +00:00
zomars 8ab20c3c9f Update lockfile.yml 2023-04-11 11:21:17 -07:00
zomars 4f6d035d29 Create lockfile.yml 2023-04-11 11:07:55 -07:00
zomars 2e5b42ef47 Update yarn.lock 2023-04-11 10:56:30 -07:00
Alex van Andel b055672ea0 v2.7.13
release.yml / release (push) Canceled after 0s
2023-04-11 19:51:38 +02:00
Alex van Andel e4fbca388c Fix yarn.lock file 2023-04-11 19:50:36 +02:00
Joe Au-Yeung 2b8bba09c9 Prevent updating app to enabled on seed app store (#8092) 2023-04-11 21:51:21 +05:30
Alex van Andel 98cf29f655 Wrap useSuspense with NoSSR (#8079) 2023-04-11 21:49:27 +05:30
GitStart-Cal.com ae8706316f CALCOM-7895 - [CAL-1320] remove "application_fee_amount" for all regions (#7933) 2023-04-11 16:16:43 +00:00
Jeroen ReumkensandAlex van Andel ec8e08d442 Added serverside translations to teams page. (#7999)
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-11 21:39:02 +05:30
sean-brydonandPeer Richelsen c33f424333 Fixes /more page + fixes multiple duration badge on BookingPage (#8200)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-11 15:21:24 +00:00
Hariom Balhara 6f2312d1e2 Fix app not visible in app-store (#8202) 2023-04-11 14:58:57 +00:00
Peer Richelsen c2b6070b7e Update package.json
release.yml / release (push) Canceled after 0s
2023-04-11 16:54:49 +02:00
Efraín Rochín a5bebe2b48 bugfix/sync-not-working-properly (#8168) 2023-04-11 16:51:27 +02:00
sean-brydon e3a1f20cc8 Darkmode Fixes (#8191) 2023-04-11 12:15:10 +00:00
sean-brydon ab639591da Fix forcing hard refresh across forced themes (#8188) 2023-04-11 17:20:25 +05:30
Hariom BalharaandPeer Richelsen 21a9b64eb0 Fix missing sylaps icon in admin/apps (#8190)
* Fi missing sylaps icon in admin/apps and remove usage of imageSrc

* Remove imageSrc from googleCalendar and verify that logo is still shown

* Use logo in video apps location select:

* Remove imageSrc from templates

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-11 11:38:37 +00:00
Omar López 636ee7b8a1 Prioritizes published teams over unpublished ones (#8177) 2023-04-11 06:16:57 +00:00
Crowdin Bot 543e526568 New Crowdin translations by Github Action 2023-04-11 02:21:03 +00:00
Hariom Balhara e465c1d71d Redirect on top iframe always - This is to make sure embed redirects on top frame (#8164) 2023-04-11 07:50:15 +05:30
Peer Richelsen cdab9037ce added dark mode upgrade banner (#8172) 2023-04-10 21:14:28 +00:00
Crowdin Bot 21e454d0e2 New Crowdin translations by Github Action 2023-04-10 20:27:50 +00:00
zomars 7384f29a1c Update crowdin.yml 2023-04-10 13:27:00 -07:00
Keith Williams 9016a854ca v2.7.11
release.yml / release (push) Canceled after 0s
2023-04-10 16:46:55 -03:00
Nafees Nazik 446c29dd9c fix: booker phone input style (#8165)
* fix: text area styles

* fix: phone input styles

* fix: use the text area component

* fix: remove focus style
2023-04-10 18:12:15 +02:00
Leandro Miguel NarcisoandPeer Richelsen 2cf1f07d8f Fix loading indicator alignment touching the select input value (#8083)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-09 11:16:33 +00:00
Nafees NazikandPeer Richelsen 4f03f8e66d feat: dynamically elapse time left timer (#7938)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-09 10:20:51 +00:00
e1096620e6 fix: replace ltr and rtl with new ms and me (#8138)
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-04-09 11:13:57 +02:00
sean-brydon d416386d7b Fix loading state - force subtle token to exist (#8153)
* Fix loading state - force subtle token to exist

* Add opacity
2023-04-08 18:50:17 +02:00
Keith Williams 5b7c55b029 v2.7.10
release.yml / release (push) Canceled after 0s
2023-04-07 17:04:56 -03:00
sean-brydon 9b05311d7f Fixes team skeleton - force brand on onboarding (#8142) 2023-04-07 19:28:06 +00:00
sean-brydon 313d25d7d8 Force lightmode (#8141) 2023-04-07 19:17:22 +00:00
Keith Williams 5ec9c41f7c v2.7.9 2023-04-07 15:29:01 -03:00
Nafees Nazik d56386d016 fix: dark mode variant in team member card (#8137) 2023-04-07 15:52:21 +00:00
sydwardraeandJoe Au-Yeung 0968ede733 fixed open-source to open source (#8127)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-04-07 09:15:13 +02:00
alannnc 8e3ed28ba9 Switch order from user/slug (#8134) 2023-04-07 09:13:22 +02:00
Nafees NazikandAlex van Andel 82ea4e9fb7 fix: switch bg when default checked (#8129)
* fix: switch bg

* Update packages/ui/components/form/switch/Switch.tsx

Remove accidental space

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-04-06 20:37:05 +00:00
Nafees Nazik 8a440c24c0 fix: email line height (#8130) 2023-04-06 17:38:13 +00:00
Alex van Andel 88a8da3ef6 Update lockfile 2023-04-06 17:59:17 +02:00
Nafees Nazik 49290fba72 fix: flash of title in event types page (#8114) 2023-04-06 12:25:54 +02:00
Udit Takkar a363b1e903 fix: ui and ux improvements in booking questions (#7734) 2023-04-06 08:17:53 +00:00
Carina WollendorferandCarinaWolli 7b5e2c8bab Don't schedule cancelled workflow reminders (#8096)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-04-06 13:15:01 +05:30
sean-brydon 4b0d22655d Feat/tokens + darkmode + theme support (#7876) 2023-04-05 18:14:46 +00:00
Peer Richelsen 4f92f60d85 added illustrations to app store (#8104) 2023-04-05 19:05:44 +02:00
Nafees Nazik 6986b5af40 Fix: availability not deleteable (#8086)
* fix: make availability deletable

* test: add e2e

* chore: add test id

* test: add a new test

* fix: remove utility
2023-04-05 12:42:22 -03:00
Alex van Andel e043a5efd8 Async import of the appStore packages (#8087) 2023-04-05 11:55:57 -03:00
Peer Richelsen bff28e5d6f discord app (#8101) 2023-04-05 14:07:18 +02:00
GitStart-Cal.comandgitstart-calcom f10ff18d9f FIX-CALCOM-8009 (#8097)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-04-05 11:54:25 +02:00
Nafees Nazik cefe4754c7 fix: add older variables to whitelist (#8095) 2023-04-05 10:35:32 +02:00
Syed Ali Shahbaz 386ad87e64 Event type swagger update for location type (#252)
Updates Location Type documentation in swagger for event type _post and
_patch
2023-03-21 10:32:48 -07:00
zomars 8aa004c34a Syncs with monorepo 2023-03-17 16:57:23 -07:00
Nafees NazikandHariom Balhara 945ab355a5 feat: return cal link in event-types query (#244)
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-03-17 13:57:18 +05:30
Alex van Andel cb54ab670e Added 'hosts' to POST call, PATCH needs a db migration on web (#239)
Complete, but bit of a WIP due to _patch
2023-03-15 16:43:00 -07:00
zomars 2b9af8457c Updates yarn 2023-03-15 15:31:39 -07:00
Alex van Andel cb08bba351 Add GET /teams/{id}/event-types endpoint (#251)
Allows fetching team event types - GET /event-types only lists the user
event types - currently fetching the team event types isn't possible.
2023-03-13 12:24:10 +00:00
Syed Ali Shahbaz 870b2df538 hotfixes swagger delete path (#250)
a quick hotfix 🙏
2023-03-13 09:57:00 +00:00
zomars 464c283e0c Reverts oopsie 2023-03-10 12:01:46 -07:00
Syed Ali Shahbaz 4e24b6f7c0 Swagger/multiple fixes (#248)
This PR adds

- Swagger fixes for Teams endpoint
- Removes unintended remnant from custom input
- Swagger fixes for Payments endpoint
2023-03-10 22:34:14 +05:30
Syed Ali Shahbaz 8fc4eedf5f Adds swagger for schedules (#247)
This PR updates swagger documentation for the Schedules endpoint
2023-03-10 22:33:41 +05:30
Syed Ali Shahbaz 2da8784865 swagger docs update for selected calendars (#246)
Adds swagger doc update for selected calendars API endpoint
2023-03-10 22:33:27 +05:30
Syed Ali Shahbaz ccf93190d7 Swagger docs for webhooks (#245)
This PR updates and adds to the swagger documentation for /webhooks
endpoint
2023-03-10 22:33:09 +05:30
Syed Ali Shahbaz e54e1aa72e Updates Availability and Attendees swagger docs, hotfixes Booking API doc (#241)
- Adds swagger definition and swagger fixes to /availability and
/attendees
- Also fixes Booking API endpoint definition (startTime -> start,
endTime -> end)
2023-03-10 19:29:24 +05:30
Alex van Andel 59c25d41fd Removed next-transpile-modules 2023-03-06 12:45:04 +00:00
zomars d65d08a3a1 Type fix 2023-03-03 13:20:27 -07:00
zomars d8d875cc01 Upgrades next 2023-02-28 15:01:11 -07:00
Syed Ali Shahbaz 2a5688f2a6 Adds the ability to confirm a booking using API (#243)
Simply adds the ability to update the status of a booking (meant for
confirming a booking) using the API
Fixes: https://github.com/calcom/cal.com/issues/7121
2023-02-23 15:04:48 -07:00
Syed Ali Shahbaz d47fa578b7 Fixes _patch swagger paramters 2023-02-23 20:46:55 +05:30
Syed Ali Shahbaz a4f82fa6fa Adds swagger definition to Event Types (#242)
This PR adds swagger definition to Event Types endpoint with request
body examples for POST and PATCH requests
2023-02-23 13:54:10 +01:00
zomars 42eb7041d4 New linting rules 2023-02-16 14:01:40 -07:00
f02cfc9990 Swagger definition general fixes (#237)
This PR addresses definition errors currently residing within our
swagger doc.
 
~DISCLAIMER: There is still an error for our DELETE booking call, as
open API standard doesn't expect the DELETE call to contain a request
body, but we are requiring it in the way it currently works. Perhaps we
should move those to Query Parameters instead. Thoughts @zomars @emrysal
?~

It was taken care of by @leog and the docs are now updated as per the
endpoint

<img width="247" alt="image"
src="https://user-images.githubusercontent.com/52925846/217799706-21b7c21d-696b-4e20-a682-c8a949694b61.png">
<img width="629" alt="image"
src="https://user-images.githubusercontent.com/52925846/217799842-c903c23a-0b0d-4208-a3e9-01a682eeff97.png">

---------

Co-authored-by: Leo Giovanetti <hello@leog.me>
Co-authored-by: Omar López <zomars@me.com>
2023-02-13 12:52:11 +00:00
zomars fdb45e3745 More tests 2023-02-08 19:56:41 -07:00
zomars 317e05511b Shared insntances test fix 2023-02-08 19:33:23 -07:00
zomars 0389ebfed5 Testing disconnect 2023-02-08 19:30:03 -07:00
Syed Ali Shahbaz 2248d7069f Improves Destination Calendar docs in swagger (#235)
Adds swagger definition to `destination-calendar` endpoint
2023-02-08 17:16:32 -07:00
Syed Ali Shahbaz f170f17f2c Improves custom inputs docs in swagger (#233)
Adds swagger definition to `custom-inputs` endpoint
2023-02-08 14:38:04 -07:00
zomars dc0a6eaa32 Export for typecheck 2023-02-08 10:56:00 -07:00
zomars 0b2724124a Updated checkLicense 2023-02-08 10:56:00 -07:00
Syed Ali Shahbaz 3ebab100ce Fixes invalid availability schema (#236)
Hotfix attempt to fix fix invalid availability _post schema in swagger
2023-02-08 15:52:08 +01:00
Omar López 992bdc0b54 Fixes paginated endpoints (#234)
- Passing an invalid number or 0 was causing trouble
2023-02-07 17:20:21 -07:00
Syed Ali Shahbaz 279c3da21f Improves Booking docs in swagger (#219)
Adds definition to booking swagger definition, and fixes user _post
definition example
2023-02-07 08:41:08 -07:00
Omar López 3517ef6adc Upgrades typescript to 4.9.4 (#230)
https://github.com/calcom/cal.com/pull/6747
2023-01-26 18:51:06 -07:00
zomars 0af9e11360 Revert "Upgrades typescript"
This reverts commit 944a50bd29.
2023-01-26 14:28:41 -07:00
zomars 944a50bd29 Upgrades typescript 2023-01-25 18:37:51 -07:00
zomars 9af022b663 Fix for multi-tenant users 2023-01-25 14:14:43 -07:00
zomars a4a6660421 Fix deploy script 2023-01-23 17:24:47 -07:00
Leo Giovanetti 6cec8620cb Pagination issue fixed, total added (#227)
Fixes #217.
2023-01-18 12:49:31 -07:00
Udit Takkar 7aebdb8c96 fix: use schema from zod-utils (#225)
fixes:- https://secure.helpscout.net/conversation/2117165409/2395

How to test? 
Create an event type with custom inputs 
GET Request on /event-types end point


After:- 
<img width="1440" alt="Screenshot 2023-01-07 at 4 57 39 PM"
src="https://user-images.githubusercontent.com/53316345/211147930-1154f1ad-5309-4e9c-b2e0-164169717d47.png">

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-01-07 08:56:13 -07:00
zomars 2808b798df Upgrades next 2023-01-05 18:02:06 -07:00
Hariom Balhara 9c23a8e5ab Security Fixes (#224)
Fixes - 2,3,4 security vulnerabilities reported in this message.
https://calendso.slack.com/archives/C03127U5S5Q/p1671922033089329

More Fixes
- Dont't allow a user to add a random attendee to a booking not owned by
him
- Don't allow a user to add a random cal user as an organizer of the
booking.
- Membership deletion should be as per the Privileges of
Owner,Admin,Member
2023-01-04 15:17:47 -07:00
zomars 604d937661 Linting 2022-12-20 11:58:30 -07:00
Carina WollendorferandCarinaWolli c3e0852541 Only allow team admin and owner to create team event types (#220)
Currently, anybody can create an event type for any team. With this PR
we only allow team ADMIN and OWNER to create event types for the team.

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2022-12-20 10:50:46 -07:00
Carina WollendorferandCarinaWolli 161ebacfef Don't allow team admins to give owner permissions (#221)
Throw an error if a user of a team with ADMIN permission tries to change
permission to OWNER (Bug#3)

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2022-12-20 10:45:24 -07:00
zomars 12f19ff7c0 Upgrades zod 2022-12-15 15:56:23 -07:00
Joe Au-Yeung 5d892df019 Allow seatsPerTimeSlot and seatsShowAttendees in event type calls (#216)
This PR allows `seatsPerTimeSlot` and `seatsShowAttendees` in event type
POST and PATCH calls
2022-12-15 15:36:09 -07:00
zomars c129586336 Linting 2022-12-08 16:34:09 -07:00
zomars f3c5f9bc0c Import fixes 2022-12-08 16:28:28 -07:00
zomars 8b74f463f4 Needed for console 2022-12-08 15:00:06 -07:00
zomars 41d22c8ccb Fixes for console 2022-12-05 16:09:19 -07:00
zomars ae7c3e2d6a Removes unused cache 2022-12-05 14:16:58 -07:00
zomars b3443cd22d Revert fix 2022-12-02 18:39:30 -07:00
zomars e15f6abc9b Fixes 2022-12-02 15:22:56 -07:00
Omar López d35f27014e Implements API key endpoint (#211)
This allow us to manage our API keys directly from the API itself.

User can:
- Create own API keys
- Edit own API keys (only the note field for now)
- Delete own API keys
- Get own API keys

Admin can:
- CRUD for any user
- Get all API keys
2022-11-29 15:06:23 -07:00
Omar López 26ea743af2 Update README.md 2022-11-29 09:07:53 -07:00
Omar López 48b637164c Update README.md 2022-11-27 15:36:36 -07:00
zomars 055699f612 Various import and type fixes 2022-11-25 06:58:21 -07:00
zomars 94ecb1908a Type fixes 2022-11-25 06:03:40 -07:00
zomars faa685adb6 Sync to monorepo 2022-11-25 05:47:35 -07:00
zomars 3d84ce68c9 Tests updates 2022-11-22 19:50:00 -07:00
alannncandzomars c016a4343d added more endpoints and validations for publish-pay teams (#209)
## What does the PR do?

- Team billing via API

Just like the web project, we validate that team has stripe metadata
before converting requestedSlug to slug.

Co-authored-by: zomars <zomars@me.com>
2022-11-22 13:24:25 -07:00
Syed Ali Shahbaz 8e25b9244c Fix deployment failure due to prettier (extra spaces) (#214)
Simply removes extra spaces which are causing prettier to fail
deployment, introduced in the PR for USER swagger doc update
2022-11-21 10:49:55 +05:30
Syed Ali Shahbaz bbaa8ae5e7 Adds more definition to USER swagger (#212)
Adds more definition for documentation for the USER endpoints
2022-11-18 12:20:15 -07:00
Leo Giovanetti 3654677a20 Fixing unit test (#205)
Fixing POST unit test for `apps/api/test/lib/bookings`
2022-11-18 12:19:33 -07:00
Syed Ali Shahbaz 4080e5bc5e Update availabilities _post swagger def (#210)
- Adds more specs to the swagger definition in /availabilities for doc
experimentation
2022-11-18 12:18:07 -07:00
Alex van Andel e5827b035d Fix type error with null being an invalid value (#213) 2022-11-18 17:08:49 +05:30
Alex van Andelandzomars 51bc3d93c1 user: Add email and username, remove bufferTime,startTime,endTime (#202)
Co-authored-by: zomars <zomars@me.com>
2022-11-17 11:35:06 -07:00
Alex van Andel 0f5017010f Fix lint error 2022-11-07 14:48:32 +00:00
zomars e0619d383a Sync package.json 2022-11-04 12:14:54 -07:00
Omar LópezandAlex van Andel d1bbaef5c6 Refactor membership endpoints (#204)
refs #175

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2022-10-21 13:54:28 -06:00
zomars d93fd26a1e Removed unused methods middleware 2022-10-21 13:30:09 -06:00
zomars 6522600c42 Add missing bodyUserId 2022-10-21 12:55:35 -06:00
zomars 7617cd43e1 Patching bodyUserId requests 2022-10-21 12:55:15 -06:00
Alex van Andel b30995456c Bring back @calcom/ui 2022-10-21 14:13:19 +01:00
Alex van Andel 9448e67ed0 Added status: true to booking model (#203) 2022-10-21 14:04:20 +01:00
Alex van Andel adfada993e Remove the Signup from /api and remove @calcom/ui dep (#201)
Also adds missing dependencies
2022-10-21 13:19:31 +01:00
Alex van Andel dee0f6a415 Remove GET /availabilities (#188)
Follows-up on earlier discussions about the relationships of
/availabilities and /schedules.

`GET /schedules/:id` returns a schedule with associated availabilities
in the `availabilities` property. It gives more context and less
consumer work to perform GET actions using this endpoint. Other
endpoints of this collection do make sense.

Proposing also to rename the /availabilities collection to
/availability; given after this it always involves one and only one
/availability record in CRUD.
2022-10-21 00:58:20 +01:00
Leo GiovanettiandAlex van Andel debc8dbafb Using abstracted booking cancellation (#191)
Implemented `DELETE /booking/:uid` as well as `DELETE
/booking/:uid/cancel` based on abstracted cancellation logic from
webapp.

PR dependant on https://github.com/calcom/cal.com/pull/5105

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2022-10-21 00:49:57 +01:00
Omar López f66ed50ecb Selected Calendars endpoints refactor (#193)
refs #175
2022-10-20 11:35:02 -06:00
Alex van Andel 109377b65c Returns bookings in response where user is attending (#196) 2022-10-20 18:27:24 +01:00
Alex van Andel f4d52b88a4 Changed req to query to allow passing in userId, not session (#197) 2022-10-20 18:27:01 +01:00
Alex van Andel 1f9be423ad Set start and endTime to iso8601 (#198) 2022-10-20 18:26:43 +01:00
Alex van Andel ecd20d63c9 Added attendees & user (#192) 2022-10-19 19:35:34 +01:00
Omar López 03d5f51ceb Refactor/webhooks (#186)
refs #175
2022-10-19 12:26:12 -06:00
Alex van Andel ce2df7641f Feature/additional fields (#189)
Added timeZone, attendees.(email, name, timeZone, locale), user.(email,
name, timeZone, locale) & metadata
2022-10-19 17:03:54 +01:00
zomars 07b011424f Formatting 2022-10-15 10:54:22 -06:00
zomars 00bd908916 Fixes permission errors 2022-10-14 17:41:28 -06:00
zomars 37fa76315a Allow to update booking description 2022-10-14 15:52:17 -06:00
zomars 25d3d12319 Adds custom inputs to eventTypes responses 2022-10-14 15:52:09 -06:00
zomars 11ffdccb4a Removes locale altogehter
@see https://github.com/vercel/next.js/issues/29000
2022-10-14 13:26:30 -06:00
zomars 7708ee83a1 Locale fixes 2022-10-14 13:16:46 -06:00
zomars d38015c737 Locale fixes 2022-10-14 13:02:53 -06:00
zomars ad35d3a5cd Linting 2022-10-14 12:57:50 -06:00
zomars 9c35ff2d2e Locale fixes 2022-10-14 11:42:31 -06:00
zomars ccf0a40b67 Misc fixes 2022-10-14 11:42:05 -06:00
Omar López e3fa0e546b Refactor schedule endpoints (#185) 2022-10-13 14:54:38 -06:00
zomars 31610dd178 Adds missing description field to patch 2022-10-13 13:39:04 -06:00
Omar López 6ba70a7259 Refactor/custom inputs (#184)
refs #175 

To be merged after #183
2022-10-13 12:30:48 -06:00
Omar LópezandLeo Giovanetti 8c24c5c714 Refactor/booking logic (#183)
refs #175 

Reuses the same logic for creating bookings from the web app.

Co-authored-by: Leo Giovanetti <hello@leog.me>
2022-10-13 12:29:30 -06:00
Omar López f13694fd13 Refactors event-types endpoints (#181)
refs #175
2022-10-11 14:14:03 -06:00
zomars 4ba0395efa Permission fixes 2022-10-11 14:09:22 -06:00
Hariom Balhara 7aeb247b1a Delete unused file. If needed import from @calcom/core (#156) 2022-10-11 15:36:18 +01:00
Alex van Andel a506c7da33 Refactor + fix userIds filter (#179)
This fix means a behaviour change to GET calls. Instead of a JSON
payload, instead a filter param has been added to the URL itself. GET
payloads are very unexpected in API designs, even though supported.

* Todo write tests (with postman?)
* Turn isAdmin logic into common middleware

```bash
curl "http://localhost:3002/v1/schedules?apiKey=...&userId=2"
```

```bash
curl "http://localhost:3002/v1/schedules?apiKey=..." \
  -d '{"name":"Hello", "userId": 2}' \
  -H 'Content-Type: application/json'
```
2022-10-11 15:33:25 +01:00
Omar López da61841525 Refactors booking references endpoints (#180)
refs #175
2022-10-11 15:25:57 +01:00
zomars 88332fb2ab Refactors teams 2022-10-10 20:25:47 -06:00
zomars c03144c343 Fixed major flaw with authMiddleware
authMiddleware should not use defaultResponder directly as it will catch thrown error and we need those errors to prevent running the rest of the code.
2022-10-10 20:23:08 -06:00
zomars a35454bb68 Me cleanup 2022-10-10 18:02:36 -06:00
Omar López 18e96e2a47 Refactors availabilities endpoints (#177)
refs #175
2022-10-10 09:42:15 -06:00
Omar López cb9ce8a8c5 Merge pull request #176 from calcom/refactor/attendees
Refactors attendees' endpoints
2022-10-07 16:08:09 -06:00
zomars d4a2b8e791 Refactors attendees' endpoints 2022-10-07 13:08:25 -06:00
Omar López 85890a6acb Merge pull request #172 from calcom/fix/invalid-eventtypeid
Recurring event booking: invalid eventTypeId
2022-10-07 10:59:14 -06:00
Syed Ali Shahbaz f5d953ef1c Hotfix/schedule (#174)
* Allows empty call

An authorized API call by a non-admin user with empty body will still fetch his data now

* Adds missing return
2022-10-07 15:33:04 +05:30
Joe Au-YeungandSyed Ali Shahbaz d68ce5e72f Admin privileges for /availabilities endpoint (#169)
* List other user's availabilities

* /availabilityId methods for other users

* Add return statements

* Accept userId single value or array

* Add zod schema checks

* Filter for schedules only with an availability

* Adds safeParsing of JSON before safeParsing of zod

* Removed console log

* Adds safe JSON parsing before .safeParse

* Allow API call without necessarily passing userId

Allow `/availabilities` call by a regular user without having to pass their userId to make it work

Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
2022-10-07 15:26:02 +05:30
Syed Ali Shahbaz 0abf286785 Merge pull request #168 from calcom/create-schedule-with-availability
Admin privileges for /schedules
2022-10-07 10:23:41 +02:00
Syed Ali Shahbaz 628306793d Prettier fix :/ 2022-10-07 13:47:46 +05:30
Syed Ali Shahbaz b05b6e48e7 Fixes another typo 2022-10-07 13:41:17 +05:30
Syed Ali Shahbaz 8eaad0c1c6 fixed typo 2022-10-07 13:34:02 +05:30
Syed Ali Shahbaz 9a65c547dc Adds missing return after res 2022-10-07 13:24:55 +05:30
Syed Ali Shahbaz cc01e47d58 Merge pull request #173 from calcom/fix/create-schedule-availability
Fix/create schedule availability
2022-10-07 09:46:07 +02:00
Syed Ali Shahbaz 21e081c64c Adds meaningful response for API caller 2022-10-07 13:15:35 +05:30
Syed Ali Shahbaz affba8bf66 Adds meaningful response for API caller 2022-10-07 13:13:56 +05:30
Syed Ali Shahbaz 3bdebba21e Adds meaningful response for the API caller 2022-10-07 13:12:57 +05:30
Syed Ali Shahbaz 79fabe0333 Adds safeParseJSON to the body 2022-10-07 13:03:09 +05:30
Syed Ali Shahbaz 36a0ebfbad Adds safe json parse of the body
It ensures that the body complies with the safe parsing of the JSON so that if the body sent is not a valid JSON, we convert it into an empty JSON. Would improve in handling the response of such cases as a follow up for improved UX
2022-10-07 12:46:35 +05:30
Syed Ali Shahbaz 12f54773f9 Adds safeParseJSON.ts file 2022-10-07 12:43:47 +05:30
Leo Giovanetti 70b9969fe3 Fixing en error case for invalid eventTypeId 2022-10-06 18:27:49 -03:00
Leo Giovanettiandzomars 2a05f15156 Recurring booking implementation (#167)
* Recurring booking implementation

* Tweaks to expected texts in tests

* Applied feedback

Co-authored-by: zomars <zomars@me.com>
2022-10-06 17:40:41 -03:00
Joe Au-Yeung da88beb1f5 Fix type errors 2022-10-06 15:06:07 -04:00
Joe Au-Yeung 00ccb4ffd1 Simplify get /schedules 2022-10-06 14:41:50 -04:00
Joe Au-Yeung 2a7a111855 Safe parse for userId 2022-10-06 14:38:17 -04:00
Omar López 7909d90915 Merge pull request #170 from calcom/admin-event-types
Allow for admin to edit other user's event types
2022-10-06 10:33:52 -06:00
Joe Au-Yeung 48f270d032 Remove console log 2022-10-06 10:59:46 -04:00
Joe Au-Yeung 34f5f5f83f Pass userId as single value or array 2022-10-06 10:55:14 -04:00
Joe Au-Yeung 4ac9c1e6dd Remove old comment 2022-10-06 10:02:35 -04:00
Joe Au-Yeung 372e188228 Pass userId as a single value or an array 2022-10-06 09:55:34 -04:00
Joe Au-Yeung 77b89fda05 Add return statements 2022-10-05 16:02:34 -04:00
Joe Au-Yeung ce8af8b6a5 Allow for admin to edit other user's event types 2022-10-05 15:59:34 -04:00
Joe Au-Yeung a5413b40ab Add ability to get, post, and delete for other users if admin 2022-10-05 11:04:58 -04:00
Joe Au-Yeung 95fc04a453 Add check for userId and admin to top 2022-10-05 10:05:04 -04:00
Joe Au-Yeung 1adace1c0d Create new availability on new schedule 2022-10-05 09:56:27 -04:00
Joe Au-Yeung 7e9226fabc Merge pull request #165 from calcom/hotfix/connect-user-on-new-event-type 2022-10-04 09:11:22 -04:00
Joe Au-Yeung 362d8ca769 Connect user to new event type 2022-10-03 14:26:00 -04:00
Peer Richelsen d14c8404e7 Update index.ts 2022-09-24 13:23:10 +00:00
Omar López a36b6fa923 Merge pull request #163 from calcom/fix/admin-me
fix: userId not 0 for fixing /me endpoint
2022-09-07 13:31:50 -06:00
Agusti Fernandez Pardo be200cd076 fix: userId not 0 for fixing /me endpoint 2022-09-07 18:18:43 +02:00
Agusti Fernandez Pardo fcb9ca6ace Merge pull request #162 from calcom/fix/no-prisma-defined 2022-09-06 19:40:48 +02:00
Agusti Fernandez Pardo fc4d0ab3ea fix: prisma not defined 2022-09-06 19:40:23 +02:00
Agusti Fernandez Pardo 5d09739966 Merge pull request #161 from calcom/fix/me 2022-09-06 19:20:41 +02:00
Agusti Fernandez Pardo 80bd5068d4 fix: don't use defaultHandler w promise in api yet, was from console 2022-09-06 19:20:04 +02:00
Agusti Fernandez Pardo 7707275f94 Merge branch 'main' into production 2022-09-06 19:06:44 +02:00
Agusti Fernandez Pardo d210623fbd Merge pull request #160 from calcom/fix/build-issues 2022-09-06 19:06:29 +02:00
Agusti Fernandez Pardo 3caee6c697 fix: removes daily-event-reference endpoints and types 2022-09-06 19:04:16 +02:00
Agusti Fernandez Pardo 22359dda1b Merge branch 'main' into production 2022-09-06 18:13:06 +02:00
Omar López ddc084044a Merge pull request #158 from calcom/feat/me-endpoint
feat: adds me endpoint that returns session info
2022-09-05 14:07:51 -06:00
Agusti Fernandez Pardo 731288bcb6 fix: use middleware, refactor into _get 2022-09-05 21:31:12 +02:00
Agusti Fernandez Pardo 4d74a6c896 feat: dont use ensureSession, but userId from req 2022-09-05 21:16:45 +02:00
Agusti Fernandez Pardo bc8623edb8 feat: adds me endpoint that returns session info 2022-09-05 21:01:55 +02:00
zomars 181921f9c7 Fixes mismatches 2022-08-17 11:40:12 -06:00
Omar López 0a331ff093 Merge pull request #154 from calcom/upgrade/deps
Fixes mismatches
2022-08-17 11:38:45 -06:00
zomars 1de91a5124 Fixes mismatches 2022-08-15 18:38:25 -06:00
zomars 188ad55686 Update README 2022-08-12 12:58:32 -06:00
Omar López c1b897c39a Merge pull request #153 from calcom/feat/license
Feat/license
2022-08-11 13:40:27 -06:00
zomars db937ce00a Matches local lint with CI lint 2022-08-11 12:47:36 -06:00
zomars 7560fdbfc5 Squashed commit of the following:
commit fc87557902
Author: zomars <zomars@me.com>
Date:   Fri Aug 5 15:08:36 2022 -0600

    Fixes callbackUrl
2022-08-09 17:36:18 -06:00
Agusti Fernandez Pardo 8dfc62386d fix: add CALCOM_LICENSE_KEY in env vars section in readme 2022-08-09 19:39:43 +02:00
Agusti Fernandez Pardo 87d8417dd9 feat: add license and readme about copyright 2022-08-09 19:17:42 +02:00
zomars fc87557902 Fixes callbackUrl 2022-08-05 15:08:36 -06:00
Agusti Fernandez Pardo 244f64d8e7 fix: remove unneeded dep from api package.json app-store-cli 2022-08-04 19:57:20 +02:00
Agusti Fernandez Pardo 12fe6af995 feat: adds license check 2022-08-04 19:54:25 +02:00
zomars 915610763e Build fixes 2022-08-03 11:49:45 -06:00
Omar López 0f13e80785 Merge pull request #150 from calcom/monorepo/ee
Fixes import
2022-07-28 13:58:36 -06:00
zomars 60c2f73607 Migrates EE code 2022-07-28 13:51:20 -06:00
zomars 159792831a New import 2022-07-22 20:32:10 -06:00
zomars aba7b1ec1c Linting 2022-07-21 22:21:24 -06:00
Agusti Fernandez Pardo a8e8acd053 Merge pull request #149 from calcom/fix/users-pagination
fix: users pagination remove min/max as its a string not a number
2022-07-14 19:57:22 +02:00
Agusti Fernandez Pardo aa12f893e8 fix: users pagination remove min/max as its a string not a number, also add new env var to example 2022-07-14 19:44:24 +02:00
zomars 80500ebaf0 Fixes lint:fix script 2022-07-13 15:13:24 -06:00
zomars 7a53c5bb85 Adds missing lint scripts 2022-07-12 15:24:19 -06:00
Agusti Fernandez Pardo 60e9c26dfe Merge pull request #148 from calcom/production
rebase dayjs fix in Production to main
2022-07-12 20:37:24 +02:00
Agusti Fernandez Pardo c352720877 Merge branch 'main' into production 2022-07-12 20:35:49 +02:00
Agusti Fernandez Pardo b2f3242a8e Merge branch 'main' into production 2022-07-12 20:35:10 +02:00
Agusti Fernandez Pardo 3798c27613 Merge branch 'feat/availability-teams' into production 2022-07-12 20:28:02 +02:00
Agusti Fernandez Pardo 2bb6c7de45 Merge pull request #135 from calcom/feat/availability-teams
Feat/availability teams + pagination for /users
2022-07-12 20:16:57 +02:00
Agusti Fernandez Pardo 67fe26ec69 fix: lint issue import order 2022-07-12 20:09:54 +02:00
Agusti Fernandez Pardo f87eb7d18e fix: lint add spaces 2022-07-12 20:01:51 +02:00
Agusti Fernandez Pardo f985bbd1ff fix: move patch to no then/catch 2022-07-12 20:01:25 +02:00
Agusti Fernandez Pardo 3f6e7904cb fix: no http_method middleware needed as already handled by defaultHandler 2022-07-08 21:49:14 +02:00
Agusti Fernandez Pardo 6971ba249f fix: add optional to pagination query's 2022-07-08 21:47:31 +02:00
Agusti Fernandez Pardo c8829fc08b fix: rename pageNumber to page 2022-07-08 20:19:51 +02:00
Agusti Fernandez Pardo 530752147e fix: use zod schema for parsing page query param 2022-07-08 20:15:25 +02:00
Agusti Fernandez Pardo ec24711990 Merge pull request #139 from calcom/fix/axiom-package
fix: add next-axiom to package.json
2022-07-08 19:35:22 +02:00
Agusti Fernandez PardoandOmar López 76d0b0c1ee Update pages/api/users/_get.ts
remove console log statement

Co-authored-by: Omar López <zomars@me.com>
2022-07-08 19:34:26 +02:00
Agusti Fernandez PardoandOmar López 80e414d4f5 Update pages/api/availability/_get.ts
no if just return

Co-authored-by: Omar López <zomars@me.com>
2022-07-08 19:33:50 +02:00
Agusti Fernandez PardoandOmar López a72fbfa093 Update pages/api/availability/_get.ts
improve error message team no members

Co-authored-by: Omar López <zomars@me.com>
2022-07-08 19:33:37 +02:00
Agusti Fernandez PardoandOmar López f6faa8bc46 Update pages/api/users/_get.ts
remove console log

Co-authored-by: Omar López <zomars@me.com>
2022-07-08 19:33:17 +02:00
Agusti Fernandez PardoandOmar López bd485b7b77 Update pages/api/teams/_get.ts
fix prisma import

Co-authored-by: Omar López <zomars@me.com>
2022-07-08 19:33:00 +02:00
zomars 308c192912 Splits booking/[id] endpoint
# Conflicts:
#	pages/api/bookings/[id].ts
2022-07-08 11:22:08 -06:00
zomars 2f032cee47 Splits booking/[id] endpoint 2022-07-08 11:21:40 -06:00
Agusti Fernandez Pardo 03254b83da Merge pull request #144 from calcom/fix/add-middlewares-back-bookingId
fix: add middlewares back
2022-07-08 18:59:20 +02:00
Agusti Fernandez Pardo c2816815cc fix: add middlewares back 2022-07-08 18:58:29 +02:00
Agusti Fernandez Pardo 916ceb57c6 Merge pull request #143 from calcom/fix/missing-return-bookings-id
fix: bookings:id
2022-07-08 18:51:33 +02:00
Agusti Fernandez Pardo 54b36b9624 fix: bookings:id fix bad isAdmin double if adding missing return replace with || OR instead 2022-07-08 18:49:55 +02:00
Agusti Fernandez Pardo 27482daaec Merge pull request #142 from calcom/fix/booking-no-middlewares
fix: remove old middlewares in bookingId
2022-07-08 18:27:53 +02:00
Agusti Fernandez Pardo dfa4c06e54 fix: remove old middlewares in bookingId 2022-07-08 18:27:13 +02:00
Omar López 7d59a1390c Merge pull request #141 from calcom/fix/add-calcomdayjs-prod
fix: add calcom dayjs transpile
2022-07-08 10:02:41 -06:00
Agusti Fernandez Pardo 8425f88464 fix: add calcom dayjs transpile 2022-07-08 17:58:18 +02:00
Agusti Fernandez Pardo c28e96045c fix: adds returns, no breaks 2022-07-08 09:26:47 -06:00
Omar López 4c696b2cea Merge pull request #140 from calcom/fix/booking-id
Fix/booking
2022-07-08 09:25:20 -06:00
Agusti Fernandez Pardo 6b09fb24ab fix: adds returns, no breaks 2022-07-08 17:23:06 +02:00
Agusti Fernandez Pardo 13d013bdf8 Merge branch 'main' into fix/booking-id 2022-07-08 17:14:02 +02:00
Agusti Fernandez Pardo cef2768725 fix: add next-axiom to package.json 2022-07-08 02:05:38 +02:00
Agusti Fernandez Pardo 1266665710 Merge pull request #138 from calcom/chore/add-axiom
feat: add axiom
2022-07-08 02:00:36 +02:00
Agusti Fernandez Pardo 599dccdcce feat: add axiom 2022-07-08 02:00:00 +02:00
Leo Giovanetti a5976ec5c6 Merge pull request #137 from calcom/chore/upgrade-next
Upgrading nextjs
2022-07-07 15:08:51 -03:00
Agusti Fernandez Pardo f93cb48d4d fix: query partial type 2022-07-07 18:56:27 +02:00
Leo Giovanetti ab78c0b9ec Upgrading nextjs 2022-07-06 17:21:12 -03:00
Agusti Fernandez Pardo 44ce77f814 fix: test return booking get 2022-07-06 01:17:59 +02:00
Agusti Fernandez Pardo a6e199be67 fix: make availability for teamId work 2022-07-05 23:05:29 +02:00
Agusti Fernandez Pardo f1ee03f297 fix: add teams memberships users 2022-07-05 20:58:26 +02:00
Agusti Fernandez PardoandOmar López 2263e04217 Update pages/api/availability/_get.ts
add select: availabilitUserSelect

Co-authored-by: Omar López <zomars@me.com>
2022-07-05 20:35:30 +02:00
Agusti Fernandez PardoandOmar López 5dbb2066e0 Update pages/api/availability/_get.ts
add initialData: {user}

Co-authored-by: Omar López <zomars@me.com>
2022-07-05 20:34:53 +02:00
Agusti Fernandez Pardo 9b5c7c5120 fix: remove unused import 2022-07-05 20:13:13 +02:00
Agusti Fernandez Pardo a63b623a7d feat: teamId availability in API 2022-07-05 20:12:14 +02:00
Agusti Fernandez Pardo 74c227f5f1 Merge pull request #134 from calcom/fix/transpile-calcom-dayjs
fix: transpile new @calcom/dayjs package in API
2022-07-02 05:30:59 +02:00
Agusti Fernandez Pardo 517749812d fix: missing @ 2022-07-02 05:04:21 +02:00
Agusti Fernandez Pardo 571f3fda4e fix: transpile new @calcom/dayjs package in API 2022-07-02 04:49:09 +02:00
Agusti Fernandez Pardo be2647790c feat: refactor teams and add team availability 2022-06-30 00:01:14 +02:00
Agusti Fernandez Pardo 6ed007d873 Merge pull request #133 from calcom/fix/api-feedback
fix: address issues raised in preview PR
2022-06-24 01:17:28 +02:00
Agusti Fernandez Pardo 561271f3f6 fix: isAdmin from req, no isAdminGuard everywhere 2022-06-24 00:53:15 +02:00
Agusti Fernandez Pardo f85b00507a fix: add type import for NextApiRequest 2022-06-24 00:47:27 +02:00
zomars 3c32bc8528 Update customPrisma.ts 2022-06-23 16:42:47 -06:00
Omar López bfe27057a0 Update lib/constants.ts 2022-06-23 16:40:01 -06:00
Agusti Fernandez Pardo 4e738cf80c fix: minor readme update 2022-06-24 00:31:55 +02:00
Agusti Fernandez Pardo 61c82eb197 fix: address issues raised in preview PR 2022-06-24 00:26:40 +02:00
Agusti Fernandez Pardo 9b142640d5 Merge pull request #132 from calcom/fix/userId-not-id
fix: userId not, id remove templates stall
2022-06-24 00:12:10 +02:00
Agusti Fernandez Pardo 04b9b71310 fix: userId not, id remove templates stall 2022-06-24 00:09:23 +02:00
Agusti Fernandez Pardo d675535cdf Merge pull request #130 from calcom/feat/dynamic-prisma
Feature: custom Prisma for self-hosted deployments needed for new hosted admin console
2022-06-23 23:39:29 +02:00
Agusti Fernandez Pardo aa64f32378 fix set headers error by adding missing return 2022-06-23 23:20:07 +02:00
Agusti Fernandez Pardo c3996221e1 fix: don't require apiKey if already using customPrisma with calcom license key 2022-06-23 19:16:12 +02:00
zomars 0830abf057 Scripts should be as pure as possible 2022-06-22 13:30:02 -06:00
Agusti Fernandez Pardo b6729d8b82 fix custom prisma works 2022-06-22 05:49:24 +02:00
Agusti Fernandez Pardo 6e78bf15f0 feat: databaseUrl customPrisma 2022-06-21 23:02:43 +02:00
Agusti Fernandez Pardo 7558a73ab7 fix: dont generate schemas for console 2022-06-20 03:18:13 +02:00
Agusti Fernandez Pardo f0f27857fa no package console 2022-06-20 03:14:24 +02:00
Agusti Fernandez Pardo 312664d881 fix generate schemas console 2022-06-20 03:13:03 +02:00
Agusti Fernandez Pardo 48675f4e7a fix add back console 2022-06-20 03:10:10 +02:00
Agusti Fernandez Pardo e68e6d1165 no console in package 2022-06-20 02:30:51 +02:00
Agusti Fernandez Pardo 4626b3dffa fix: 2022-06-20 02:29:18 +02:00
Agusti Fernandez Pardo c3bed7ba8f fix: add console to package 2022-06-20 02:26:20 +02:00
Agusti Fernandez Pardo 39ce6287fc fix: no need to target 2017 2022-06-18 22:30:27 +02:00
Agusti Fernandez Pardo 60688e2e91 fix: make isAdmin require req.prisma too 2022-06-18 03:03:13 +02:00
Agusti Fernandez Pardo cc534a2914 fix: remove console from api deps 2022-06-18 02:35:39 +02:00
Agusti Fernandez Pardo 5b28e9ec1c fix: main merging issues 2022-06-18 02:16:15 +02:00
Agusti Fernandez Pardo 6e68671c2a fix: merge w main 2022-06-18 01:52:37 +02:00
Agusti Fernandez Pardo 374a6e087a feat: remove datacredentials, move to deployment.databaseUrl 2022-06-17 23:23:28 +02:00
Omar López 8f0d1f8c73 Merge pull request #129 from calcom/fix/no-user-metadata
fix: remove user metadta from validations
2022-06-16 15:57:29 -06:00
Agusti Fernandez Pardo 2682db8fcd fix: remove user metadta from validations 2022-06-16 23:38:36 +02:00
Agusti Fernandez Pardo 5a914934dd Merge pull request #127 from calcom/fix/optional-userId-availability
fix: makes id optional in availability
2022-06-16 21:53:15 +02:00
Agusti Fernandez Pardo 29be8f5266 fix: makes id optional in availability 2022-06-16 21:50:41 +02:00
Agusti Fernandez Pardo def5c8dd4c Merge pull request #126 from calcom/feat/improve-readme-deploy
feat: improve deployment docs for api
2022-06-16 03:11:32 +02:00
Agusti Fernandez Pardo 8b87cde733 fix: _delete missing userId rename 2022-06-16 01:48:29 +02:00
Agusti Fernandez Pardo 1889ececf8 feat: improve deployment docs for api 2022-06-16 01:27:26 +02:00
Agusti Fernandez Pardo d3785bb6f8 Merge pull request #125 from calcom/feat/users-id-availability
Feat/users id availability
2022-06-16 01:06:11 +02:00
Agusti Fernandez Pardo 11f3d411b3 fix: rename users id to users userId to easier availability sharing _get endpoint 2022-06-16 00:18:40 +02:00
Agusti Fernandez Pardo 4389288e69 feat: adds users/id/availability endpoint 2022-06-16 00:04:04 +02:00
Agusti Fernandez Pardo bcb61ab280 Merge pull request #124 from calcom/production
Production rebase main
2022-06-15 23:08:11 +02:00
Agusti Fernandez Pardo 998970c4cb fix: remove duplicate users/id 2022-06-15 23:06:30 +02:00
Agusti Fernandez Pardo 3310b9307d fix: undo changes in users 2022-06-15 23:01:16 +02:00
Agusti Fernandez Pardo fe53fd9248 fix: remove comment 2022-06-15 22:59:32 +02:00
Agusti Fernandez Pardo 6349491ae7 feat: admin endpoints for bookings 2022-06-15 22:59:32 +02:00
Agusti Fernandez Pardo dd94df8c97 merging main to prod fixing conflicts in users 2022-06-15 22:59:26 +02:00
Agusti Fernandez Pardo d8d0d42374 fix: only check event type ownership if not admin 2022-06-15 22:57:49 +02:00
Agusti Fernandez Pardo 514a98f9e0 feat: add admin endpoint support for event-types id 2022-06-15 22:57:49 +02:00
Agusti Fernandez Pardo aadde45bb7 fix: add event-types admin endpoints 2022-06-15 22:57:49 +02:00
Agusti Fernandez Pardo 26f861d0d0 Merge pull request #107 from calcom/feat/admin-events
Feat: Add admin enpoints for event-types, bookings, attendees
2022-06-15 21:58:31 +02:00
Agusti Fernandez Pardo 26b9e94568 fix: undo changes in users 2022-06-15 21:16:46 +02:00
Agusti Fernandez Pardo 8c3774e100 fix: remove comment 2022-06-15 21:14:35 +02:00
Agusti Fernandez Pardo 1d2e5f07ef feat: admin endpoints for bookings 2022-06-15 21:10:19 +02:00
Agusti Fernandez Pardo ed1bc8015a feat: initial isAdmin work for events and attendees 2022-06-15 20:43:35 +02:00
Agusti Fernandez Pardo 996ec31b26 Merge branch 'main' into feat/admin-events 2022-06-15 20:11:30 +02:00
Agusti Fernandez Pardo 3c0f8b5b6d Merge branch 'main' into production 2022-06-15 00:28:38 +02:00
Agusti Fernandez Pardo 3eda1507c6 Merge pull request #123 from calcom/fix/build-session
add session to req
2022-06-15 00:21:34 +02:00
Agusti Fernandez Pardo ff701ffec6 fix: no need for app store deps 2022-06-15 00:21:09 +02:00
Agusti Fernandez Pardo 5559e63be1 fix add app-store to deps 2022-06-15 00:19:39 +02:00
Agusti Fernandez Pardo 7218109755 Merge branch 'main' into fix/build-session 2022-06-15 00:10:37 +02:00
Omar López ab26f35520 Update package.json 2022-06-14 16:04:40 -06:00
Agusti Fernandez Pardo 1e80a83b1f add session to req 2022-06-14 23:57:38 +02:00
Omar López 42259e249c Merge pull request #122 from calcom/fix/middleware-availability 2022-06-14 15:44:59 -06:00
Agusti Fernandez Pardo 1bde5d88c1 fix: add back optional 2022-06-14 23:43:53 +02:00
Agusti Fernandez Pardo 372b20a4c9 fix: no post for now 2022-06-14 23:42:51 +02:00
Agusti Fernandez Pardo ba37ae78d9 fix: adds middleware, makes userId not optional 2022-06-14 23:41:33 +02:00
zomars e15100571e Merge branch 'main' into production 2022-06-14 15:25:35 -06:00
zomars e1bcd38e61 Adds basic availability endpoint 2022-06-14 15:17:09 -06:00
zomars 3cb2a8b866 Matches transpilling modules to web 2022-06-14 15:13:59 -06:00
zomars 910c0a9507 Merge branch 'main' into production 2022-06-14 15:00:21 -06:00
zomars 1ab81fb8ee Better error on user delete 2022-06-14 14:51:23 -06:00
zomars ae9c33ddbe Makes user create/update body strict 2022-06-14 14:44:09 -06:00
zomars 0f72a9084a Splits user endpoints by method 2022-06-14 14:35:15 -06:00
zomars 7d0cef065f Refactors user id endpoint 2022-06-14 14:10:59 -06:00
zomars 58e1ea9bf6 User endpoint refactoring 2022-06-14 14:08:58 -06:00
zomars 4d93b08e4c Scripts fixes 2022-06-14 14:08:41 -06:00
zomars 49087d858e Fixes hot-reload for dev 2022-06-14 14:07:23 -06:00
Agusti Fernandez Pardo f3d7922efd move caching time constant to API 2022-06-14 19:48:47 +02:00
Agusti Fernandez Pardo ab6a99749f fix: linting 2022-06-14 00:32:07 +02:00
Agusti Fernandez Pardo d8d9d4a375 Merge branch 'main' into production 2022-06-13 23:59:31 +02:00
Agusti Fernandez Pardo 55d8af0ae9 Merge pull request #121 from calcom/fix/user-metadata
fix: make jsonSchema.optional()
2022-06-13 23:58:52 +02:00
Agusti Fernandez Pardo b1dd1b8572 fix: make jsonSchema.optional() 2022-06-13 23:58:15 +02:00
Syed Ali Shahbaz e4ec3a04e9 Merge branch 'main' into production 2022-06-13 13:29:51 +05:30
Syed Ali Shahbaz 01f5891f9d Merge pull request #120 from calcom/debug/webhook-calls
Adds debug console.log
2022-06-13 13:29:30 +05:30
Syed Ali Shahbaz b385d3547b Adds debug console.log 2022-06-13 13:24:21 +05:30
Syed Ali Shahbaz 1cd852af7d Merge branch 'main' into production 2022-06-12 11:47:10 +05:30
Syed Ali Shahbaz 6872107614 Merge pull request #118 from calcom/debug/webhook-list
debug logs added
2022-06-12 11:46:44 +05:30
Syed Ali Shahbaz ecce02ebbf debug logs added 2022-06-12 11:43:26 +05:30
Syed Ali Shahbaz e278e13e83 Merge branch 'main' into production 2022-06-12 11:30:48 +05:30
Syed Ali Shahbaz 4cac1328d1 Merge pull request #117 from calcom/hotfix/prettier-fix
fix prettier
2022-06-12 11:30:23 +05:30
Syed Ali Shahbaz 935473cfcd removed comment 2022-06-12 11:25:53 +05:30
Syed Ali Shahbaz bd88bec1d2 fix prettier 2022-06-12 11:24:38 +05:30
Syed Ali Shahbaz 5628c0b033 Merge pull request #116 from calcom/fix/call-webhook-before-booking-response
call webhook before sending booking response
2022-06-12 11:19:02 +05:30
Syed Ali Shahbaz 470c43befe call webhook before sending booking response 2022-06-12 11:16:16 +05:30
Agusti Fernandez Pardo 99f9964d12 Merge branch 'main' into production 2022-06-12 01:27:51 +02:00
Syed Ali Shahbaz a4185582f5 Merge pull request #115 from calcom/debug/booking-api
Debug booking API
2022-06-11 22:41:57 +05:30
Syed Ali Shahbaz 910a0f386a Debug booking API 2022-06-11 22:39:03 +05:30
Syed Ali Shahbaz fc95d8bb42 Merge pull request #114 from calcom/main
Main to production
2022-06-11 17:22:29 +05:30
Syed Ali Shahbaz 4ba0e7752d Merge pull request #113 from calcom/hotfix/webhook-booking-api
Hotfix webhook API booking issues
2022-06-11 17:06:04 +05:30
Syed Ali Shahbaz 719e21497b removed invalid response 2022-06-11 17:03:11 +05:30
Syed Ali Shahbaz 3c98c5cefc fixing id to uid in create body 2022-06-11 16:58:21 +05:30
Syed Ali Shahbaz 61e742ed5e uuid automate in booking API 2022-06-11 16:57:35 +05:30
Syed Ali Shahbaz 110edd7dcc removed 18next rel 2022-06-11 16:54:30 +05:30
Syed Ali Shahbaz bbe5eba550 Merge pull request #112 from calcom/feat/trigger-webhook-from-booking-api
Trigger webhook from booking api - MVP
2022-06-11 16:32:57 +05:30
Syed Ali Shahbaz 99e58c414c prettier fix -3 2022-06-10 16:36:28 +05:30
Syed Ali Shahbaz 301c132815 prettier fix attempt-2 2022-06-10 16:21:55 +05:30
Syed Ali Shahbaz 5453af6d6e prettier fix attempt 2022-06-10 15:57:31 +05:30
Syed Ali Shahbaz 8339d339a1 prettier and payload fix 2022-06-10 13:38:45 +05:30
Syed Ali Shahbaz 54353f99d1 Calendar event changed to any for loose allowance 2022-06-10 13:32:47 +05:30
Syed Ali Shahbaz f1c98181d2 tfunction added 2022-06-10 13:30:43 +05:30
Syed Ali Shahbaz ef5bbfe4f9 fixed timeZone key 2022-06-10 13:22:06 +05:30
Syed Ali Shahbaz a8ad052a03 --convert date to string in calendar event 2022-06-10 13:16:58 +05:30
Syed Ali Shahbaz cd3a80006c --fix 2022-06-10 13:10:16 +05:30
Syed Ali Shahbaz adab79040f --fix 2022-06-10 13:06:22 +05:30
Syed Ali Shahbaz 4431142d4e remove unnecessary return 2022-06-10 12:58:04 +05:30
Syed Ali Shahbaz f9c20bc8ce --fix null estimated value 2022-06-10 12:53:59 +05:30
Syed Ali Shahbaz 4f36681006 --fix 2022-06-10 12:51:24 +05:30
Syed Ali Shahbaz e3822c50d0 Update booking file with webhook payload 2022-06-10 12:43:41 +05:30
Syed Ali Shahbaz 804de67868 Add eventName file 2022-06-10 12:17:00 +05:30
Syed Ali Shahbaz 542beb0079 adjust booking file 2022-06-10 11:46:51 +05:30
Syed Ali Shahbaz 664e697d40 add sendPayload file 2022-06-10 11:42:01 +05:30
Syed Ali Shahbaz cd482cd91a Add getWebhook function 2022-06-10 11:40:38 +05:30
Syed Ali Shahbaz d569296654 Add webhook trigger --init 2022-06-09 17:09:20 +05:30
Agusti Fernandez Pardo 180e925bed feat: dynamic prisma almost working 2022-06-08 18:52:25 +02:00
Syed Ali Shahbaz 19446c265f Merge pull request #111 from calcom/hotfix/webhook-error-throw
Hotfix/webhook error throw
2022-06-08 13:28:59 +05:30
Syed Ali Shahbaz db6f5cad15 401 message fix 2022-06-08 13:28:22 +05:30
Syed Ali Shahbaz 9b1dffbdb9 401 return fix 2022-06-08 13:27:48 +05:30
Syed Ali Shahbaz 4e97133751 Merge pull request #110 from calcom/fix/webhook-issue
Hotfix CTX removal from webhooks
2022-06-08 13:21:17 +05:30
Syed Ali Shahbaz b881312f10 hotfix ctx removal 2022-06-08 13:20:44 +05:30
Syed Ali Shahbaz ef3838b476 hotfix ctx removal 2022-06-08 13:20:09 +05:30
Syed Ali Shahbaz cabafbdd77 Merge pull request #109 from calcom/fix/webhook-eventtype-assoc-security
Webhook event type association security
2022-06-08 13:14:53 +05:30
Syed Ali Shahbaz bae84f2ce4 Added team event check to POST 2022-06-08 13:12:05 +05:30
Syed Ali Shahbaz cd03f5a821 Adds team event type check 2022-06-08 13:06:28 +05:30
Agusti Fernandez Pardo e407a16766 feat: dynamic prisma 2022-06-06 18:17:10 +02:00
Agusti Fernandez Pardo 0eed3e51e4 fix: only check event type ownership if not admin 2022-06-04 02:26:16 +02:00
Agusti Fernandez Pardo 0fc374c810 feat: add admin endpoint support for event-types id 2022-06-04 01:32:05 +02:00
Agusti Fernandez Pardo 12b7b3ecbf fix: add event-types admin endpoints 2022-06-04 01:17:01 +02:00
Agusti Fernandez Pardo 1180f3f258 Merge pull request #105 from calcom/feat/uuid-hooks
feat: adds automatic generation of uuid id for webhooks create on API
2022-06-02 15:56:01 +02:00
Agusti Fernandez Pardo fe73973b7a fix: add uuid to api/package.json 2022-06-02 15:55:52 +02:00
Agusti Fernandez Pardo 3fc22a8eff fix: remove comments 2022-06-01 17:08:01 +02:00
Agusti Fernandez Pardo 43b94d3e96 feat: adds automatic generation of uuid id for webhooks create on API 2022-06-01 17:05:33 +02:00
Agusti Fernandez Pardo 767f170cae Merge pull request #103 from calcom/feat/admin-users
feat: Admin API users manegement endpoints
2022-05-31 21:00:51 +02:00
Agusti Fernandez Pardo 7f42cc8479 fix: improve admin check using enum instead of string 2022-05-31 20:46:09 +02:00
Agusti Fernandez Pardo 187d5f2b10 docs: add some comments 2022-05-31 18:53:41 +02:00
Agusti Fernandez Pardo 4eccc8a74b fix: build error jsonSchema metadata not nullable 2022-05-31 18:42:20 +02:00
Agusti Fernandez Pardo 9459b9048d feat: Admin API users manegement endpoints 2022-05-31 18:33:01 +02:00
Agusti Fernandez Pardo 849c4aa240 Merge pull request #102 from calcom/fix/event-type-validations
Fix/event type validations
2022-05-28 01:52:06 +02:00
Agusti Fernandez Pardo 9c3f85834f fix: remove console logs 2022-05-28 01:51:25 +02:00
Agusti Fernandez Pardo eea7c11488 fix event type valdiations 2022-05-28 01:50:28 +02:00
Agusti Fernandez Pardo 2cd548bdb2 fix: or z nul 2022-05-27 22:04:08 +02:00
Agusti Fernandez Pardo b9a2e0f4c6 fix: event types validations recurring event and locations nullable: 2022-05-27 21:58:38 +02:00
Agusti Fernandez Pardo 0b66e964fe fix: some logggingeventtypeid 2022-05-27 21:51:40 +02:00
Agusti Fernandez Pardo eee5fd0090 Merge pull request #101 from calcom/fix-event-types-id
fix: event types id endpoints
2022-05-27 21:45:17 +02:00
Agusti Fernandez Pardo be4ca8835e fix: event types id endpoints 2022-05-27 21:44:45 +02:00
Agusti Fernandez Pardo 81d2917a3d Merge pull request #100 from calcom/production
Production
2022-05-27 21:20:01 +02:00
Agusti Fernandez Pardo 458f37f5e9 Merge branch 'main' into production 2022-05-27 21:19:43 +02:00
Agusti Fernandez Pardo 8627b28a8e fix: conflicts 2022-05-27 21:18:47 +02:00
Agusti Fernandez Pardo b52832f333 fix 2022-05-27 21:01:15 +02:00
Agusti Fernandez Pardo f40e799769 fix event types 2022-05-27 21:01:15 +02:00
Agusti Fernandez Pardo 5b65bd1b66 fix 2022-05-27 21:01:15 +02:00
Agusti Fernandez Pardo 824d01f358 fix: move log of userId 2022-05-27 21:01:15 +02:00
Agusti Fernandez Pardo a91dd428c0 fix 2022-05-27 21:01:01 +02:00
Agusti Fernandez Pardo 9f50972570 fix event-types 2022-05-27 20:49:50 +02:00
Agusti Fernandez Pardo d09fa56f63 fix 2022-05-27 20:47:02 +02:00
Agusti Fernandez Pardo 46e0b8f4f5 fix: moves event-types to find user including it's event-types 2022-05-27 20:46:53 +02:00
Syed Ali Shahbaz 49ef2c341d prettier fix again 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz de557fccce prettier fix 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz c47329c292 More fix 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz c185883e5a Fixed enum 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 81793aebcd Further prettier changes 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 4c7dc10f7d Fixing prettier 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 35ba69fb8a added ID 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 014a682d64 More debug 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz fbe3d2fd10 more debug 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 7c6141fdff Debug create err 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 4aba0af1b4 Updated webhook validations 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz 2109001af1 Fixes any invocation 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz fe3f6a70f3 Added schema for create 2022-05-27 20:46:22 +02:00
Syed Ali Shahbaz a945d5a61c Enabled webhook create call 2022-05-27 20:46:22 +02:00
Agusti Fernandez Pardo 10e8677894 Merge pull request #99 from calcom/fix/event-types-user-centric-query
fix: moves event-types to find user including it's event-types
2022-05-27 20:44:31 +02:00
Agusti Fernandez Pardo 8f9a970fb6 fix: moves event-types to find user including it's event-types 2022-05-27 20:43:10 +02:00
Syed Ali Shahbaz ed2f42fb01 Merge pull request #98 from calcom/fix/debug-webhook
Updated webhook validations
2022-05-26 12:40:08 +05:30
Syed Ali Shahbaz 8721a04d44 prettier fix again 2022-05-26 12:35:28 +05:30
Syed Ali Shahbaz e8e36abc75 prettier fix 2022-05-26 12:32:04 +05:30
Syed Ali Shahbaz 7b936073a4 More fix 2022-05-26 12:28:38 +05:30
Syed Ali Shahbaz b408015df4 Fixed enum 2022-05-26 12:25:13 +05:30
Syed Ali Shahbaz 09acaef904 Further prettier changes 2022-05-26 12:20:32 +05:30
Syed Ali Shahbaz 316c5a1266 Fixing prettier 2022-05-26 12:16:51 +05:30
Syed Ali Shahbaz 5e3b51c621 added ID 2022-05-26 12:12:13 +05:30
Syed Ali Shahbaz 92b011214c More debug 2022-05-26 12:06:15 +05:30
Syed Ali Shahbaz d372c4c526 more debug 2022-05-26 12:03:14 +05:30
Syed Ali Shahbaz 4737778dc1 Debug create err 2022-05-26 11:41:36 +05:30
Syed Ali Shahbaz b9c5590a47 Updated webhook validations 2022-05-26 11:20:49 +05:30
Syed Ali Shahbaz 76b3f1ba3a Merge pull request #97 from calcom/hotfix/any-fix
Fixes any invocation
2022-05-25 15:07:48 +05:30
Syed Ali Shahbaz fbab89cf40 Fixes any invocation 2022-05-25 15:07:19 +05:30
Syed Ali Shahbaz 7e46f4bb84 Merge pull request #96 from calcom/fix/webhook-create
Fix/webhook create
2022-05-25 14:30:36 +05:30
Syed Ali Shahbaz 2e22978838 Added schema for create 2022-05-25 14:23:43 +05:30
Syed Ali Shahbaz 0e95a1d3e8 Enabled webhook create call 2022-05-25 14:13:52 +05:30
Agusti Fernandez Pardo 6099bfb4ee fix: more logging 2022-05-23 23:23:53 +02:00
Agusti Fernandez Pardo 4629c5d5c7 fix: move log of userId 2022-05-23 23:18:41 +02:00
Agusti Fernandez Pardo 14aca7ef2b Merge pull request #95 from calcom/production
hotfix: debugging event-types in prod
2022-05-23 23:13:22 +02:00
Agusti Fernandez Pardo beca5152e9 hotfix: debugging event-types in prod 2022-05-23 22:55:53 +02:00
zomars 44f0830b16 Syncs zod version 2022-05-23 13:20:12 -06:00
zomars 40f1f9714e Build fixes 2022-05-23 13:17:43 -06:00
Agusti Fernandez Pardo 2e117d07c8 Merge pull request #93 from calcom/fix-node-15
fix: engines node 15 or greater
2022-05-20 23:07:35 +02:00
Agusti Fernandez Pardo 4a1dff6596 fix 2022-05-20 23:02:17 +02:00
Agusti Fernandez Pardo 6c0d4de8f3 fix: move clone from main to feat/v15x 2022-05-20 22:59:15 +02:00
Agusti Fernandez Pardo 2340ed2876 fix: engines node 15 or greater 2022-05-20 22:39:42 +02:00
Agusti Fernandez Pardo 2f9d1b97d4 Merge pull request #92 from calcom/fix/disable-post-hook
fix: disable post
2022-05-20 22:15:58 +02:00
Agusti Fernandez Pardo 93d9c4f6d0 fix: disable post 2022-05-20 22:15:25 +02:00
Agusti Fernandez Pardo f3ff4a8014 Merge pull request #91 from calcom/fix/webhooks
fix: dont use schemareadpublic
2022-05-20 22:10:52 +02:00
Agusti Fernandez Pardo 1585b2d8f9 fix: dont use schemareadpublic 2022-05-20 22:10:13 +02:00
Agusti Fernandez Pardo 5f9eb6fa27 Merge pull request #90 from calcom/fix-nopick
Fix nopick
2022-05-20 21:58:20 +02:00
Agusti Fernandez Pardo 1f8c895900 fix: hooks 2022-05-20 21:52:41 +02:00
Agusti Fernandez Pardo f9e98228c7 merge directly 2022-05-20 21:48:24 +02:00
Agusti Fernandez Pardo dbf4590ba7 Merge pull request #89 from calcom/fix/hooks-dont-parse
fix: hooks dont parse before read
2022-05-20 21:32:07 +02:00
Agusti Fernandez Pardo f1175a06f6 fix: hooks dont parse before read 2022-05-20 21:27:11 +02:00
Agusti Fernandez Pardo 8c8235c3c7 fix: dont parse hooks before read 2022-05-20 21:21:11 +02:00
Agusti Fernandez Pardo b54db574e1 Merge pull request #88 from calcom/fix/add-dep-zod
fix: update jest, add zod as dep
2022-05-20 20:58:21 +02:00
Agusti Fernandez Pardo 496328b035 fix: add strict true to tsconfig 2022-05-20 20:48:30 +02:00
Agusti Fernandez Pardo 656ceefe25 fix: zod same version as webwebsite 2022-05-20 20:31:15 +02:00
Agusti Fernandez Pardo 2fdeb2fc5e fix: no strict in baseparams attendee 2022-05-20 19:43:23 +02:00
Agusti Fernandez Pardo 2413e30c69 fix: update jest, add zod as dep 2022-05-20 19:25:38 +02:00
Agusti Fernandez Pardo 8ae59a5637 Merge pull request #87 from calcom/fix/add-console-events
fix: adds console log to debug event-types
2022-05-20 03:47:41 +02:00
Agusti Fernandez Pardo 418a4271d9 fix: adds console log to debug event-types 2022-05-20 03:46:01 +02:00
Agusti Fernandez Pardo 82da509eac Merge pull request #86 from calcom/fix-event-type
fix: event type validations skip
2022-05-20 03:40:58 +02:00
Agusti Fernandez Pardo 1717f14e83 fix: event type validations skip 2022-05-20 03:40:14 +02:00
Agusti Fernandez Pardo d991c68b08 Merge pull request #85 from calcom/fix/build-hooks
Fix/build hooks
2022-05-20 03:23:15 +02:00
Agusti Fernandez Pardo f6746c4cf9 fix: rmeove comment to fix build 2022-05-20 03:15:04 +02:00
Agusti Fernandez Pardo 9132bb51eb fix: disable create user post no role admin yet 2022-05-20 03:10:28 +02:00
Agusti Fernandez Pardo f1cf8ba94b fix: query { [key: string]: string | string[]; } 2022-05-20 03:06:05 +02:00
Agusti Fernandez Pardo f22257977d fix: body any 2022-05-20 03:01:47 +02:00
Agusti Fernandez Pardo 4fb1c14d3d fix: body unknown 2022-05-20 02:57:24 +02:00
Agusti Fernandez Pardo b755d2bd71 fix: build and validations for event-type, bring back req extension 2022-05-20 02:47:20 +02:00
Agusti Fernandez Pardo 29deb1fd3c fix: add back req extend types 2022-05-20 02:19:33 +02:00
Agusti Fernandez Pardo d23fa4be4e fix: add comment to fix later any 2022-05-20 01:47:17 +02:00
Agusti Fernandez Pardo dc967b7d9e fix: hooks, event-types and booking references 2022-05-20 01:45:54 +02:00
Agusti Fernandez Pardo f2ce2f324b fix: build webhooks and event-types 2022-05-20 00:58:42 +02:00
Agusti Fernandez Pardo 2e8f42c5d7 Merge pull request #84 from calcom/fix-build
fix: build issues, extend event-type in types, use @calcom/types
2022-05-19 22:08:34 +02:00
Agusti Fernandez Pardo d103776846 fix: add back types until merged into main 2022-05-19 22:05:26 +02:00
Agusti Fernandez Pardo fdc46fac7d fix: build issues, extend event-type in types, use @calcom/types 2022-05-19 22:00:22 +02:00
Syed Ali Shahbaz 54f2edef30 Merge pull request #83 from calcom/fix/webhook
Updates webhook API params and read picks
2022-05-19 16:44:22 +05:30
Syed Ali Shahbaz 95a1e32454 Fixes subscriber URL z type 2022-05-19 16:40:27 +05:30
Syed Ali Shahbaz bc844f29ba Updates Webhook edit params 2022-05-19 16:38:44 +05:30
Syed Ali Shahbaz 74efa1f86e Updates Webhook pick 2022-05-19 16:35:25 +05:30
Agusti Fernandez Pardo 7d8ed47268 Merge pull request #82 from calcom/fix/schema-event-type
fix typeof schemaEventTypeReadPublic
2022-05-18 22:05:22 +02:00
Agusti Fernandez Pardo 26888a3630 fix typeof schemaEventTypeReadPublic 2022-05-18 22:03:36 +02:00
Agusti Fernandez Pardo ba4abacb1a Merge pull request #81 from calcom/fix/dont-cal
Fix/dont cal
2022-05-18 21:51:13 +02:00
Agusti Fernandez Pardo df16126a49 fix: object or null instead of json for extends event-types 2022-05-18 21:50:34 +02:00
Agusti Fernandez Pardo 27053e7c80 fix: dont replace cal_ 2022-05-18 21:48:13 +02:00
Agusti Fernandez Pardo 780fd401db Merge pull request #80 from calcom/fix/event-valid
fix: dont overdo validation on read event-type
2022-05-18 20:45:14 +02:00
Agusti Fernandez Pardo 5bb2c54648 fix: add fallback for keys generated with cal_ instead of cal_live_ prefix 2022-05-18 20:29:35 +02:00
Agusti Fernandez Pardo 37069e2d7b fix: omit metadata/locations and rewrite as json 2022-05-18 20:22:43 +02:00
Agusti Fernandez Pardo e7a7c89071 fix add locations metadata and recurring events to eventtype response 2022-05-18 19:51:40 +02:00
Agusti Fernandez Pardo 7b90ccb3bf fix: add locations to event type in response types 2022-05-18 19:49:42 +02:00
Agusti Fernandez Pardo 5c97283aa1 fix: dont add locations/metadata on create event type 2022-05-18 19:39:31 +02:00
Agusti Fernandez Pardo eb03188d78 fix: dont validate read event-type 2022-05-18 19:25:50 +02:00
Agusti Fernandez Pardo 35ebf53f19 fix: json validation 2022-05-18 19:21:48 +02:00
Agusti Fernandez Pardo 957d6d2375 fix: locations or z null 2022-05-18 19:10:16 +02:00
Agusti Fernandez Pardo b7f9791439 fix: add locations any too 2022-05-18 19:00:27 +02:00
Agusti Fernandez Pardo b95c064828 fix: metadata zany 2022-05-18 18:58:37 +02:00
Agusti Fernandez Pardo 93b2e96144 fix: dont overdo validation on read event-type 2022-05-18 18:51:19 +02:00
Agusti Fernandez Pardo a3f23ef3c0 Merge pull request #79 from calcom/fix/event-validations
fix: event type jsonschema or znull
2022-05-18 17:51:48 +02:00
Agusti Fernandez Pardo b237d71b2b fix: event type jsonschema or znull 2022-05-18 17:46:22 +02:00
Agusti Fernandez Pardo a7889b3436 Merge pull request #78 from calcom/fix/meta
Fix/meta
2022-05-18 15:29:42 +02:00
Agusti Fernandez Pardo f29124866c fix: recurring and metadata as jsonSchema on read too 2022-05-18 15:23:18 +02:00
Agusti Fernandez Pardo d5ecb383b4 fix: no metadata 2022-05-18 15:16:16 +02:00
Agusti Fernandez Pardo c5dcf42807 fix: any 2022-05-18 15:12:29 +02:00
Agusti Fernandez Pardo e25d0d79a0 fix: merge metadata jsonSchema nullable nullish 2022-05-18 15:04:44 +02:00
Agusti Fernandez Pardo db09aeb50a fix: dont merge on read 2022-05-18 15:00:09 +02:00
Agusti Fernandez Pardo 8add68c668 fix: no metadata-true 2022-05-18 14:55:05 +02:00
Agusti Fernandez Pardo 91f9405fa0 fix: metadata 2022-05-18 14:48:11 +02:00
Agusti Fernandez Pardo 8481a96829 fix: null or 2022-05-18 14:41:55 +02:00
Agusti Fernandez Pardo 0ca9748674 fix: dont throw err on bad query 2022-05-18 14:27:30 +02:00
Agusti Fernandez Pardo e183df1a1b fix: add back metadata to pick 2022-05-18 14:13:29 +02:00
Agusti Fernandez Pardo f04f5d8ca8 fix: add partial() 2022-05-18 14:08:52 +02:00
Agusti Fernandez Pardo a2c7eed853 fix: add back metadata true 2022-05-18 14:03:38 +02:00
Agusti Fernandez Pardo 075808ce40 fix event types 2022-05-18 13:55:05 +02:00
Agusti Fernandez Pardo 47ce92714b fix rewrite metadata 2022-05-17 22:49:12 +02:00
Agusti Fernandez Pardo f8554031ae fix: pass data directly 2022-05-17 22:41:54 +02:00
Agusti Fernandez Pardo f2ea38b440 fix: parse metadata 2022-05-17 22:37:43 +02:00
Agusti Fernandez Pardo fa157961be fix: dont parse on read event-type 2022-05-17 22:32:49 +02:00
Agusti Fernandez Pardo a39d396c8e fix: add back commented out base params 2022-05-17 22:25:38 +02:00
Agusti Fernandez Pardo b49df1a7aa fix: dont read metadata for now 2022-05-17 22:21:00 +02:00
Agusti Fernandez Pardo 4d6dbd39cd fix: dont merge base params 2022-05-17 22:17:05 +02:00
Agusti Fernandez Pardo 5072ac7d52 fix: any or null 2022-05-17 22:13:33 +02:00
Agusti Fernandez Pardo 8a62c3948d fix: metadata null or json schema 2022-05-17 22:09:44 +02:00
Agusti Fernandez Pardo e76ebd64f4 Merge pull request #77 from calcom/fix/remove-metadata-from-read
fix: metadata nullish
2022-05-17 22:04:24 +02:00
Agusti Fernandez Pardo f3271f7724 fix: metadata nullish 2022-05-17 22:03:26 +02:00
Agusti Fernandez Pardo 68f62c5064 Merge pull request #76 from calcom/fix/remove-metadata-from-read
Fix: removes metadata from pick on readPublic for event-type
2022-05-17 21:58:04 +02:00
Agusti Fernandez Pardo a70f80ff6d Fix: removes metadata from pick on readPublic for event-type 2022-05-17 21:57:47 +02:00
Agusti Fernandez Pardo 754d0992ea Merge pull request #75 from calcom/fix/remove-metadata-pick
fix: removes metadata from pick so they dont clash
2022-05-17 21:53:42 +02:00
Agusti Fernandez Pardo ad8bfd544e fix: removes metadata from pick so they dont clash 2022-05-17 21:52:55 +02:00
Agusti Fernandez Pardo fd3b812c98 Merge pull request #74 from calcom/fix-event-type-json-optional
fix: event type make locations metadata and recurringEvent nullable a…
2022-05-17 21:51:52 +02:00
Agusti Fernandez Pardo f55aaf3eaa fix: event type make locations metadata and recurringEvent nullable and optional 2022-05-17 21:51:26 +02:00
Agusti Fernandez Pardo c52045486d Merge pull request #73 from calcom/fix/metadata-nullish
Fix: metadata nullish
2022-05-17 21:46:53 +02:00
Agusti Fernandez Pardo c5fa861d41 Fix: metadata nullish 2022-05-17 21:45:16 +02:00
zomars 64f5ac5723 Removed yarn.lock in favor of monorepo 2022-05-17 13:17:59 -06:00
Agusti Fernandez Pardo 679f81d00d Merge pull request #72 from calcom/fix/remove-unused-import
fix: removes unused import in event type validation
2022-05-17 19:43:37 +02:00
Agusti Fernandez Pardo 29166f1585 fix: removes unused import in event type validation 2022-05-17 19:43:19 +02:00
Agusti Fernandez Pardo d6aa70cdd0 Merge pull request #71 from calcom/fix/api-production
Fix/api production
2022-05-17 19:33:57 +02:00
Agusti Fernandez Pardo 5aa0b37443 fix build and pass lint 2022-05-17 19:33:18 +02:00
Agusti Fernandez Pardo 3366627835 fix: event-type params 2022-05-17 14:40:19 +02:00
zomars d8b9bbc452 Linting 2022-05-16 15:06:29 -06:00
Agusti Fernandez Pardo 9afbb3d127 fix: event-type validations move to pick not omit and separate create/edit 2022-05-16 21:59:22 +02:00
Agusti Fernandez Pardo 8f05c3e991 Merge pull request #70 from calcom/fix/disable-users-post
fix: disable admin only post endpoint for users as makes build fail u…
2022-05-11 16:02:01 +02:00
Agusti Fernandez Pardo 72444792bc fix: disable admin only post endpoint for users as makes build fail until impersonate PR merged into web main/prod 2022-05-11 16:01:35 +02:00
Agusti Fernandez Pardo 8804495e3c Merge pull request #69 from calcom/feat-bookings-references
fix: webhooks upgraded to new version, need to update templates
2022-05-11 15:57:30 +02:00
Agusti Fernandez Pardo 7deb5f8e1f fix: webhooks upgraded to new version, need to update templates 2022-05-11 15:57:00 +02:00
Agusti Fernandez Pardo 982c32e92c Merge pull request #67 from calcom/feat/add-webhook
added webhook endpoint
2022-05-10 21:10:18 +02:00
Agusti Fernandez Pardo d4086e21b5 Update README.md 2022-05-10 19:58:48 +02:00
Agusti Fernandez Pardo 3bf5d77782 Merge pull request #68 from calcom/feat/sdk-adduser
Feat/sdk adduser
2022-05-10 19:53:40 +02:00
Agusti Fernandez Pardo 4c131fbcdd feat: adds auth/signup for ee customers 2022-05-10 19:52:59 +02:00
Syed Ali Shahbaz 17d8551442 added webhook endpoint 2022-05-10 13:26:38 +05:30
Agusti Fernandez Pardo 08eeb36d47 feat: add operationId for autogenerated sdk 2022-05-05 18:18:00 +02:00
Agusti Fernandez Pardo 1f2b59c18d feat: adds users post endpoint for admin only 2022-05-05 05:02:59 +02:00
Agusti Fernandez Pardo be2d4338ee Merge pull request #66 from calcom/fix/docs-url 2022-05-02 17:50:00 +02:00
Hariom Balhara 1703976a4f Fix docs request 2022-05-02 11:30:08 +05:30
Agusti Fernandez Pardo 6124577bc2 Merge pull request #65 from calcom/fix/api-hariom 2022-05-01 00:41:30 +02:00
Agusti Fernandez Pardo a41fc5732e fix: readme 2022-05-01 00:36:59 +02:00
Agusti Fernandez Pardo 8aa4852b87 remove headers from next config, add rewrites from hariom pr 2022-05-01 00:33:05 +02:00
Agusti Fernandez Pardo 886b101887 fix: makes patch work by working around and faking production for yarn dev in api 2022-04-30 23:57:57 +02:00
Agusti Fernandez Pardo a2d16800aa Fixes: with hariom help for running api in prod for swagger even in dev 2022-04-30 23:07:21 +02:00
Agusti Fernandez Pardo 167a42156d Merge pull request #63 from calcom/fix-openapi-spec
docs: improve open api spec, fixing all issues, removes json-schema / models
2022-04-30 20:58:43 +02:00
Agusti Fernandez Pardo b572e4b0ff fix: move all req to deconstructed 2022-04-30 20:53:19 +02:00
Agusti Fernandez Pardo e27600b8c7 remove comment 2022-04-30 19:47:26 +02:00
Agusti Fernandez Pardo 005d0f8040 fix: channels removed 2022-04-30 19:46:04 +02:00
Agusti Fernandez Pardo 4321fec734 fix: remove json schema 2022-04-30 05:09:54 +02:00
Agusti Fernandez Pardo 57aeb19c66 fix: pass enableCors true to swaggeruireact props doesn't seem to work 2022-04-29 19:45:33 +02:00
Agusti Fernandez Pardo c8d776aeb7 fix: remove extra comments 2022-04-29 17:36:25 +02:00
Agusti Fernandez Pardo 9bb0f82075 fix: improve comments, no anys 2022-04-29 17:29:57 +02:00
Agusti Fernandez Pardo d06a9488e4 fix: rename endpoints to be only 2 words max 2022-04-29 02:49:38 +02:00
Agusti Fernandez Pardo e13ea234b8 fix: improve docs in attendees availabilities and booking references 2022-04-29 02:30:59 +02:00
Agusti Fernandez Pardo d6c34a8e51 fix: remove empty lines 2022-04-29 01:54:21 +02:00
Agusti Fernandez Pardo bb28680413 fixes all openapi spect issues, removes json-schema auto-generated moving to manual examples 2022-04-29 01:38:40 +02:00
Agusti Fernandez 2449d90bcb Merge pull request #62 from calcom/fix/build-err-attendee-optional-name 2022-04-27 20:25:18 +02:00
Agusti Fernandez Pardo 217336d13d fixes build error removing optional from name in create params validation 2022-04-27 20:24:30 +02:00
Agusti Fernandez 1dce6817ae Merge pull request #61 from calcom/fix/validations-pick-not-omit-by-default-separate-create-edit 2022-04-27 19:54:44 +02:00
Agusti Fernandez Pardo 238b03791e Fix: add strict and optional to have errors on extraneus params 2022-04-27 19:45:59 +02:00
Agusti Fernandez Pardo e52af0bbef fix: post / patch attendees docs w examples 2022-04-27 19:25:36 +02:00
Agusti Fernandez Pardo 14e2964a6d fix: booking reference moved to pick-first create/edit separate validations 2022-04-26 22:48:15 +02:00
Agusti Fernandez Pardo 6997606a4c fix: moves to pick and separates availabilities 2022-04-26 22:23:33 +02:00
Agusti Fernandez Pardo 3759eccfca fix: attendees move to use pick, separate patch/post 2022-04-26 22:12:28 +02:00
Agusti Fernandez bceeeebfb8 Merge pull request #60 from calcom/fix/add-servers-openapi-spec 2022-04-26 21:57:58 +02:00
Agusti Fernandez Pardo fa30b52988 remove v1 from specs 2022-04-26 21:56:59 +02:00
Agusti Fernandez 944e9b181f Merge pull request #59 from calcom/fix/attendees-id 2022-04-25 06:20:03 +02:00
Agusti Fernandez Pardo ad04be9394 fix: availability patch 2022-04-25 06:13:27 +02:00
Agusti Fernandez Pardo b6bce18b29 fix: build availabilities validation start/endTime accept only dates no numbers or strings too 2022-04-25 06:04:42 +02:00
Agusti Fernandez Pardo 804fe27458 fix availabilites validations 2022-04-25 03:12:33 +02:00
Agusti Fernandez Pardo b38f78bbad fix: remove withValidSchedule from get/patch/delete shared endpoint 2022-04-24 23:57:17 +02:00
Agusti Fernandez Pardo df43d50a55 adds tzdata for timeZone validations 2022-04-24 23:56:53 +02:00
Agusti Fernandez Pardo 4c022d5d07 feat: adds full validations for users endpoint 2022-04-24 23:56:25 +02:00
Agusti Fernandez Pardo dad70d5a12 fix users, availabilites, attendees 2022-04-24 02:10:32 +02:00
Agusti Fernandez 260d25768f Merge pull request #56 from calcom/fix/attendees-id 2022-04-23 06:01:09 +02:00
Agusti Fernandez Pardo 096fd40044 fix: fixess attends:id endpoit 2022-04-23 05:51:26 +02:00
Agusti Fernandez Pardo 8c19303baf fix: verify expire 2022-04-23 05:37:36 +02:00
Agusti Fernandez 4e58e87264 Merge pull request #54 from calcom/fix-api-key-expire 2022-04-23 04:17:34 +02:00
Agusti Fernandez Pardo 11bf548241 fix: apiKeyExpire 2022-04-23 03:46:53 +02:00
Agusti Fernandez 0c21559399 Update README.md 2022-04-23 03:34:34 +02:00
Agusti Fernandez 70fd578a0f Merge pull request #53 from calcom/fix/51-delete-schedule-unset-default 2022-04-23 02:46:57 +02:00
Agusti Fernandez Pardo 9078ee2f3f fix: build removing extra spaces 2022-04-23 02:40:39 +02:00
Agusti Fernandez 60c25b1ee2 Merge pull request #47 from calcom/feat/api-ready-go 2022-04-23 02:32:53 +02:00
Agusti Fernandez Pardo 4e8fae7391 rename apiKey 2022-04-23 02:26:35 +02:00
Agusti Fernandez Pardo 2009e6f0fb fix: remove comments 2022-04-23 02:22:43 +02:00
Agusti Fernandez Pardo 8d5605dc7b fix: move 401 to throw early in all endpoints 2022-04-23 02:17:06 +02:00
Agusti Fernandez Pardo 307eddcbd5 fix: invert 401 to throw early in attendees 2022-04-23 02:06:39 +02:00
Agusti Fernandez Pardo 9cb2f9bc70 fix: clearer note about dropping metadata and locations in event-type 2022-04-23 02:06:16 +02:00
Agusti Fernandez Pardo 368e6eb0fa fix: rename dateInPast -> dateNotInPast 2022-04-23 02:05:56 +02:00
zomars 20cef3b4dd Uses inferred types 2022-04-22 08:05:31 -06:00
zomars be3bcf2bf0 Refactoring and fixes 2022-04-21 19:42:53 -06:00
Agusti Fernandez b382cb923f Merge pull request #50 from calcom/chore/remove-tests 2022-04-21 03:33:10 +02:00
Agusti Fernandez Pardo 14d63fc45c removes tests for now 2022-04-21 03:31:46 +02:00
alannnc 3c9f6f2db1 Update README.md 2022-04-20 18:34:27 -06:00
Agusti Fernandez 9239b27216 Merge branch 'main' into feat/api-ready-go 2022-04-21 02:28:53 +02:00
alannnc a2cdb04985 Update README.md 2022-04-20 18:19:48 -06:00
alannnc cb4f0a9cd0 Update README.md 2022-04-20 18:15:20 -06:00
alannnc cac972eb15 Update README.md 2022-04-20 18:14:23 -06:00
Agusti Fernandez dfefa65ecb Merge pull request #49 from calcom/fix/update-readme-2 2022-04-21 01:58:42 +02:00
Agusti Fernandez Pardo 8437a284a8 update readme round 2b 2022-04-21 01:57:32 +02:00
Agusti Fernandez Pardo c08f503807 update readme round 2 2022-04-21 01:55:44 +02:00
Agusti Fernandez b653276836 Merge pull request #48 from calcom/fix/update-readme 2022-04-21 01:47:05 +02:00
Agusti Fernandez Pardo b8d452bda0 feat: update readme 2022-04-21 01:46:15 +02:00
Agusti Fernandez Pardo 00bd2ed6e1 remove old tests for now, add new tests later 2022-04-21 01:31:36 +02:00
Agusti Fernandez Pardo ccd8637ae6 feat: all endpoints safe 2022-04-21 01:30:47 +02:00
Agusti Fernandez Pardo 103228cf84 feat: destination calendars ready 2022-04-21 01:15:58 +02:00
Agusti Fernandez Pardo d8bfff9525 feat: event type custom input endpoitns ready 2022-04-21 01:08:45 +02:00
Agusti Fernandez Pardo 18c1a2f026 remove unnecessary await on all getCalcomUserId() calls 2022-04-21 00:55:41 +02:00
Agusti Fernandez Pardo b0c0e9fb4c feat: memberships hardened mode 2022-04-21 00:55:22 +02:00
Agusti Fernandez Pardo 9c5624c748 fix: delete reminder mails endpoints for now as no userId, consult if needed 2022-04-21 00:50:34 +02:00
Agusti Fernandez Pardo cabe4ae9c6 feat: schedules hardend 2022-04-21 00:48:54 +02:00
Agusti Fernandez Pardo 80c2c4bdae feat: selected calendars hardened 2022-04-21 00:31:42 +02:00
Agusti Fernandez Pardo 6749840077 fix: improve comments on teams 2022-04-21 00:00:02 +02:00
Agusti Fernandez Pardo 910f222d62 fix: remove teams from endpoints that need hardening 2022-04-20 23:43:40 +02:00
Agusti Fernandez Pardo ec903b21c6 feat: teams return only userId related data, on POST create ownership membership for userId 2022-04-20 23:42:49 +02:00
Agusti Fernandez Pardo e138df47ba remove duplicated error check in event-types id 2022-04-20 20:25:26 +02:00
Agusti Fernandez Pardo 12dbb0ad03 feat: final securing of all endpoints, update readme 2022-04-20 16:06:37 +02:00
Agusti Fernandez Pardo 7734e86f6b improve readme. fix event-types 2022-04-19 13:44:24 +02:00
Agusti Fernandez Pardo 29666493d6 make event types return only userId data 2022-04-19 05:19:59 +02:00
Agusti Fernandez f9b7cebe37 Merge pull request #46 from calcom/fix/remove-creds 2022-04-18 23:41:54 +02:00
Agusti Fernandez Pardo b4f3b8cc55 removes credentials endpoint 2022-04-18 23:40:28 +02:00
Agusti Fernandez 5ce278953a Merge pull request #45 from calcom/feat/api-keys-auth 2022-04-18 23:36:43 +02:00
Agusti Fernandez Pardo 8965601e6f fix verifyapikey, add daabase_url to env.example 2022-04-18 23:24:57 +02:00
Agusti Fernandez Pardo 25a2a405da feat: adds apikeyAuth in swagger ui for all endpoints 2022-04-17 16:39:38 +02:00
Agusti Fernandez Pardo 5013ea2ef5 feat: adds apiKey auth as query params in docs and users endpoint 2022-04-17 16:18:42 +02:00
Agusti Fernandez b77dd34020 Merge pull request #44 from calcom/fix/rewrite-back-api 2022-04-15 19:10:37 +02:00
Agusti Fernandez Pardo 3ad84a7c15 fix back api to rewrite 2022-04-15 19:09:35 +02:00
Agusti Fernandez 892bce8193 Merge pull request #43 from calcom/fix/rewrite-headers 2022-04-15 19:00:41 +02:00
Agusti Fernandez Pardo 51cada224b fix rewrite headres 2022-04-15 18:55:47 +02:00
Agusti Fernandez 120c84b8e4 Merge pull request #42 from calcom/fix/cleanup-swagger 2022-04-15 18:35:18 +02:00
Agusti Fernandez Pardo 91eff191f6 remove next-cors 2022-04-15 18:13:21 +02:00
Agusti Fernandez Pardo 04052c53b4 cleanup no cors middleware 2022-04-15 18:12:25 +02:00
Agusti Fernandez 749f650b3d Merge pull request #41 from calcom/fix/next-config-add-no-cos 2022-04-15 17:36:26 +02:00
Agusti Fernandez Pardo 02855ef020 disable cors 2022-04-15 17:35:05 +02:00
Agusti Fernandez Pardo a543d1fde3 disable middleware for cors 2022-04-15 17:29:03 +02:00
Agusti Fernandez 4e61d89de6 Merge pull request #39 from calcom/fix/middleware 2022-04-15 17:05:30 +02:00
Agusti Fernandez Pardo a4851bd0b6 fix add new withCorsMiddleware 2022-04-15 17:04:17 +02:00
Agusti Fernandez b06af91152 Merge pull request #38 from calcom/fix/else 2022-04-15 16:57:00 +02:00
Agusti Fernandez Pardo ca8ca913a8 add else if to api key request 2022-04-15 16:55:55 +02:00
Agusti Fernandez e3f9c91a5c Merge pull request #37 from calcom/ignore-api-key-in-docs 2022-04-15 16:47:37 +02:00
Agusti Fernandez Pardo e251fccb61 make verifyApiKey not apply in docs 2022-04-15 16:47:08 +02:00
Agusti Fernandez Pardo 09d8b48ccc make verifyApiKey not apply in docs 2022-04-15 16:46:50 +02:00
Agusti Fernandez 86802090be Merge pull request #36 from calcom/fix/cors 2022-04-15 16:11:42 +02:00
Agusti Fernandez Pardo babfc6d7cf adds cors support to docs endpoint 2022-04-15 16:10:57 +02:00
Agusti Fernandez Pardo 187b97afa1 fix: update prefix to cal_ 2022-04-14 21:46:26 +02:00
Agusti Fernandez Pardo 1405f7a861 adds app-store to be transpiled to fix build 2022-04-13 18:53:44 +02:00
Agusti Fernandez a064983002 Merge pull request #35 from calcom/feat/hardened-safe-mode 2022-04-13 02:27:59 +02:00
Agusti Fernandez Pardo d987d52dbb feat: credentials, teams 2022-04-13 02:12:16 +02:00
Agusti Fernandez Pardo 9447bd859d feat hardened attendees, availabilites, booking-references, and bookings 2022-04-11 16:47:01 +02:00
Agusti Fernandez Pardo 9cefd119ee feat: make booking-references only return user booking related resources 2022-04-11 15:42:50 +02:00
Agusti Fernandez Pardo fca49a23c5 feat: make availabilities safe and return only userId related resources 2022-04-11 15:26:06 +02:00
Agusti Fernandez Pardo 081b511e1e Make attendees id endpoint return only user owned resources 2022-04-11 15:20:38 +02:00
Agusti Fernandez 75f5d881a5 Merge pull request #34 from calcom/feat/unify-endpoints-further 2022-04-11 15:12:11 +02:00
Agusti Fernandez Pardo 0bda988676 feat: all resources endpoints for get all and new unified 2022-04-11 15:10:16 +02:00
Agusti Fernandez Pardo 963c893727 feat: unify new/index of attendees, availabilities, booking references, bookings, selected calendars, update response types 2022-04-11 12:03:15 +02:00
Agusti Fernandez Pardo ddc1b4043c fix: docs bad ref in event type 2022-04-11 00:10:38 +02:00
Agusti Fernandez Pardo d95325c06c payments safe, unify endpoints for remindermails schedules 2022-04-10 02:10:34 +02:00
Agusti Fernandez Pardo af72b1f5b5 feat: unitfy new/index of teams and selected calendars 2022-04-09 01:29:26 +02:00
Agusti Fernandez fbc83a5cc9 Merge pull request #33 from calcom/fix/add-index 2022-04-08 23:21:58 +02:00
Agusti Fernandez Pardo 7fcc270fe8 adds index with message redirecting users to docs just so checkly doesn't fail 2022-04-08 23:20:52 +02:00
Agusti Fernandez 46fd17a120 Merge pull request #32 from calcom/fix/get-calcom-user 2022-04-08 21:08:56 +02:00
Agusti Fernandez Pardo 935e27f9ca Fix calcom user bad import 2022-04-08 21:08:25 +02:00
Agusti Fernandez d550de4be0 Merge pull request #31 from calcom/feat/unify-new-endpoint 2022-04-08 21:03:57 +02:00
Agusti Fernandez Pardo 1f561e70be reanem getCalcomUserId util 2022-04-08 20:54:48 +02:00
Agusti Fernandez Pardo 9edc1dbd29 some fixes on helpers/middlewares 2022-04-08 18:08:26 +02:00
Agusti Fernandez Pardo fc3677631f attendes of users bookings only 2022-04-08 03:16:53 +02:00
Agusti Fernandez Pardo 3d917e4dd4 make verifyApiKey check for hashed, need @calcom/ee in transpile modules next.config 2022-04-08 01:59:04 +02:00
Agusti Fernandez Pardo 325b19ba3f Add userId check in users getAll and id endpoints 2022-04-07 21:55:43 +02:00
Agusti Fernandez Pardo fc2978a61b feat: initial work unifying new endpoint and generating api key 2022-04-07 03:29:53 +02:00
Agusti Fernandez a1dcfa59bc Merge pull request #30 from calcom/fix-availabilities 2022-04-04 23:03:10 +02:00
Agusti Fernandez Pardo 15cdbb134f remove console statement 2022-04-04 22:29:45 +02:00
Agusti Fernandez Pardo 5b3f9ee95c fix availabilities spelling 2022-04-04 21:53:03 +02:00
Agusti Fernandez 23698462b8 Merge pull request #29 from calcom/fix/users-and-teams-id 2022-04-04 21:40:59 +02:00
Agusti Fernandez Pardo 89dfa2efe1 feat all endpoints one id file 2022-04-04 21:39:30 +02:00
Agusti Fernandez Pardo de8d7f64c3 mvoe to less files 2022-04-04 02:02:11 +02:00
Agusti Fernandez Pardo 5233dad5f9 re-unify into one route all id ops for teams and users 2022-04-04 00:49:05 +02:00
Agusti Fernandez b067bff3e2 Merge pull request #28 from calcom/feat/unify-id-routes 2022-04-04 00:46:13 +02:00
Agusti Fernandez Pardo a2b8b85de4 no commit in website 2022-04-03 19:50:53 +02:00
Agusti Fernandez Pardo 2172fd96c0 add back branch to clone passing -b before 2022-04-03 19:48:19 +02:00
Agusti Fernandez Pardo 5aacf7f836 no branch to clone, git diff dont ignore api, ignore website 2022-04-03 19:46:15 +02:00
Agusti Fernandez 8aba44dfbb Merge pull request #26 from calcom/fix/chmod-vercel-deploy 2022-04-03 19:41:49 +02:00
Agusti Fernandez Pardo 5956e705c9 fix chmod permissions on vercel deploy script 2022-04-03 19:41:23 +02:00
Agusti Fernandez 51850e325e Merge pull request #25 from calcom/deploy 2022-04-03 19:36:12 +02:00
Agusti Fernandez Pardo ebe8e52f1b small removal of no-react in readme 2022-04-03 19:34:49 +02:00
Agusti Fernandez 5fbefe7d50 Merge pull request #24 from calcom/fix/update-vercel-deploy 2022-04-03 19:26:07 +02:00
Agusti Fernandez Pardo 1bbce547fd add commit to if submodule api 2022-04-03 19:24:27 +02:00
Agusti Fernandez 1e6515a1c5 Merge pull request #23 from calcom/fix-add-empty-folder-for-deploy 2022-04-03 19:16:42 +02:00
Agusti Fernandez Pardo dacc27bae4 needed for deployment 2022-04-03 19:16:03 +02:00
Agusti Fernandez 64cb06ec86 Merge pull request #22 from calcom/fix/vercel 2022-04-03 19:13:23 +02:00
Agusti Fernandez Pardo ba5382cb32 add script to vercel deploy with private repos 2022-04-03 19:10:35 +02:00
Agusti Fernandez 11516e7720 Merge pull request #21 from calcom/fix/swagger-docs-indent 2022-04-03 19:04:55 +02:00
Agusti Fernandez Pardo 61819772bc fix all swagger docs, dont build templates 2022-04-03 17:47:18 +02:00
Agusti Fernandez 24b8bb5fe2 Merge pull request #18 from calcom/fix/update-validations-new-format 2022-04-02 03:52:27 +02:00
Agusti Fernandez Pardo d57e5920a7 chore: add tempaltes folder w endpoints and example validation for the future 2022-04-02 03:51:33 +02:00
Agusti Fernandez 0fef06d92d Merge pull request #17 from calcom/fix/update-validations-new-format 2022-04-02 03:48:25 +02:00
Agusti Fernandez Pardo e8b9ec7f8a fix: remove comment 2022-04-02 03:47:41 +02:00
Agusti Fernandez Pardo d144c0f9e1 feat: upgrade all validations, rename to use snake_case 2022-04-02 03:46:24 +02:00
Agusti Fernandez Pardo 837247f81b chore: add type-check gh actions like monorepo 2022-04-02 02:53:14 +02:00
Agusti Fernandez 902aacfb12 Merge pull request #16 from calcom/feat/add-payments-and-reminder-mails 2022-04-02 02:49:20 +02:00
Agusti Fernandez Pardo dd50624241 fix: remove unnecessary comment 2022-04-02 02:47:06 +02:00
Agusti Fernandez Pardo 1e18e9b945 feat: adds reminder-mail endpoints 2022-04-02 02:45:28 +02:00
Agusti Fernandez Pardo 3271e17317 feat: adds payments CRUD endpoints 2022-04-02 02:38:46 +02:00
Agusti Fernandez 3411768da2 Merge pull request #15 from calcom/docs/improve-swagger 2022-04-02 02:10:50 +02:00
Agusti Fernandez Pardo fc795f963b fix: hack around create/connect issues for now 2022-04-02 02:09:04 +02:00
Agusti Fernandez Pardo 9f4a62e2ef feat: yarn build no errors 2022-04-02 01:55:41 +02:00
Agusti Fernandez Pardo 1c19032884 chore: bring up to date booking references, bookings, and credentials 2022-04-01 23:03:03 +02:00
Agusti Fernandez Pardo 55f93cded6 feat: update attendees / availabilites / users endpoints and document parameters 2022-04-01 22:05:10 +02:00
Agusti Fernandez Pardo 2b4a745f12 feat: improve validations of users/attendee/availabilty to support required fields 2022-04-01 22:04:42 +02:00
Agusti Fernandez Pardo e284707250 initail work on paid booking, improve validations 2022-04-01 17:53:52 +02:00
Agusti Fernandez Pardo 12de89294d swagger docs add params, memberships handle compoundId 2022-03-31 22:14:37 +02:00
Agusti Fernandez e6cd238803 Merge pull request #14 from calcom/feat/inherit-validations-add-types 2022-03-30 18:37:13 +02:00
Agusti Fernandez Pardo 9aa4b0e30d feat: inherit all validations from auto-generated zod 2022-03-30 17:37:51 +02:00
Agusti Fernandez 064c39b7f6 Merge pull request #13 from calcom/feat/swagger-docs 2022-03-30 17:07:00 +02:00
Agusti Fernandez Pardo 367621ea51 feat: users, teams, selectedCalendars w new code/docs 2022-03-30 16:56:24 +02:00
Agusti Fernandez a2ef0c8c79 Merge pull request #12 from calcom/feat/more-validations 2022-03-30 15:17:34 +02:00
Agusti Fernandez Pardo 1de7bc4146 prettier 2022-03-30 14:17:55 +02:00
Agusti Fernandez 39ae2aed37 Merge pull request #11 from calcom/chores/ignore-yarn-error 2022-03-29 04:04:57 +02:00
Agusti Fernandez Pardo 443e01f0da chore: update imports to use dasheS 2022-03-29 04:01:23 +02:00
Agusti Fernandez Pardo 20a93a13c9 feat: update users/teams/apiKeys to use middleware 2022-03-29 03:59:57 +02:00
Agusti Fernandez Pardo 3011e0ecf7 chore: no default export 2022-03-29 03:23:22 +02:00
Agusti Fernandez Pardo 75e635cb37 chore: remove yarn-error from repo, add to .gitignore 2022-03-29 02:47:48 +02:00
Agusti Fernandez 411a3145d8 Merge pull request #10 from calcom/feat/api-middleware 2022-03-29 02:28:27 +02:00
Agusti Fernandez Pardo ec8fe36930 feat: successfully protected all endpoints with next-api-middleware for verifyApiKey 2022-03-29 02:25:24 +02:00
Agusti Fernandez 752a61c756 Merge pull request #9 from calcom/add-more-endpoints
Add more endpoints
2022-03-29 01:01:03 +02:00
Agusti Fernandez Pardo 8165977ec3 Adds basic CRUD endpoints for bookingReferences, Crendentials, DailyEventReferences, DestinationCalendars, EventTypeCustomInputs, Memberships, Schedules, and SelectedCalendars 2022-03-29 00:27:14 +02:00
Agusti Fernandez Pardo 99d328c35d chore: refactor-out apiKey check into middleware 2022-03-28 17:46:12 +02:00
Agusti Fernandez 5826e1744c Merge pull request #8 from calcom/feat/validate-add-availabilites-and-attendees
feat: adds availabilities and attendees endpoints
2022-03-28 16:21:57 +02:00
Agusti Fernandez Pardo 093d6888d2 remove unused req 2022-03-28 16:05:50 +02:00
Agusti Fernandez Pardo 1241ae6cfc feat: move findAll to return arrays 2022-03-28 16:05:00 +02:00
Agusti Fernandez Pardo 19934d8c3a Adds basic api-key auth in users, need to extract out 2022-03-28 02:51:40 +02:00
Agusti Fernandez Pardo 0e3131d866 feat: improve validations 2022-03-27 15:15:46 +02:00
Agusti Fernandez Pardo c561b16f85 chore: rename empty validations, enable relations on user zod object 2022-03-27 01:19:49 +01:00
Agusti Fernandez Pardo 396c5b8d8c chore: refactor all delete endpoints to use if/else instead of .catch() and .error() 2022-03-27 01:08:00 +01:00
Agusti Fernandez Pardo 936572e7e1 feat: adds availabilitesi and attendees endpoints, some cleanup less try/catch more if/else 2022-03-27 00:58:22 +01:00
Agusti Fernandez 8fbd8ccd63 Merge pull request #7 from calcom/chore/tests-new-and-find-all
feat: adds bookings and more tests
2022-03-26 23:09:00 +01:00
Agusti Fernandez Pardo ac307f7161 feat: adds bookings and more tests 2022-03-26 22:29:30 +01:00
Agusti Fernandez c0d7623beb Merge pull request #6 from calcom/chore/more-testing
feat: 50% almost code coverage
2022-03-26 05:30:25 +01:00
Agusti Fernandez Pardo 7998e8fc2c feat: 50% almost code coverage 2022-03-26 05:28:53 +01:00
Agusti Fernandez 9233f143c6 Merge pull request #5 from calcom/feat/users-teams
Feature: adds users and teams tests
2022-03-26 02:24:02 +01:00
Agusti Fernandez Pardo 022ba7b8de fixes tests by passing stringifyISODates to createdDate and emailVerified 2022-03-26 02:22:28 +01:00
Agusti Fernandez Pardo 62a917c7a8 renames team -> teams adds tests for users and teams 2022-03-26 02:16:46 +01:00
Agusti Fernandez 557342104b Merge pull request #4 from calcom/feat/teams
feat: Adds teams endpoints and zod validations
2022-03-26 01:55:07 +01:00
Agusti Fernandez Pardo 8b8629f37a feat: Adds teams endpoints and zod validations 2022-03-26 01:53:56 +01:00
Agusti Fernandez 2a1ed8dd79 Merge pull request #3 from calcom/feat/test-api-keys
Tests: add testing for api keys endpoints
2022-03-26 01:42:43 +01:00
Agusti Fernandez Pardo f2be36f89c fix: remove console statements 2022-03-26 01:41:22 +01:00
Agusti Fernandez Pardo 12a7129e5a feat: adds tests for api keys endpoints 2022-03-26 01:40:43 +01:00
Agusti Fernandez Pardo 9e8be659c5 feat: initial tests for api-keys endpoint 2022-03-26 00:42:12 +01:00
Agusti Fernandez f80f23d3c3 Merge pull request #2 from calcom/feat/with-transpile-modules
feat: adds module transpiling so api can require @calcom/prisma
2022-03-25 23:28:02 +01:00
Agusti Fernandez Pardo 084c91f6c1 feat: improve api key endpoints, add users endpoint 2022-03-25 23:26:22 +01:00
Agusti Fernandez Pardo d9c34f67e6 feat: adds api keys endpoints, new QueryIdAsString as apiKey has a UUID string-like ID unlike the numbers of event-type or others 2022-03-25 20:17:37 +01:00
Agusti Fernandez Pardo c2234593db feat: adds module transpiling so api can require @calcom/prisma and not @prisma/client directly 2022-03-25 19:37:51 +01:00
Agusti Fernandez Pardo a2817a2fee Feat: event-types and tests 2022-03-25 06:54:57 +01:00
Agusti Fernandez Pardo 2e2f6a5e57 feat: adds git hooks and husky for pre-commit linting 2022-03-25 02:18:43 +01:00
Agusti Fernandez Pardo a71039328f feat: 100% code-coverage, add coverage to gitignore 2022-03-25 02:07:51 +01:00
Agusti Fernandez Pardo f6371c3b75 adds message and full error in eventtype/new 2022-03-25 01:52:13 +01:00
Agusti Fernandez Pardo f4d889e87b add @lib and @api paths for cleaner imports 2022-03-25 00:43:35 +01:00
Agusti Fernandez Pardo 737a8897ba extracting out schemaQuery validation to lib, extracting out delete/edit to it's own files for clarity 2022-03-25 00:04:07 +01:00
Agusti Fernandez Pardo e4d9f7bc7d remove example validation file 2022-03-24 23:19:13 +01:00
Agusti Fernandez Pardo 84ab74b46a feat: tests all codepaths of event-type/[id] 2022-03-24 23:16:48 +01:00
Agusti Fernandez Pardo dfa227f1b6 adds testing for validations 2022-03-24 23:10:24 +01:00
Agusti Fernandez Pardo 713f53acc4 feat: add next-validations and zod validations 2022-03-24 21:25:35 +01:00
Agusti Fernandez Pardo c5b12d46af chore: rename return types to Data, import prisma from @calcom/prisma 2022-03-24 19:01:37 +01:00
Agusti Fernandez Pardo b753466bda moving to nextjs/api 2022-03-24 17:02:33 +01:00
Agusti Fernandez Pardo 60d2b81c29 feat: Initial work on event-types, add jest for testing w node-http-mocks 2022-03-23 22:35:38 +01:00
Agusti Fernandez Pardo 9a8e63b729 resolve conflict w main 2022-03-23 22:32:46 +01:00
Agusti Fernandez Pardo 3856d0768c remove unneede env 2022-03-23 22:30:47 +01:00
Agusti Fernandez Pardo b6dca78d64 remove unneeded jest config and deps 2022-03-23 22:29:00 +01:00
Agusti Fernandez Pardo c46a899c1b remove all next-auth related stuff 2022-03-23 22:27:03 +01:00
Agusti Fernandez Pardo 9a5c3f96ec rebase fixing conflicts 2022-03-23 22:22:57 +01:00
Agusti Fernandez 11e1312e3a feat: inital commit 2022-03-18 14:42:42 +01:00
1932 changed files with 60789 additions and 26112 deletions
+8
View File
@@ -0,0 +1,8 @@
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
+11
View File
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
-42
View File
@@ -1,42 +0,0 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-outside-of-docker
{
"name": "Docker outside of Docker",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
"features": {
"ghcr.io/devcontainers/features/docker-from-docker:1": {
"version": "latest",
"enableNonRootDocker": "true",
"moby": "true"
},
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers-contrib/features/npm-package:1": {},
"ghcr.io/devcontainers-contrib/features/jest:2": {},
"ghcr.io/devcontainers-contrib/features/prisma:2": {},
"ghcr.io/guiyomh/features/vim:0": {}
},
// Use this environment variable if you need to bind mount your local source code into a new container.
"remoteEnv": {
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
},
"hostRequirements": {
"cpus": 4,
"memory": "8gb"
},
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "./deploy/install.sh"
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
+2 -1
View File
@@ -16,11 +16,12 @@
# - WEB3
# - SALESFORCE
# - ZOHOCRM
# - ZOHO_BIGIN
# - APP STORE **********************************************************************************************
# ⚠️ ⚠️ ⚠️ THESE WILL BE MIGRATED TO THE DATABASE TO PREVENT AWS's 4KB ENV QUOTA ⚠️ ⚠️ ⚠️
# - DAILY.CO VIDEO
# Enables Cal Video. to get your key
# Enables Cal Video. to get your key
# 1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
# 2. From within your dashboard, go to the [developers](https://dashboard.daily.co/developers) tab.
# @see https://github.com/calcom/cal.com#obtaining-daily-api-credentials
+13 -7
View File
@@ -79,6 +79,9 @@ CALENDSO_ENCRYPTION_KEY=
# Intercom Config
NEXT_PUBLIC_INTERCOM_APP_ID=
# Secret to enable Intercom Identity Verification
INTERCOM_SECRET=
# Zendesk Config
NEXT_PUBLIC_ZENDESK_KEY=
@@ -135,12 +138,16 @@ API_KEY_PREFIX=cal_
EMAIL_FROM='notifications@yourselfhostedcal.com'
# Configure SMTP settings (@see https://nodemailer.com/smtp/).
# Configuration to receive emails locally (mailhog)
EMAIL_SERVER_HOST='localhost'
EMAIL_SERVER_PORT=1025
# Note: The below configuration for Office 365 has been verified to work.
EMAIL_SERVER_HOST='smtp.office365.com'
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER='<office365_emailAddress>'
# EMAIL_SERVER_HOST='smtp.office365.com'
# EMAIL_SERVER_PORT=587
# EMAIL_SERVER_USER='<office365_emailAddress>'
# Keep in mind that if you have 2FA enabled, you will need to provision an App Password.
EMAIL_SERVER_PASSWORD='<office365_password>'
# EMAIL_SERVER_PASSWORD='<office365_password>'
# The following configuration for Gmail has been verified to work.
# EMAIL_SERVER_HOST='smtp.gmail.com'
@@ -160,9 +167,6 @@ CLOSECOM_API_KEY=
# Sendgrid internal sync service
SENDGRID_SYNC_API_KEY=
# Sentry
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_IGNORE_API_RESOLUTION_ERROR=
# Change your Brand
NEXT_PUBLIC_APP_NAME="Cal.com"
@@ -177,3 +181,5 @@ CSP_POLICY=
# Vercel Edge Config
EDGE_CONFIG=
NEXT_PUBLIC_MINUTES_TO_BOOK=5 # Minutes
-33
View File
@@ -1,33 +0,0 @@
# This is a comment.
# Each line is a file pattern followed by one or more owners.
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @calcom/reviewers
.github/ @calcom/core
.husky/ @calcom/core
.vcode/ @calcom/core
.snaplet/ @calcom/core
deploy/ @calcom/core
scripts/ @calcom/core
apps/docs @calcom/docs
apps/swagger @calcom/docs
packages/app-store-cli @hariombalhara @calcom/core
packages/dayjs @zomars @calcom/core
packages/emails @zomars @calcom/core
packages/embeds @hariombalhara @calcom/core
packages/eslint-plugin @zomars @calcom/core
packages/features @zomars @calcom/core
packages/features/kbar @alishaz-polymath @calcom/core
packages/features/ee/impersonation @sean-brydon @calcom/core
packages/features/ee/payments @alannnc @calcom/core
packages/features/ee/workflows @CarinaWolli @calcom/core
packages/features/tips @PeerRich @calcom/core
packages/ui @calcom/ui
packages/config @calcom/core
packages/app-store/routing-forms @hariombalhara @calcom/core
+7 -3
View File
@@ -2,6 +2,7 @@ name: Cron - mark stale for inactive issues
permissions:
issues: write
pull-requests: write
on:
# "Scheduled workflows run on the latest commit on the default or base branch."
@@ -15,6 +16,9 @@ jobs:
steps:
- uses: actions/stale@v7
with:
days-before-stale: 60
include-only-assigned: true
days-before-close: -1
days-before-issue-stale: 60
days-before-issue-close: -1
days-before-pr-stale: 14
days-before-pr-close: 7
stale-pr-message: "This PR is being marked as stale due to inactivity."
close-pr-message: "This PR is being closed due to inactivity. Please reopen if work is intended to be continued."
+2
View File
@@ -15,6 +15,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
with:
token: ${{ secrets.GH_ACCESS_TOKEN }}
- name: crowdin action
uses: crowdin/github-action@1.5.1
+2 -2
View File
@@ -24,7 +24,7 @@ jobs:
- name: Analyze bundle
run: |
cd apps/web
npx -p nextjs-bundle-analysis report
npx -p nextjs-bundle-analysis@0.5.0 report
- name: Upload bundle
uses: actions/upload-artifact@v2
@@ -76,7 +76,7 @@ jobs:
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: "<!-- __NEXTJS_BUNDLE -->"
body-includes: "<!-- __NEXTJS_BUNDLE_@calcom/web -->"
- name: Create Comment
uses: peter-evans/create-or-update-comment@v1.4.4
+1
View File
@@ -7,6 +7,7 @@ on:
paths-ignore:
- "**.md"
- ".github/CODEOWNERS"
merge_group:
workflow_dispatch:
concurrency:
@@ -1,7 +1,6 @@
const https = require("https");
async function applyLabelFromLinkedIssueToPR(pr, token) {
// Get the labels from issues linked to the PR
const query = `
query GetLinkedIssues($owner: String!, $repo: String!, $prNumber: Int!) {
@@ -38,7 +37,7 @@ async function applyLabelFromLinkedIssueToPR(pr, token) {
headers: {
"Content-Type": "application/json",
"Content-Length": graphqlData.length,
"Authorization": "Bearer " + token,
Authorization: "Bearer " + token,
"User-Agent": "Node.js",
},
};
@@ -52,14 +51,7 @@ async function applyLabelFromLinkedIssueToPR(pr, token) {
responseBody += chunk;
});
response.on("end", () => {
resolve(
JSON.parse(responseBody)
?.data
?.repository
?.pullRequest
?.closingIssuesReferences
?.nodes
);
resolve(JSON.parse(responseBody)?.data?.repository?.pullRequest?.closingIssuesReferences?.nodes);
});
});
@@ -96,7 +88,7 @@ async function applyLabelFromLinkedIssueToPR(pr, token) {
headers: {
"Content-Type": "application/json",
"Content-Length": labelsData.length,
"Authorization": "Bearer " + token,
Authorization: "Bearer " + token,
"User-Agent": "Node.js",
},
};
@@ -126,11 +118,9 @@ async function applyLabelFromLinkedIssueToPR(pr, token) {
console.log(`Error labelling PR: ${labelResult.message}`);
continue;
}
console.log(
`Applied labels: ${labels.join(", ")} to PR #${
pr.number
} from linked issue #${issue.number}`
`Applied labels: ${labels.join(", ")} to PR #${pr.number} from linked issue #${issue.number}`
);
}
}
-28
View File
@@ -1,28 +0,0 @@
name: TODO to Issue
on:
push:
branches:
- main
workflow_dispatch:
inputs:
MANUAL_COMMIT_REF:
description: "The SHA of the commit to get the diff for"
required: true
MANUAL_BASE_REF:
description: "By default, the commit entered above is compared to the one directly before it; to go back further, enter an earlier SHA here"
required: false
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
todos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: "Add TODOs to issues"
uses: "alstr/todo-to-issue-action@v4"
env:
MANUAL_COMMIT_REF: ${{ inputs.MANUAL_COMMIT_REF }}
MANUAL_BASE_REF: ${{ inputs.MANUAL_BASE_REF }}
with:
IDENTIFIERS: '[{"name": "TODO", "labels": ["🙋🏻‍♂️help wanted"]}, {"name": "FIXME", "labels": ["🐛 bug"]}]'
+2 -2
View File
@@ -65,8 +65,9 @@ tsconfig.tsbuildinfo
# turbo
.turbo
# Prisma-Zod
# Prisma generated files
packages/prisma/zod/*.ts
packages/prisma/enums
# Builds
dist
@@ -83,7 +84,6 @@ apps/storybook/build-storybook.log
# Submodules
.gitmodules
apps/api
apps/website
apps/console
apps/auth
+43
View File
@@ -0,0 +1,43 @@
tasks:
- init: |
yarn &&
cp .env.example .env &&
next_auth_secret=$(openssl rand -base64 32) &&
calendso_encryption_key=$(openssl rand -base64 24) &&
sed -i -e "s|^NEXTAUTH_SECRET=.*|NEXTAUTH_SECRET=$next_auth_secret|" \
-e "s|^CALENDSO_ENCRYPTION_KEY=.*|CALENDSO_ENCRYPTION_KEY=$calendso_encryption_key|" .env
command: yarn dx
ports:
- port: 3000
visibility: public
onOpen: open-preview
- port: 5420
visibility: private
onOpen: ignore
- port: 1025
visibility: private
onOpen: ignore
- port: 8025
visibility: private
onOpen: ignore
github:
prebuilds:
master: true
pullRequests: true
pullRequestsFromForks: true
addCheck: true
addComment: true
addBadge: true
vscode:
extensions:
- DavidAnson.vscode-markdownlint
- yzhang.markdown-all-in-one
- esbenp.prettier-vscode
- dbaeumer.vscode-eslint
- bradlc.vscode-tailwindcss
- ban.spellright
- stripe.vscode-stripe
- Prisma.prisma
-8
View File
@@ -1,8 +0,0 @@
{
"workspaceId": "63ea8121b6e2b0543ba79616",
"defaultEnvironment": "dev",
"gitBranchToEnvironmentMapping": {
"main": "staging",
"production": "prod"
}
}
+2
View File
@@ -7,6 +7,7 @@ public
*.lock
*.log
*.test.ts
.gitignore
.npmignore
@@ -14,4 +15,5 @@ public
.DS_Store
.eslintignore
packages/prisma/zod
packages/prisma/enums
apps/web/public/embed
+1 -1
View File
@@ -6,6 +6,6 @@
},
"typescript.preferences.importModuleSpecifier": "non-relative",
"spellright.language": ["en"],
"spellright.documentTypes": ["markdown", "typescript"],
"spellright.documentTypes": ["markdown", "typescript", "typescriptreact"],
"tailwindCSS.experimental.classRegex": [["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]]
}
File diff suppressed because one or more lines are too long
+2
View File
@@ -3,5 +3,7 @@ nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
yarnPath: .yarn/releases/yarn-3.4.1.cjs
+6 -1
View File
@@ -86,7 +86,12 @@ To develop locally:
yarn
```
5. Start developing and watch for code changes:
5. Set up your `.env` file:
- Use `openssl rand -base64 32` to generate a key and add it under `NEXTAUTH_SECRET` in the `.env` file.
- Use `openssl rand -base64 24` to generate a key and add it under `CALENDSO_ENCRYPTION_KEY` in the `.env` file.
6. Start developing and watch for code changes:
```sh
yarn dev
+1 -1
View File
@@ -2,7 +2,7 @@ Copyright (c) 2020-present Cal.com, Inc.
Portions of this software are licensed as follows:
* All content that resides under https://github.com/calcom/cal.com/tree/main/packages/features/ee directory of this repository (Enterprise Edition) is licensed under the license defined in "ee/LICENSE".
* All content that resides under https://github.com/calcom/cal.com/tree/main/packages/features/ee directory of this repository (Commercial License) is licensed under the license defined in "ee/LICENSE".
* All third party components incorporated into the Cal.com Software are licensed under the original license provided by the owner of the applicable component.
* Content outside of the above mentioned directories or restrictions above is available under the "AGPLv3" license as defined below.
+78 -59
View File
@@ -24,7 +24,7 @@
<p align="center">
<a href="https://cal.com/slack"><img src="https://img.shields.io/badge/Slack-calendso.slack.com-%234A154B" alt="Join Cal.com Slack"></a>
<a href="https://www.producthunt.com/posts/calendso"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Month-%23DA552E" alt="Product Hunt"></a>
<a href="https://producthunt.com/posts/calendso"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Month-%23DA552E" alt="Product Hunt"></a>
<a href="https://status.cal.com"><img height="20px" src="https://betteruptime.com/status-badges/v1/monitor/a9kf.svg" alt="Uptime"></a>
<a href="https://github.com/calcom/cal.com/stargazers"><img src="https://img.shields.io/github/stars/calcom/cal.com" alt="Github Stars"></a>
<a href="https://news.ycombinator.com/item?id=34507672"><img src="https://img.shields.io/badge/Hacker%20News-%231-%23FF6600" alt="Hacker News"></a>
@@ -38,13 +38,13 @@
<a href="https://github.com/calcom/cal.com/issues?q=is:issue+is:open+label:%22%F0%9F%99%8B%F0%9F%8F%BB%E2%80%8D%E2%99%82%EF%B8%8Fhelp+wanted%22"><img src="https://img.shields.io/badge/Help%20Wanted-Contribute-blue"></a>
<a href="https://cal.com/figma"><img src="https://img.shields.io/badge/Figma-Design%20System-blueviolet"></a>
<a href="https://calendso.slack.com/archives/C02BY67GMMW"><img src="https://img.shields.io/badge/translations-contribute-brightgreen" /></a>
<a href="https://www.contributor-covenant.org/version/1/4/code-of-conduct/ "><img src="https://img.shields.io/badge/Contributor%20Covenant-1.4-purple" /></a>
<a href="https://contributor-covenant.org/version/1/4/code-of-conduct/ "><img src="https://img.shields.io/badge/Contributor%20Covenant-1.4-purple" /></a>
<a href="https://console.algora.io/org/cal/bounties?status=open"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fconsole.algora.io%2Fapi%2Fshields%2Fcal%2Fbounties%3Fstatus%3Dopen" /></a>
</p>
<!-- ABOUT THE PROJECT -->
## About The Project
## About the Project
<img width="100%" alt="booking-screen" src="https://user-images.githubusercontent.com/8019099/176390354-f1bc7069-0341-437a-9bb8-eb41092b4016.gif">
@@ -53,13 +53,13 @@
The open source Calendly alternative. You are in charge
of your own data, workflow and appearance.
Calendly and other scheduling tools are awesome. It made our lives massively easier. We're using it for business meetings, seminars, yoga classes and even calls with our families. However, most tools are very limited in terms of control and customisations.
Calendly and other scheduling tools are awesome. It made our lives massively easier. We're using it for business meetings, seminars, yoga classes and even calls with our families. However, most tools are very limited in terms of control and customizations.
That's where Cal.com comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data.
## Recognition
#### Hacker News
#### [Hacker News](https://news.ycombinator.com/from?site=cal.com)
<a href="https://news.ycombinator.com/item?id=34507672">
<img
@@ -77,22 +77,22 @@ That's where Cal.com comes in. Self-hosted or hosted by us. White-label by desig
/>
</a>
#### [Product Hunt](https://www.producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso)
#### [Product Hunt](https://producthunt.com/products/cal-com?utm_source=badge-top-post-badge&utm_medium=badge)
<a href="https://www.producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=291910&theme=light&period=monthly" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> <a href="https://www.producthunt.com/posts/calendso?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-calendso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=291910&theme=light" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> <a href="https://www.producthunt.com/stories/how-this-open-source-calendly-alternative-rocketed-to-product-of-the-day" target="_blank"><img src="https://cal.com/maker-grant.svg" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=291910&theme=light&period=monthly" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> <a href="https://producthunt.com/posts/calendso?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-calendso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=291910&theme=light" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> <a href="https://producthunt.com/stories/how-this-open-source-calendly-alternative-rocketed-to-product-of-the-day" target="_blank"><img src="https://cal.com/maker-grant.svg" alt="Cal.com - The open source Calendly alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
### Built With
- [Next.js](https://nextjs.org/?ref=cal.com)
- [tRPC](https://trpc.io/?ref=cal.com)
- [React](https://reactjs.org/?ref=cal.com)
- [Tailwind](https://tailwindcss.com/?ref=cal.com)
- [Prisma](https://prisma.io/?ref=cal.com)
- [React.js](https://reactjs.org/?ref=cal.com)
- [Tailwind CSS](https://tailwindcss.com/?ref=cal.com)
- [Prisma.io](https://prisma.io/?ref=cal.com)
- [Daily.co](https://go.cal.com/daily)
## Stay Up-to-Date
Cal officially launched as v.1.0 on 15th of September, however a lot of new features are coming. Watch **releases** of this repository to be notified for future updates:
Cal.com officially launched as v.1.0 on 15th of September, however a lot of new features are coming. Watch **releases** of this repository to be notified for future updates:
![cal-star-github](https://user-images.githubusercontent.com/8019099/154853944-a9e3c999-3da3-4048-b149-b4f73893c6fb.gif)
@@ -104,7 +104,7 @@ To get a local copy up and running, please follow these simple steps.
### Prerequisites
Here is what you need to be able to run Cal.
Here is what you need to be able to run Cal.com.
- Node.js (Version: >=15.x <17)
- PostgreSQL
@@ -121,6 +121,9 @@ Here is what you need to be able to run Cal.
```sh
git clone https://github.com/calcom/cal.com.git
```
> If you are on windows, run the following command on `gitbash` with admin privileges: <br>
```git clone -c core.symlinks=true https://github.com/calcom/cal.com.git``` <br>
See [docs](https://cal.com/docs/how-to-guides/how-to-troubleshoot-symbolic-link-issues-on-windows#enable-symbolic-links) for more details.
1. Go to the project folder
@@ -134,10 +137,10 @@ Here is what you need to be able to run Cal.
yarn
```
1. Set up your .env file
1. Set up your `.env` file
- Duplicate `.env.example` to `.env`
- Use `openssl rand -base64 32` to generate a key and add it under `NEXTAUTH_SECRET` in the .env file.
- Use `openssl rand -base64 24` to generate a key and add it under `CALENDSO_ENCRYPTION_KEY` in the .env file.
- Use `openssl rand -base64 32` to generate a key and add it under `NEXTAUTH_SECRET` in the `.env` file.
- Use `openssl rand -base64 24` to generate a key and add it under `CALENDSO_ENCRYPTION_KEY` in the `.env` file.
#### Quick start with `yarn dx`
@@ -150,53 +153,63 @@ yarn dx
#### Development tip
> Add `NEXT_PUBLIC_DEBUG=1` anywhere in your `.env` to get logging information for all the queries and mutations driven by **trpc**.
> Add `NEXT_PUBLIC_DEBUG=1` anywhere in your `.env` to get logging information for all the queries and mutations driven by **tRPC**.
```sh
echo 'NEXT_PUBLIC_DEBUG=1' >> .env
```
#### Gitpod Setup
1. Click the button below to open this project in Gitpod.
2. This will open a fully configured workspace in your browser with all the necessary dependencies already installed.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/calcom/cal.com)
#### Manual setup
1. Configure environment variables in the `.env` file. Replace `<user>`, `<pass>`, `<db-host>`, `<db-port>` with their applicable values
1. Configure environment variables in the `.env` file. Replace `<user>`, `<pass>`, `<db-host>`, and `<db-port>` with their applicable values
```
DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'
```
<details>
<summary>If you don't know how to configure the DATABASE_URL, then follow the steps here to create a quick DB using Heroku</summary>
<summary>If you don't know how to configure the DATABASE_URL, then follow the steps here to create a quick local DB</summary>
1. Create a free account with [Heroku](https://www.heroku.com/).
1. [Download](https://www.postgresql.org/download/) and install postgres in your local (if you don't have it already).
2. Create a new app.
<img width="306" alt="Create an App" src="https://user-images.githubusercontent.com/16905768/115322780-b3d58c00-a17e-11eb-8a52-b758fb0ea942.png">
2. Create your own local db by executing `createDB <DB name>`
3. In your new app, go to `Overview` and next to `Installed add-ons`, click `Configure Add-ons`. We need this to set up our database.
![image](https://user-images.githubusercontent.com/16905768/115323232-a53ba480-a17f-11eb-98db-58e2f8c52426.png)
3. Now open your psql shell with the DB you created: `psql -h localhost -U postgres -d <DB name>`
4. Once you clicked on `Configure Add-ons`, click on `Find more add-ons` and search for `postgres`. One of the options will be `Heroku Postgres` - click on that option.
![image](https://user-images.githubusercontent.com/16905768/115323126-5beb5500-a17f-11eb-8030-7380310807a9.png)
4. Inside the psql shell execute `\conninfo`. And you will get the following info.
![image](https://user-images.githubusercontent.com/39329182/236612291-51d87f69-6dc1-4a23-bf4d-1ca1754e0a35.png)
5. Once the pop-up appears, click `Submit Order Form` - plan name should be `Hobby Dev - Free`.
<img width="512" alt="Submit Order Form" src="https://user-images.githubusercontent.com/16905768/115323265-b4baed80-a17f-11eb-99f0-d67f019aa6df.png">
5. Now extract all the info and add it to your DATABASE_URL. The url would look something like this
`postgresql://postgres:postgres@localhost:5432/Your-DB-Name`.
6. Once you completed the above steps, click on your newly created `Heroku Postgres` and go to its `Settings`.
![image](https://user-images.githubusercontent.com/16905768/115323367-e92ea980-a17f-11eb-9ff4-dec95f2ec349.png)
7. In `Settings`, copy your URI to your Cal.com .env file and replace the `postgresql://<user>:<pass>@<db-host>:<db-port>` with it.
![image](https://user-images.githubusercontent.com/16905768/115323556-4591c900-a180-11eb-9808-2f55d2aa3995.png)
![image](https://user-images.githubusercontent.com/16905768/115323697-7a9e1b80-a180-11eb-9f08-a742b1037f90.png)
8. To view your DB, once you add new data in Prisma, you can use [Heroku Data Explorer](https://heroku-data-explorer.herokuapp.com/).
</details>
1. Set a 32 character random string in your .env file for the `CALENDSO_ENCRYPTION_KEY` (You can use a command like `openssl rand -base64 24` to generate one).
If you don't want to create a local DB. Then you can also consider using services like railway.app or render.
- [Setup postgres DB with railway.app](https://arctype.com/postgres/setup/railway-postgres)
- [Setup postgres DB with render](https://render.com/docs/databases)
1. Copy and paste your `DATABASE_URL` from `.env` to `.env.appStore`.
1. Set a 32 character random string in your `.env` file for the `CALENDSO_ENCRYPTION_KEY` (You can use a command like `openssl rand -base64 24` to generate one).
1. Set up the database using the Prisma schema (found in `packages/prisma/schema.prisma`)
```sh
yarn workspace @calcom/prisma db-deploy
```
1. Run [mailhog](https://github.com/mailhog/MailHog) to view emails sent during development
```sh
docker pull mailhog/mailhog
docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog
```
1. Run (in development mode)
@@ -206,7 +219,7 @@ echo 'NEXT_PUBLIC_DEBUG=1' >> .env
#### Setting up your first user
1. Open [Prisma Studio](https://www.prisma.io/studio) to look at or modify the database content:
1. Open [Prisma Studio](https://prisma.io/studio) to look at or modify the database content:
```sh
yarn db-studio
@@ -251,7 +264,7 @@ yarn playwright show-report test-results/reports/playwright-html-report
yarn workspace @calcom/prisma db-migrate
```
(this can clear your development database in some cases)
(This can clear your development database in some cases)
In a production environment, run:
@@ -285,7 +298,7 @@ yarn playwright show-report test-results/reports/playwright-html-report
### Docker
The Docker configuration for Cal is an effort powered by people within the community.
The Docker configuration for Cal.com is an effort powered by people within the community.
If you want to contribute to the Docker repository, [reply here](https://github.com/calcom/docker/discussions/32).
@@ -298,14 +311,14 @@ Cal.com, Inc. does not provide official support for Docker, but we will accept f
### Heroku
<a href="https://heroku.com/deploy?template=https://github.com/calcom/cal.com">
<img width="185px" height="auto" src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy">
<img width="185px" height="auto" src="https://herokucdn.com/deploy/button.svg" alt="Deploy">
</a>
### Railway
[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/new/template/cal)
You can deploy Cal on [Railway](https://railway.app/) using the button above. The team at Railway also have a [detailed blog post](https://blog.railway.app/p/calendso) on deploying Cal on their platform.
You can deploy Cal.com on [Railway](https://railway.app) using the button above. The team at Railway also have a [detailed blog post](https://blog.railway.app/p/calendso) on deploying Cal.com on their platform.
### Vercel
@@ -386,7 +399,7 @@ Don't code but still want to contribute? Join our [slack](https://cal.com/slack)
8. Select Web Application as the Application Type.
9. Under Authorized redirect URI's, select Add URI and then add the URI `<Cal.com URL>/api/integrations/googlecalendar/callback` and `<Cal.com URL>/api/auth/callback/google` replacing Cal.com URL with the URI at which your application runs.
10. The key will be created and you will be redirected back to the Credentials page. Select the newly generated client ID under OAuth 2.0 Client IDs.
11. Select Download JSON. Copy the contents of this file and paste the entire JSON string in the .env file as the value for GOOGLE_API_CREDENTIALS key.
11. Select Download JSON. Copy the contents of this file and paste the entire JSON string in the `.env` file as the value for `GOOGLE_API_CREDENTIALS` key.
#### _Adding google calendar to Cal.com App Store_
@@ -423,7 +436,7 @@ following
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.
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 `<Cal.com URL>/api/integrations/zoomvideo/callback` replacing Cal.com URL with the URI at which your application runs.
10. Also add the redirect URL given above as a allow list 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". On the left, click the category "Meeting" and check the scope `meeting:write`.
@@ -435,8 +448,8 @@ following
1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
2. From within your dashboard, go to the [developers](https://dashboard.daily.co/developers) tab.
3. Copy your API key.
4. Now paste the API key to your .env file into the `DAILY_API_KEY` field in your .env file.
5. If you have the [Daily Scale Plan](https://www.daily.co/pricing) set the `DAILY_SCALE_PLAN` variable to `true` in order to use features like video recording.
4. Now paste the API key to your `.env` file into the `DAILY_API_KEY` field in your `.env` file.
5. If you have the [Daily Scale Plan](https://daily.co/pricing) set the `DAILY_SCALE_PLAN` variable to `true` in order to use features like video recording.
### Obtaining HubSpot Client ID and Secret
@@ -445,12 +458,16 @@ following
3. Click "Create app" button top right.
4. Fill in any information you want in the "App info" tab
5. Go to tab "Auth"
6. Now copy the Client ID and Client Secret to your .env file into the `HUBSPOT_CLIENT_ID` and `HUBSPOT_CLIENT_SECRET` fields.
6. Now copy the Client ID and Client Secret to your `.env` file into the `HUBSPOT_CLIENT_ID` and `HUBSPOT_CLIENT_SECRET` fields.
7. Set the Redirect URL for OAuth `<Cal.com URL>/api/integrations/hubspot/callback` replacing Cal.com URL with the URI at which your application runs.
8. In the "Scopes" section at the bottom of the page, make sure you select "Read" and "Write" for scope called `crm.objects.contacts`
9. Click the "Save" button at the bottom footer.
10. You're good to go. Now you can see any booking in Cal.com created as a meeting in HubSpot for your contacts.
### Obtaining Webex Client ID and Secret
[See Webex Readme](./packages/app-store/webex/)
### Obtaining ZohoCRM Client ID and Secret
1. Open [Zoho API Console](https://api-console.zoho.com/) and sign into your account, or create a new one.
@@ -458,31 +475,33 @@ following
3. Click "ADD CLIENT" button top right and select "Server-based Applications".
4. Fill in any information you want in the "Client Details" tab
5. Go to tab "Client Secret" tab.
6. Now copy the Client ID and Client Secret to your .env file into the `ZOHOCRM_CLIENT_ID` and `ZOHOCRM_CLIENT_SECRET` fields.
6. Now copy the Client ID and Client Secret to your `.env` file into the `ZOHOCRM_CLIENT_ID` and `ZOHOCRM_CLIENT_SECRET` fields.
7. Set the Redirect URL for OAuth `<Cal.com URL>/api/integrations/zohocrm/callback` replacing Cal.com URL with the URI at which your application runs.
8. In the "Settings" section check the "Multi-DC" option if you wish to use the same OAuth credentials for all data centers.
9. Click the "Save"/ "UPDATE" button at the bottom footer.
10. You're good to go. Now you can easily add your ZohoCRM integration in the Cal.com settings.
### Obtaining Zoho Bigin Client ID and Secret
[Follow these steps](./packages/app-store/zoho-bigin/)
## Workflows
### Setting up SendGrid for Email reminders
1. Create a SendGrid account (https://signup.sendgrid.com/)
2. Go to Settings -> API keys and create an API key
3. Copy API key to your .env file into the SENDGRID_API_KEY field
3. Copy API key to your `.env` file into the `SENDGRID_API_KEY` field
4. Go to Settings -> Sender Authentication and verify a single sender
5. Copy the verified E-Mail to your .env file into the SENDGRID_EMAIL field
6. Add your custom sender name to the .env file into the NEXT_PUBLIC_SENDGRID_SENDER_NAME field (fallback is Cal.com)
5. Copy the verified E-Mail to your `.env` file into the `SENDGRID_EMAIL` field
6. Add your custom sender name to the `.env` file into the `NEXT_PUBLIC_SENDGRID_SENDER_NAME` field (fallback is Cal.com)
### Setting up Twilio for SMS reminders
1. Create a Twilio account (https://www.twilio.com/try-twilio)
1. Create a Twilio account (https://twilio.com/try-twilio)
2. Click ‘Get a Twilio phone number’
3. Copy Account SID to your .env file into the TWILIO_SID field
4. Copy Auth Token to your .env file into the TWILIO_TOKEN field
5. Copy your Twilio phone number to your .env file into the TWILIO_PHONE_NUMBER field
6. Add your own sender id to the .env file into the NEXT_PUBLIC_SENDER_ID field (fallback is Cal)
3. Copy Account SID to your `.env` file into the `TWILIO_SID` field
4. Copy Auth Token to your `.env` file into the `TWILIO_TOKEN` field
5. Copy your Twilio phone number to your `.env` file into the `TWILIO_PHONE_NUMBER` field
6. Add your own sender id to the `.env` file into the `NEXT_PUBLIC_SENDER_ID` field (fallback is Cal.com)
7. Create a messaging service (Develop -> Messaging -> Services)
8. Choose any name for the messaging service
9. Click 'Add Senders'
@@ -490,15 +509,15 @@ following
11. Add the listed phone number
12. Leave all other fields as they are
13. Complete setup and click ‘View my new Messaging Service’
14. Copy Messaging Service SID to your .env file into the TWILIO_MESSAGING_SID field
14. Copy Messaging Service SID to your `.env` file into the `TWILIO_MESSAGING_SID` field
15. Create a verify service
16. Copy Verify Service SID to your .env file into the TWILIO_VERIFY_SID field
16. Copy Verify Service SID to your `.env` file into the `TWILIO_VERIFY_SID` field
<!-- LICENSE -->
## License
Distributed under the AGPLv3 License. See `LICENSE` for more information.
Distributed under the [AGPLv3 License](https://github.com/calcom/cal.com/blob/main/LICENSE). See `LICENSE` for more information.
<!-- ACKNOWLEDGEMENTS -->
+6
View File
@@ -0,0 +1,6 @@
API_KEY_PREFIX=cal_
DATABASE_URL="postgresql://postgres:@localhost:5450/calendso"
NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
# Get it in console.cal.com
CALCOM_LICENSE_KEY=""
+1
View File
@@ -0,0 +1 @@
module.exports = require("@calcom/config/eslint-preset");
+81
View File
@@ -0,0 +1,81 @@
# .env file
.env
# dependencies
node_modules
.pnp
.pnp.js
# testing
coverage
/test-results/
playwright/videos
playwright/screenshots
playwright/artifacts
playwright/results
playwright/reports/*
# next.js
.next/
out/
build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env.local
.env.development.local
.env.test.local
.env.production.local
.env.*
!.env.example
# vercel
.vercel
# Webstorm
.idea
### VisualStudioCode template
.vscode/
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Typescript
tsconfig.tsbuildinfo
# turbo
.turbo
# Prisma-Zod
packages/prisma/zod/*.ts
# Builds
dist
# Linting
lint-results
# Yarn
yarn-error.log
.turbo
.next
.husky
.vscode
.env
+5
View File
@@ -0,0 +1,5 @@
.next/
coverage/
node_modules/
tests/
templates/
+225
View File
@@ -0,0 +1,225 @@
<!-- PROJECT LOGO -->
<div align="center">
<a href="https://cal.com/docs/enterprise-features/api#api-server-specifications">
<img src="https://user-images.githubusercontent.com/8019099/133430653-24422d2a-3c8d-4052-9ad6-0580597151ee.png" alt="Logo">
</a>
<a href="https://cal.com/docs/enterprise-features/api#api-server-specifications">Read the API docs</a>
</div>
# Cal.com Public API
Welcome to the Public API ("/apps/api") of the Cal.com.
This is the public REST api for cal.com.
It exposes CRUD Endpoints of all our most important resources.
And it makes it easy for anyone to integrate with Cal.com at the application programming level.
## Stack
- NextJS
- TypeScript
- Prisma
## Development
### Setup
1. Clone the main repo (NOT THIS ONE)
```sh
git clone --recurse-submodules -j8 https://github.com/calcom/cal.com.git
```
1. Go to the project folder
```sh
cd cal.com
```
1. Copy `apps/api/.env.example` to `apps/api/.env`
```sh
cp apps/api/.env.example apps/api/.env
cp .env.example .env
```
1. Install packages with yarn
```sh
yarn
```
1. Start developing
```sh
yarn workspace @calcom/api dev
```
1. Open [http://localhost:3002](http://localhost:3002) with your browser to see the result.
## API Authentication (API Keys)
The API requires a valid apiKey query param to be passed:
You can generate them at <https://app.cal.com/settings/security>
For example:
```sh
GET https://api.cal.com/v1/users?apiKey={INSERT_YOUR_CAL.COM_API_KEY_HERE}
```
API Keys optionally may have expiry dates, if they are expired they won't work. If you create an apiKey without a userId relation, it won't work either for now as it relies on it to establish the current authenticated user.
In the future we might add support for header Bearer Auth if we need to or if our customers require it.
## Middlewares
We don't use the new NextJS 12 Beta Middlewares, mainly because they run on the edge, and are not able to call prisma from api endpoints. We use instead a very nifty library called next-api-middleware that let's us use a similar approach building our own middlewares and applying them as we see fit.
- withMiddleware() requires some default middlewares (verifyApiKey, etc...)
## Next.config.js
### Redirects
Since this is an API only project, we don't want to have to type /api/ in all the routes, and so redirect all traffic to api, so a call to `api.cal.com/v1` will resolve to `api.cal.com/api/v1`
Likewise, v1 is added as param query called version to final /api call so we don't duplicate endpoints in the future for versioning if needed.
### Transpiling locally shared monorepo modules
We're calling several packages from monorepo, this need to be transpiled before building since are not available as regular npm packages. That's what withTM does.
```js
"@calcom/app-store",
"@calcom/prisma",
"@calcom/lib",
"@calcom/features",
```
## API Endpoint Validation
We validate that only the supported methods are accepted at each endpoint, so in
- **/endpoint**: you can only [GET] (all) and [POST] (create new)
- **/endpoint/id**: you can read create and edit [GET, PATCH, DELETE]
### Zod Validations
The API uses `zod` library like our main web repo. It validates that either GET query parameters or POST body content's are valid and up to our spec. It gives errors when parsing result's with schemas and failing validation.
We use it in several ways, but mainly, we first import the auto-generated schema from @calcom/prisma for each model, which lives in `lib/validations/`
We have some shared validations which several resources require, like baseApiParams which parses apiKey in all requests, or querIdAsString or TransformParseInt which deal with the id's coming from req.query.
- **[*]BaseBodyParams** that omits any values from the model that are too sensitive or we don't want to pick when creating a new resource like id, userId, etc.. (those are gotten from context or elswhere)
- **[*]Public** that also omits any values that we don't want to expose when returning the model as a response, which we parse against before returning all resources.
- **[*]BodyParams** which merges both `[*]BaseBodyParams.merge([*]RequiredParams);`
### Next Validations
[Next-Validations Docs](https://next-validations.productsway.com/)
[Next-Validations Repo](https://github.com/jellydn/next-validations)
We also use this useful helper library that let us wrap our endpoints in a validate HOC that checks the req against our validation schema built out with zod for either query and / or body's requests.
## Testing with Jest + node-mocks-http
We aim to provide a fully tested API for our peace of mind, this is accomplished by using jest + node-mocks-http
## Endpoints matrix
| resource | get [id] | get all | create | edit | delete |
| --------------------- | -------- | ------- | ------ | ---- | ------ |
| attendees | ✅ | ✅ | ✅ | ✅ | ✅ |
| availabilities | ✅ | ✅ | ✅ | ✅ | ✅ |
| booking-references | ✅ | ✅ | ✅ | ✅ | ✅ |
| event-references | ✅ | ✅ | ✅ | ✅ | ✅ |
| destination-calendars | ✅ | ✅ | ✅ | ✅ | ✅ |
| custom-inputs | ✅ | ✅ | ✅ | ✅ | ✅ |
| event-types | ✅ | ✅ | ✅ | ✅ | ✅ |
| memberships | ✅ | ✅ | ✅ | ✅ | ✅ |
| payments | ✅ | ✅ | ❌ | ❌ | ❌ |
| schedules | ✅ | ✅ | ✅ | ✅ | ✅ |
| selected-calendars | ✅ | ✅ | ✅ | ✅ | ✅ |
| teams | ✅ | ✅ | ✅ | ✅ | ✅ |
| users | ✅ | 👤[1] | ✅ | ✅ | ✅ |
## Models from database that are not exposed
mostly because they're deemed too sensitive can be revisited if needed. Also they are expected to be used via cal's webapp.
- [ ] Api Keys
- [ ] Credentials
- [ ] Webhooks
- [ ] ResetPasswordRequest
- [ ] VerificationToken
- [ ] ReminderMail
## Documentation (OpenAPI)
You will see that each endpoint has a comment at the top with the annotation `@swagger` with the documentation of the endpoint, **please update it if you change the code!** This is what auto-generates the OpenAPI spec by collecting the YAML in each endpoint and parsing it in /docs alongside the json-schema (auto-generated from prisma package, not added to code but manually for now, need to fix later)
### @calcom/apps/swagger
The documentation of the API lives inside the code, and it's auto-generated, the only endpoints that return without a valid apiKey are the homepage, with a JSON message redirecting you to the docs. and the /docs endpoint, which returns the OpenAPI 3.0 JSON Spec. Which SwaggerUi then consumes and generates the docs on.
## Deployment
`scripts/vercel-deploy.sh`
The API is deployed to vercel.com, it uses a similar deployment script to website or webapp, and requires transpilation of several shared packages that are part of our turborepo ["app-store", "prisma", "lib", "ee"]
in order to build and deploy properly.
## Envirorment variables
### Required
DATABASE_URL=DATABASE_URL="postgresql://postgres:@localhost:5450/calendso"
## Optional
API*KEY_PREFIX=cal*# This can be changed per envirorment so cal*test* for staging for example.
> If you're self-hosting under our commercial license, you can use any prefix you want for api keys. either leave the default cal\_ (not providing any envirorment variable) or modify it
**Ensure that while testing swagger, API project should be run in production mode**
We make sure of this by not using next in dev, but next build && next start, if you want hot module reloading and such when developing, please use yarn run next directly on apps/api.
See <https://github.com/vercel/next.js/blob/canary/packages/next/server/dev/hot-reloader.ts#L79>. Here in dev mode OPTIONS method is hardcoded to return only GET and OPTIONS as allowed method. Running in Production mode would cause this file to be not used. This is hot-reloading logic only.
To remove this limitation, we need to ensure that on local endpoints are requested by swagger at /api/v1 and not /v1
## Hosted api through cal.com
> _❗ WARNING: This is still experimental and not fully implemented yet❗_
Go to console.cal.com
Add a deployment or go to an existing one.
Activate API or Admin addon
Provide your `DATABASE_URL`
Now you can call api.cal.com?key=CALCOM_LICENSE_KEY, which will connect to your own databaseUrl.
## How to deploy
We recommend deploying API in vercel.
There's some settings that you'll need to setup.
Under Vercel > Your API Project > Settings
In General > Build & Development Settings
BUILD COMMAND: `yarn turbo run build --scope=@calcom/api --include-dependencies --no-deps`
OUTPUT DIRECTORY: `apps/api/.next`
In Git > Ignored Build Step
Add this command: `./scripts/vercel-deploy.sh`
See `scripts/vercel-deploy.sh` for more info on how the deployment is done.
> _❗ IMORTANT: If you're forking the API repo you will need to update the URLs in both the main repo [`.gitmodules`](https://github.com/calcom/cal.com/blob/main/.gitmodules#L7) and this repo [`./scripts/vercel-deploy.sh`](https://github.com/calcom/api/blob/main/scripts/vercel-deploy.sh#L3) ❗_
## Environment variables
Lastly API requires an env var for `DATABASE_URL` and `CALCOM_LICENSE_KEY`
+1
View File
@@ -0,0 +1 @@
export const PRISMA_CLIENT_CACHING_TIME = 1000 * 60 * 60 * 24; // one day in ms
+24
View File
@@ -0,0 +1,24 @@
import { nanoid } from "nanoid";
import type { NextMiddleware } from "next-api-middleware";
export const addRequestId: NextMiddleware = async (_req, res, next) => {
// Apply header with unique ID to every request
res.setHeader("Calcom-Response-ID", nanoid());
// Add all headers here instead of next.config.js as it is throwing error( Cannot set headers after they are sent to the client) for OPTIONS method
// It is known to happen only in Dev Mode.
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS, PATCH, DELETE, POST, PUT");
res.setHeader(
"Access-Control-Allow-Headers",
"X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, Content-Type, api_key, Authorization"
);
// Ensure all OPTIONS request are automatically successful. Headers are already set above.
if (_req.method === "OPTIONS") {
res.status(200).end();
return;
}
// Let remaining middleware and API route execute
await next();
};
+14
View File
@@ -0,0 +1,14 @@
import * as Sentry from "@sentry/nextjs";
import type { NextMiddleware } from "next-api-middleware";
export const captureErrors: NextMiddleware = async (_req, res, next) => {
try {
// Catch any errors that are thrown in remaining
// middleware and the API route handler
await next();
} catch (error) {
Sentry.captureException(error);
console.log(error);
res.status(400).json({ message: "Something went wrong", error });
}
};
+43
View File
@@ -0,0 +1,43 @@
import { PrismaClient } from "@prisma/client";
import type { NextMiddleware } from "next-api-middleware";
import { CONSOLE_URL } from "@calcom/lib/constants";
const LOCAL_CONSOLE_URL = process.env.NEXT_PUBLIC_CONSOLE_URL || CONSOLE_URL;
// This replaces the prisma client for the custom one if the key is valid
export const customPrismaClient: NextMiddleware = async (req, res, next) => {
const {
query: { key },
} = req;
// If no custom api Id is provided, attach to request the regular cal.com prisma client.
if (!key) {
req.prisma = new PrismaClient();
await next();
return;
}
// If we have a key, we check if the deployment matching the key, has a databaseUrl value set.
const databaseUrl = await fetch(`${LOCAL_CONSOLE_URL}/api/deployments/database?key=${key}`)
.then((res) => res.json())
.then((res) => res.databaseUrl);
if (!databaseUrl) {
res.status(400).json({ error: "no databaseUrl set up at your instance yet" });
return;
}
req.prisma = new PrismaClient({ datasources: { db: { url: databaseUrl } } });
/* @note:
In order to skip verifyApiKey for customPrisma requests,
we pass isAdmin true, and userId 0, if we detect them later,
we skip verifyApiKey logic and pass onto next middleware instead.
*/
req.isAdmin = true;
req.isCustomPrisma = true;
// We don't need the key from here and on. Prevents unrecognized key errors.
delete req.query.key;
await next();
await req.prisma.$disconnect();
// @ts-expect-error testing
delete req.prisma;
};
+9
View File
@@ -0,0 +1,9 @@
import type { NextMiddleware } from "next-api-middleware";
export const extendRequest: NextMiddleware = async (req, res, next) => {
req.pagination = {
take: 100,
skip: 0,
};
await next();
};
+32
View File
@@ -0,0 +1,32 @@
import type { NextMiddleware } from "next-api-middleware";
export const httpMethod = (allowedHttpMethod: "GET" | "POST" | "PATCH" | "DELETE"): NextMiddleware => {
return async function (req, res, next) {
if (req.method === allowedHttpMethod || req.method == "OPTIONS") {
await next();
} else {
res.status(405).json({ message: `Only ${allowedHttpMethod} Method allowed` });
res.end();
}
};
};
// Made this so we can support several HTTP Methods in one route and use it there.
// Could be further extracted into a third function or refactored into one.
// that checks if it's just a string or an array and apply the correct logic to both cases.
export const httpMethods = (allowedHttpMethod: string[]): NextMiddleware => {
return async function (req, res, next) {
if (allowedHttpMethod.some((method) => method === req.method || req.method == "OPTIONS")) {
await next();
} else {
res.status(405).json({ message: `Only ${allowedHttpMethod} Method allowed` });
res.end();
}
};
};
export const HTTP_POST = httpMethod("POST");
export const HTTP_GET = httpMethod("GET");
export const HTTP_PATCH = httpMethod("PATCH");
export const HTTP_DELETE = httpMethod("DELETE");
export const HTTP_GET_DELETE_PATCH = httpMethods(["GET", "DELETE", "PATCH"]);
export const HTTP_GET_OR_POST = httpMethods(["GET", "POST"]);
+14
View File
@@ -0,0 +1,14 @@
export default function parseJSONSafely(str: string) {
try {
return JSON.parse(str);
} catch (e) {
console.error((e as Error).message);
if ((e as Error).message.includes("Unexpected token")) {
return {
success: false,
message: `Invalid JSON in the body: ${(e as Error).message}`,
};
}
return {};
}
}
+47
View File
@@ -0,0 +1,47 @@
import type { NextMiddleware } from "next-api-middleware";
import { hashAPIKey } from "@calcom/features/ee/api-keys/lib/apiKeys";
import checkLicense from "@calcom/features/ee/common/server/checkLicense";
import { isAdminGuard } from "~/lib/utils/isAdmin";
// Used to check if the apiKey is not expired, could be extracted if reused. but not for now.
export const dateNotInPast = function (date: Date) {
const now = new Date();
if (now.setHours(0, 0, 0, 0) > date.setHours(0, 0, 0, 0)) {
return true;
}
};
// This verifies the apiKey and sets the user if it is valid.
export const verifyApiKey: NextMiddleware = async (req, res, next) => {
const { prisma, isCustomPrisma, isAdmin } = req;
const hasValidLicense = await checkLicense(prisma);
if (!hasValidLicense)
return res.status(401).json({ error: "Invalid or missing CALCOM_LICENSE_KEY environment variable" });
// If the user is an admin and using a license key (from customPrisma), skip the apiKey check.
if (isCustomPrisma && isAdmin) {
await next();
return;
}
// Check if the apiKey query param is provided.
if (!req.query.apiKey) return res.status(401).json({ message: "No apiKey provided" });
// remove the prefix from the user provided api_key. If no env set default to "cal_"
const strippedApiKey = `${req.query.apiKey}`.replace(process.env.API_KEY_PREFIX || "cal_", "");
// Hash the key again before matching against the database records.
const hashedKey = hashAPIKey(strippedApiKey);
// Check if the hashed api key exists in database.
const apiKey = await prisma.apiKey.findUnique({ where: { hashedKey } });
// If cannot find any api key. Throw a 401 Unauthorized.
if (!apiKey) return res.status(401).json({ error: "Your apiKey is not valid" });
if (apiKey.expiresAt && dateNotInPast(apiKey.expiresAt)) {
return res.status(401).json({ error: "This apiKey is expired" });
}
if (!apiKey.userId) return res.status(404).json({ error: "No user found for this apiKey" });
// save the user id in the request for later use
req.userId = apiKey.userId;
// save the isAdmin boolean here for later use
req.isAdmin = await isAdminGuard(req);
req.isCustomPrisma = false;
await next();
};
+37
View File
@@ -0,0 +1,37 @@
import { label } from "next-api-middleware";
import { addRequestId } from "./addRequestid";
import { captureErrors } from "./captureErrors";
import { customPrismaClient } from "./customPrisma";
import { extendRequest } from "./extendRequest";
import {
HTTP_POST,
HTTP_DELETE,
HTTP_PATCH,
HTTP_GET,
HTTP_GET_OR_POST,
HTTP_GET_DELETE_PATCH,
} from "./httpMethods";
import { verifyApiKey } from "./verifyApiKey";
import { withPagination } from "./withPagination";
const withMiddleware = label(
{
HTTP_GET_OR_POST,
HTTP_GET_DELETE_PATCH,
HTTP_GET,
HTTP_PATCH,
HTTP_POST,
HTTP_DELETE,
addRequestId,
verifyApiKey,
customPrismaClient,
extendRequest,
pagination: withPagination,
sentry: captureErrors,
},
// The order here, determines the order of execution, put customPrismaClient before verifyApiKey always.
["extendRequest", "sentry", "customPrismaClient", "verifyApiKey", "addRequestId"] // <-- Provide a list of middleware to call automatically
);
export { withMiddleware };
+17
View File
@@ -0,0 +1,17 @@
import type { NextMiddleware } from "next-api-middleware";
import z from "zod";
const withPage = z.object({
page: z.coerce.number().min(1).optional().default(1),
take: z.coerce.number().min(1).optional().default(10),
});
export const withPagination: NextMiddleware = async (req, _, next) => {
const { page, take } = withPage.parse(req.query);
const skip = (page - 1) * take;
req.pagination = {
take,
skip,
};
await next();
};
+187
View File
@@ -0,0 +1,187 @@
import type { EventLocationType } from "@calcom/app-store/locations";
import type {
Attendee,
Availability,
Booking,
BookingReference,
Credential,
DestinationCalendar,
EventType,
EventTypeCustomInput,
Membership,
Payment,
ReminderMail,
Schedule,
SelectedCalendar,
Team,
User,
Webhook,
} from "@calcom/prisma/client";
// Base response, used for all responses
export type BaseResponse = {
message?: string;
error?: Error;
};
// User
export type UserResponse = BaseResponse & {
user?: Partial<User>;
};
export type UsersResponse = BaseResponse & {
users?: Partial<User>[];
};
// Team
export type TeamResponse = BaseResponse & {
team?: Partial<Team>;
owner?: Partial<Membership>;
};
export type TeamsResponse = BaseResponse & {
teams?: Partial<Team>[];
};
// SelectedCalendar
export type SelectedCalendarResponse = BaseResponse & {
selected_calendar?: Partial<SelectedCalendar>;
};
export type SelectedCalendarsResponse = BaseResponse & {
selected_calendars?: Partial<SelectedCalendar>[];
};
// Attendee
export type AttendeeResponse = BaseResponse & {
attendee?: Partial<Attendee>;
};
// Grouping attendees in booking arrays for now,
// later might remove endpoint and move to booking endpoint altogether.
export type AttendeesResponse = BaseResponse & {
attendees?: Partial<Attendee>[];
};
// Availability
export type AvailabilityResponse = BaseResponse & {
availability?: Partial<Availability>;
};
export type AvailabilitiesResponse = BaseResponse & {
availabilities?: Partial<Availability>[];
};
// BookingReference
export type BookingReferenceResponse = BaseResponse & {
booking_reference?: Partial<BookingReference>;
};
export type BookingReferencesResponse = BaseResponse & {
booking_references?: Partial<BookingReference>[];
};
// Booking
export type BookingResponse = BaseResponse & {
booking?: Partial<Booking>;
};
export type BookingsResponse = BaseResponse & {
bookings?: Partial<Booking>[];
};
// Credential
export type CredentialResponse = BaseResponse & {
credential?: Partial<Credential>;
};
export type CredentialsResponse = BaseResponse & {
credentials?: Partial<Credential>[];
};
// DestinationCalendar
export type DestinationCalendarResponse = BaseResponse & {
destination_calendar?: Partial<DestinationCalendar>;
};
export type DestinationCalendarsResponse = BaseResponse & {
destination_calendars?: Partial<DestinationCalendar>[];
};
// Membership
export type MembershipResponse = BaseResponse & {
membership?: Partial<Membership>;
};
export type MembershipsResponse = BaseResponse & {
memberships?: Partial<Membership>[];
};
// EventTypeCustomInput
export type EventTypeCustomInputResponse = BaseResponse & {
event_type_custom_input?: Partial<EventTypeCustomInput>;
};
export type EventTypeCustomInputsResponse = BaseResponse & {
event_type_custom_inputs?: Partial<EventTypeCustomInput>[];
};
// From rrule https://jakubroztocil.github.io/rrule freq
export enum Frequency {
"YEARLY",
"MONTHLY",
"WEEKLY",
"DAILY",
"HOURLY",
"MINUTELY",
"SECONDLY",
}
interface EventTypeExtended extends Omit<EventType, "recurringEvent" | "locations"> {
recurringEvent: {
dtstart?: Date | undefined;
interval?: number | undefined;
count?: number | undefined;
freq?: Frequency | undefined;
until?: Date | undefined;
tzid?: string | undefined;
} | null;
locations:
| {
link?: string | undefined;
address?: string | undefined;
hostPhoneNumber?: string | undefined;
type: EventLocationType;
}[]
| null
// eslint-disable-next-line @typescript-eslint/no-explicit-any
| any;
}
// EventType
export type EventTypeResponse = BaseResponse & {
event_type?: Partial<EventType | EventTypeExtended>;
};
export type EventTypesResponse = BaseResponse & {
event_types?: Partial<EventType | EventTypeExtended>[];
};
// Payment
export type PaymentResponse = BaseResponse & {
payment?: Partial<Payment>;
};
export type PaymentsResponse = BaseResponse & {
payments?: Partial<Payment>[];
};
// Schedule
export type ScheduleResponse = BaseResponse & {
schedule?: Partial<Schedule>;
};
export type SchedulesResponse = BaseResponse & {
schedules?: Partial<Schedule>[];
};
// Webhook
export type WebhookResponse = BaseResponse & {
webhook?: Partial<Webhook> | null;
};
export type WebhooksResponse = BaseResponse & {
webhooks?: Partial<Webhook>[];
};
// ReminderMail
export type ReminderMailResponse = BaseResponse & {
reminder_mail?: Partial<ReminderMail>;
};
export type ReminderMailsResponse = BaseResponse & {
reminder_mails?: Partial<ReminderMail>[];
};
+9
View File
@@ -0,0 +1,9 @@
import type { NextApiRequest } from "next";
import { UserPermissionRole } from "@calcom/prisma/enums";
export const isAdminGuard = async (req: NextApiRequest) => {
const { userId, prisma } = req;
const user = await prisma.user.findUnique({ where: { id: userId } });
return user?.role === UserPermissionRole.ADMIN;
};
+4
View File
@@ -0,0 +1,4 @@
export const stringifyISODate = (date: Date | undefined): string => {
return `${date?.toISOString()}`;
};
// TODO: create a function that takes an object and returns a stringified version of dates of it.
+29
View File
@@ -0,0 +1,29 @@
import { z } from "zod";
import { _ApiKeyModel as ApiKey } from "@calcom/prisma/zod";
export const apiKeyCreateBodySchema = ApiKey.pick({
note: true,
expiresAt: true,
userId: true,
})
.partial({ userId: true })
.merge(z.object({ neverExpires: z.boolean().optional() }))
.strict();
export const apiKeyEditBodySchema = ApiKey.pick({
note: true,
})
.partial()
.strict();
export const apiKeyPublicSchema = ApiKey.pick({
id: true,
userId: true,
note: true,
createdAt: true,
expiresAt: true,
lastUsedAt: true,
/** We might never want to expose these. Leaving this a as reminder. */
// hashedKey: true,
});
+39
View File
@@ -0,0 +1,39 @@
import { z } from "zod";
import { _AttendeeModel as Attendee } from "@calcom/prisma/zod";
import { timeZone } from "~/lib/validations/shared/timeZone";
export const schemaAttendeeBaseBodyParams = Attendee.pick({
bookingId: true,
email: true,
name: true,
timeZone: true,
});
const schemaAttendeeCreateParams = z
.object({
bookingId: z.number().int(),
email: z.string().email(),
name: z.string(),
timeZone: timeZone,
})
.strict();
const schemaAttendeeEditParams = z
.object({
name: z.string().optional(),
email: z.string().email().optional(),
timeZone: timeZone.optional(),
})
.strict();
export const schemaAttendeeEditBodyParams = schemaAttendeeBaseBodyParams.merge(schemaAttendeeEditParams);
export const schemaAttendeeCreateBodyParams = schemaAttendeeBaseBodyParams.merge(schemaAttendeeCreateParams);
export const schemaAttendeeReadPublic = Attendee.pick({
id: true,
bookingId: true,
name: true,
email: true,
timeZone: true,
});
+54
View File
@@ -0,0 +1,54 @@
import { z } from "zod";
import { _AvailabilityModel as Availability, _ScheduleModel as Schedule } from "@calcom/prisma/zod";
import { denullishShape } from "@calcom/prisma/zod-utils";
export const schemaAvailabilityBaseBodyParams = /** We make all these properties required */ denullishShape(
Availability.pick({
/** We need to pass the schedule where this availability belongs to */
scheduleId: true,
})
);
export const schemaAvailabilityReadPublic = Availability.pick({
id: true,
startTime: true,
endTime: true,
date: true,
scheduleId: true,
days: true,
// eventTypeId: true /** @deprecated */,
// userId: true /** @deprecated */,
}).merge(z.object({ success: z.boolean().optional(), Schedule: Schedule.partial() }).partial());
const schemaAvailabilityCreateParams = z
.object({
startTime: z.date().or(z.string()),
endTime: z.date().or(z.string()),
days: z.array(z.number()).optional(),
})
.strict();
const schemaAvailabilityEditParams = z
.object({
startTime: z.date().or(z.string()).optional(),
endTime: z.date().or(z.string()).optional(),
days: z.array(z.number()).optional(),
})
.strict();
export const schemaAvailabilityEditBodyParams = schemaAvailabilityEditParams;
export const schemaAvailabilityCreateBodyParams = schemaAvailabilityBaseBodyParams.merge(
schemaAvailabilityCreateParams
);
export const schemaAvailabilityReadBodyParams = z
.object({
userId: z.union([z.number(), z.array(z.number())]),
})
.partial();
export const schemaSingleAvailabilityReadBodyParams = z.object({
userId: z.number(),
});
@@ -0,0 +1,28 @@
import { _BookingReferenceModel as BookingReference } from "@calcom/prisma/zod";
import { denullishShape } from "@calcom/prisma/zod-utils";
export const schemaBookingReferenceBaseBodyParams = BookingReference.pick({
type: true,
bookingId: true,
uid: true,
meetingId: true,
meetingPassword: true,
meetingUrl: true,
deleted: true,
}).partial();
export const schemaBookingReferenceReadPublic = BookingReference.pick({
id: true,
type: true,
bookingId: true,
uid: true,
meetingId: true,
meetingPassword: true,
meetingUrl: true,
deleted: true,
});
export const schemaBookingCreateBodyParams = BookingReference.omit({ id: true, bookingId: true })
.merge(denullishShape(BookingReference.pick({ bookingId: true })))
.strict();
export const schemaBookingEditBodyParams = schemaBookingCreateBodyParams.partial();
+67
View File
@@ -0,0 +1,67 @@
import { z } from "zod";
import { _BookingModel as Booking, _AttendeeModel, _UserModel } from "@calcom/prisma/zod";
import { extendedBookingCreateBody, iso8601 } from "@calcom/prisma/zod-utils";
import { schemaQueryUserId } from "./shared/queryUserId";
const schemaBookingBaseBodyParams = Booking.pick({
uid: true,
userId: true,
eventTypeId: true,
title: true,
description: true,
startTime: true,
endTime: true,
status: true,
}).partial();
export const schemaBookingCreateBodyParams = extendedBookingCreateBody.merge(schemaQueryUserId.partial());
const schemaBookingEditParams = z
.object({
title: z.string().optional(),
startTime: iso8601.optional(),
endTime: iso8601.optional(),
// Not supporting responses in edit as that might require re-triggering emails
// responses
})
.strict();
export const schemaBookingEditBodyParams = schemaBookingBaseBodyParams.merge(schemaBookingEditParams);
export const schemaBookingReadPublic = Booking.extend({
attendees: z
.array(
_AttendeeModel.pick({
email: true,
name: true,
timeZone: true,
locale: true,
})
)
.optional(),
user: _UserModel
.pick({
email: true,
name: true,
timeZone: true,
locale: true,
})
.optional(),
}).pick({
id: true,
userId: true,
description: true,
eventTypeId: true,
uid: true,
title: true,
startTime: true,
endTime: true,
timeZone: true,
attendees: true,
user: true,
metadata: true,
status: true,
responses: true,
});
@@ -0,0 +1,48 @@
import { z } from "zod";
import { _DestinationCalendarModel as DestinationCalendar } from "@calcom/prisma/zod";
export const schemaDestinationCalendarBaseBodyParams = DestinationCalendar.pick({
integration: true,
externalId: true,
eventTypeId: true,
bookingId: true,
userId: true,
}).partial();
const schemaDestinationCalendarCreateParams = z
.object({
integration: z.string(),
externalId: z.string(),
eventTypeId: z.number(),
bookingId: z.number(),
userId: z.number(),
})
.strict();
export const schemaDestinationCalendarCreateBodyParams = schemaDestinationCalendarBaseBodyParams.merge(
schemaDestinationCalendarCreateParams
);
const schemaDestinationCalendarEditParams = z
.object({
integration: z.string().optional(),
externalId: z.string().optional(),
eventTypeId: z.number().optional(),
bookingId: z.number().optional(),
userId: z.number().optional(),
})
.strict();
export const schemaDestinationCalendarEditBodyParams = schemaDestinationCalendarBaseBodyParams.merge(
schemaDestinationCalendarEditParams
);
export const schemaDestinationCalendarReadPublic = DestinationCalendar.pick({
id: true,
integration: true,
externalId: true,
eventTypeId: true,
bookingId: true,
userId: true,
});
@@ -0,0 +1,13 @@
import { _EventTypeCustomInputModel as EventTypeCustomInput } from "@calcom/prisma/zod";
export const schemaEventTypeCustomInputBaseBodyParams = EventTypeCustomInput.omit({
id: true,
});
export const schemaEventTypeCustomInputPublic = EventTypeCustomInput.omit({});
export const schemaEventTypeCustomInputBodyParams = schemaEventTypeCustomInputBaseBodyParams.strict();
export const schemaEventTypeCustomInputEditBodyParams = schemaEventTypeCustomInputBaseBodyParams
.partial()
.strict();
+139
View File
@@ -0,0 +1,139 @@
import { z } from "zod";
import { _EventTypeModel as EventType, _HostModel } from "@calcom/prisma/zod";
import { customInputSchema, eventTypeBookingFields } from "@calcom/prisma/zod-utils";
import { Frequency } from "~/lib/types";
import { jsonSchema } from "./shared/jsonSchema";
import { schemaQueryUserId } from "./shared/queryUserId";
import { timeZone } from "./shared/timeZone";
const recurringEventInputSchema = z.object({
dtstart: z.string().optional(),
interval: z.number().int().optional(),
count: z.number().int().optional(),
freq: z.nativeEnum(Frequency).optional(),
until: z.string().optional(),
tzid: timeZone.optional(),
});
const hostSchema = _HostModel.pick({
isFixed: true,
userId: true,
});
export const schemaEventTypeBaseBodyParams = EventType.pick({
title: true,
description: true,
slug: true,
length: true,
hidden: true,
position: true,
eventName: true,
timeZone: true,
periodType: true,
periodStartDate: true,
schedulingType: true,
periodEndDate: true,
periodDays: true,
periodCountCalendarDays: true,
requiresConfirmation: true,
disableGuests: true,
hideCalendarNotes: true,
minimumBookingNotice: true,
beforeEventBuffer: true,
afterEventBuffer: true,
teamId: true,
price: true,
currency: true,
slotInterval: true,
successRedirectUrl: true,
locations: true,
})
.merge(z.object({ hosts: z.array(hostSchema).optional().default([]) }))
.partial()
.strict();
const schemaEventTypeCreateParams = z
.object({
title: z.string(),
slug: z.string(),
description: z.string().optional().nullable(),
length: z.number().int(),
metadata: z.any().optional(),
recurringEvent: recurringEventInputSchema.optional(),
seatsPerTimeSlot: z.number().optional(),
seatsShowAttendees: z.boolean().optional(),
bookingFields: eventTypeBookingFields.optional(),
})
.strict();
export const schemaEventTypeCreateBodyParams = schemaEventTypeBaseBodyParams
.merge(schemaEventTypeCreateParams)
.merge(schemaQueryUserId.partial());
const schemaEventTypeEditParams = z
.object({
title: z.string().optional(),
slug: z.string().optional(),
length: z.number().int().optional(),
seatsPerTimeSlot: z.number().optional(),
seatsShowAttendees: z.boolean().optional(),
bookingFields: eventTypeBookingFields.optional(),
})
.strict();
export const schemaEventTypeEditBodyParams = schemaEventTypeBaseBodyParams.merge(schemaEventTypeEditParams);
export const schemaEventTypeReadPublic = EventType.pick({
id: true,
title: true,
slug: true,
length: true,
hidden: true,
position: true,
userId: true,
teamId: true,
eventName: true,
timeZone: true,
periodType: true,
periodStartDate: true,
periodEndDate: true,
periodDays: true,
periodCountCalendarDays: true,
requiresConfirmation: true,
recurringEvent: true,
disableGuests: true,
hideCalendarNotes: true,
minimumBookingNotice: true,
beforeEventBuffer: true,
afterEventBuffer: true,
schedulingType: true,
price: true,
currency: true,
slotInterval: true,
successRedirectUrl: true,
description: true,
locations: true,
metadata: true,
seatsPerTimeSlot: true,
seatsShowAttendees: true,
bookingFields: true,
}).merge(
z.object({
locations: z
.array(
z.object({
link: z.string().optional(),
address: z.string().optional(),
hostPhoneNumber: z.string().optional(),
type: z.any().optional(),
})
)
.nullable(),
metadata: jsonSchema.nullable(),
customInputs: customInputSchema.array().optional(),
link: z.string().optional(),
bookingFields: eventTypeBookingFields.optional().nullable(),
})
);
+65
View File
@@ -0,0 +1,65 @@
import { z } from "zod";
import { MembershipRole } from "@calcom/prisma/enums";
import { _MembershipModel as Membership, _TeamModel } from "@calcom/prisma/zod";
import { stringOrNumber } from "@calcom/prisma/zod-utils";
import { schemaQueryIdAsString } from "~/lib/validations/shared/queryIdString";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
export const schemaMembershipBaseBodyParams = Membership.omit({});
const schemaMembershipRequiredParams = z.object({
teamId: z.number(),
});
export const membershipCreateBodySchema = Membership.partial({
accepted: true,
role: true,
disableImpersonation: true,
}).transform((v) => ({
accepted: false,
role: MembershipRole.MEMBER,
disableImpersonation: false,
...v,
}));
export const membershipEditBodySchema = Membership.omit({
/** To avoid complication, let's avoid updating these, instead you can delete and create a new invite */
teamId: true,
userId: true,
})
.partial({
accepted: true,
role: true,
disableImpersonation: true,
})
.strict();
export const schemaMembershipBodyParams = schemaMembershipBaseBodyParams.merge(
schemaMembershipRequiredParams
);
export const schemaMembershipPublic = Membership.merge(z.object({ team: _TeamModel }).partial());
/** We extract userId and teamId from compound ID string */
export const membershipIdSchema = schemaQueryIdAsString
// So we can query additional team data in memberships
.merge(z.object({ teamId: z.union([stringOrNumber, z.array(stringOrNumber)]) }).partial())
.transform((v, ctx) => {
const [userIdStr, teamIdStr] = v.id.split("_");
const userIdInt = schemaQueryIdParseInt.safeParse({ id: userIdStr });
const teamIdInt = schemaQueryIdParseInt.safeParse({ id: teamIdStr });
if (!userIdInt.success) {
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "userId is not a number" });
return z.NEVER;
}
if (!teamIdInt.success) {
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "teamId is not a number " });
return z.NEVER;
}
return {
userId: userIdInt.data.id,
teamId: teamIdInt.data.id,
};
});
+5
View File
@@ -0,0 +1,5 @@
import { _PaymentModel as Payment } from "@calcom/prisma/zod";
// FIXME: Payment seems a delicate endpoint, do we need to remove anything here?
export const schemaPaymentBodyParams = Payment.omit({ id: true });
export const schemaPaymentPublic = Payment.omit({ externalId: true });
+17
View File
@@ -0,0 +1,17 @@
import { z } from "zod";
import { _ReminderMailModel as ReminderMail } from "@calcom/prisma/zod";
export const schemaReminderMailBaseBodyParams = ReminderMail.omit({ id: true }).partial();
export const schemaReminderMailPublic = ReminderMail.omit({});
const schemaReminderMailRequiredParams = z.object({
referenceId: z.number().int(),
reminderType: z.enum(["PENDING_BOOKING_CONFIRMATION"]),
elapsedMinutes: z.number().int(),
});
export const schemaReminderMailBodyParams = schemaReminderMailBaseBodyParams.merge(
schemaReminderMailRequiredParams
);
+34
View File
@@ -0,0 +1,34 @@
import { z } from "zod";
import dayjs from "@calcom/dayjs";
import { _ScheduleModel as Schedule, _AvailabilityModel as Availability } from "@calcom/prisma/zod";
import { timeZone } from "./shared/timeZone";
const schemaScheduleBaseBodyParams = Schedule.omit({ id: true, timeZone: true }).partial();
export const schemaSingleScheduleBodyParams = schemaScheduleBaseBodyParams.merge(
z.object({ userId: z.number().optional(), timeZone: timeZone.optional() })
);
export const schemaCreateScheduleBodyParams = schemaScheduleBaseBodyParams.merge(
z.object({ userId: z.number().optional(), name: z.string(), timeZone })
);
export const schemaSchedulePublic = z
.object({ id: z.number() })
.merge(Schedule)
.merge(
z.object({
availability: z
.array(Availability.pick({ id: true, eventTypeId: true, days: true, startTime: true, endTime: true }))
.transform((v) =>
v.map((item) => ({
...item,
startTime: dayjs.utc(item.startTime).format("HH:mm:ss"),
endTime: dayjs.utc(item.endTime).format("HH:mm:ss"),
}))
)
.optional(),
})
);
@@ -0,0 +1,48 @@
import z from "zod";
import { _SelectedCalendarModel as SelectedCalendar } from "@calcom/prisma/zod";
import { schemaQueryIdAsString } from "./shared/queryIdString";
import { schemaQueryIdParseInt } from "./shared/queryIdTransformParseInt";
export const schemaSelectedCalendarBaseBodyParams = SelectedCalendar;
export const schemaSelectedCalendarPublic = SelectedCalendar.omit({});
export const schemaSelectedCalendarBodyParams = schemaSelectedCalendarBaseBodyParams.partial({
userId: true,
});
export const schemaSelectedCalendarUpdateBodyParams = schemaSelectedCalendarBaseBodyParams.partial();
export const selectedCalendarIdSchema = schemaQueryIdAsString.transform((v, ctx) => {
/** We can assume the first part is the userId since it's an integer */
const [userIdStr, ...rest] = v.id.split("_");
/** We can assume that the remainder is both the integration type and external id combined */
const integration_externalId = rest.join("_");
/**
* Since we only handle calendars here we can split by `_calendar_` and re add it later on.
* This handle special cases like `google_calendar_c_blabla@group.calendar.google.com` and
* `hubspot_other_calendar`.
**/
const [_integration, externalId] = integration_externalId.split("_calendar_");
const userIdInt = schemaQueryIdParseInt.safeParse({ id: userIdStr });
if (!userIdInt.success) {
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "userId is not a number" });
return z.NEVER;
}
if (!_integration) {
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "Missing integration" });
return z.NEVER;
}
if (!externalId) {
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "Missing externalId" });
return z.NEVER;
}
return {
userId: userIdInt.data.id,
/** We re-add the split `_calendar` string */
integration: `${_integration}_calendar`,
externalId,
};
});
@@ -0,0 +1,11 @@
import { z } from "zod";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
export const baseApiParams = z.object({
// since we added apiKey as query param this is required by next-validations helper
// for query params to work properly and not fail.
apiKey: z.string().optional(),
// version required for supporting /v1/ redirect to query in api as *?version=1
version: z.string().optional(),
});
@@ -0,0 +1,9 @@
import { z } from "zod";
// Helper schema for JSON fields
type Literal = boolean | number | string;
type Json = Literal | { [key: string]: Json } | Json[];
const literalSchema = z.union([z.string(), z.number(), z.boolean()]);
export const jsonSchema: z.ZodSchema<Json> = z.lazy(() =>
z.union([literalSchema, z.array(jsonSchema), z.record(jsonSchema)])
);
@@ -0,0 +1,19 @@
import { withValidation } from "next-validations";
import { z } from "zod";
import { baseApiParams } from "./baseApiParams";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
/** Used for UUID style id queries */
export const schemaQueryIdAsString = baseApiParams
.extend({
id: z.string(),
})
.strict();
export const withValidQueryIdString = withValidation({
schema: schemaQueryIdAsString,
type: "Zod",
mode: "query",
});
@@ -0,0 +1,16 @@
import { withValidation } from "next-validations";
import { z } from "zod";
import { baseApiParams } from "./baseApiParams";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
export const schemaQueryIdParseInt = baseApiParams.extend({
id: z.coerce.number(),
});
export const withValidQueryIdTransformParseInt = withValidation({
schema: schemaQueryIdParseInt,
type: "Zod",
mode: "query",
});
@@ -0,0 +1,21 @@
import { withValidation } from "next-validations";
import { z } from "zod";
import { baseApiParams } from "./baseApiParams";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
export const schemaQueryTeamId = baseApiParams
.extend({
teamId: z
.string()
.regex(/^\d+$/)
.transform((id) => parseInt(id)),
})
.strict();
export const withValidQueryTeamId = withValidation({
schema: schemaQueryTeamId,
type: "Zod",
mode: "query",
});
@@ -0,0 +1,26 @@
import { withValidation } from "next-validations";
import { z } from "zod";
import { stringOrNumber } from "@calcom/prisma/zod-utils";
import { baseApiParams } from "./baseApiParams";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
export const schemaQueryUserId = baseApiParams.extend({
userId: stringOrNumber,
});
export const schemaQuerySingleOrMultipleUserIds = z.object({
userId: z.union([stringOrNumber, z.array(stringOrNumber)]),
});
export const schemaQuerySingleOrMultipleTeamIds = z.object({
teamId: z.union([stringOrNumber, z.array(stringOrNumber)]),
});
export const withValidQueryUserId = withValidation({
schema: schemaQueryUserId,
type: "Zod",
mode: "query",
});
@@ -0,0 +1,7 @@
import tzdata from "tzdata";
import * as z from "zod";
// @note: This is a custom validation that checks if the timezone is valid and exists in the tzdb library
export const timeZone = z.string().refine((tz: string) => Object.keys(tzdata.zones).includes(tz), {
message: `Expected one of the following: ${Object.keys(tzdata.zones).join(", ")}`,
});
+18
View File
@@ -0,0 +1,18 @@
import { z } from "zod";
import { _TeamModel as Team } from "@calcom/prisma/zod";
export const schemaTeamBaseBodyParams = Team.omit({ id: true, createdAt: true }).partial({
hideBranding: true,
metadata: true,
});
const schemaTeamRequiredParams = z.object({});
export const schemaTeamBodyParams = schemaTeamBaseBodyParams.merge(schemaTeamRequiredParams).strict();
export const schemaTeamUpdateBodyParams = schemaTeamBodyParams.partial();
export const schemaTeamReadPublic = Team.omit({});
export const schemaTeamsReadPublic = z.array(schemaTeamReadPublic);
+170
View File
@@ -0,0 +1,170 @@
import { z } from "zod";
import { checkUsername } from "@calcom/lib/server/checkUsername";
import { _UserModel as User } from "@calcom/prisma/zod";
import { iso8601 } from "@calcom/prisma/zod-utils";
import { timeZone } from "~/lib/validations/shared/timeZone";
// @note: These are the ONLY values allowed as weekStart. So user don't introduce bad data.
enum weekdays {
MONDAY = "Monday",
TUESDAY = "Tuesday",
WEDNESDAY = "Wednesday",
THURSDAY = "Thursday",
FRIDAY = "Friday",
SATURDAY = "Saturday",
SUNDAY = "Sunday",
}
// @note: extracted from apps/web/next-i18next.config.js, update if new locales.
enum locales {
EN = "en",
FR = "fr",
IT = "it",
RU = "ru",
ES = "es",
DE = "de",
PT = "pt",
RO = "ro",
NL = "nl",
PT_BR = "pt-BR",
ES_419 = "es-419",
KO = "ko",
JA = "ja",
PL = "pl",
AR = "ar",
IW = "iw",
ZH_CN = "zh-CN",
ZH_TW = "zh-TW",
CS = "cs",
SR = "sr",
SV = "sv",
VI = "vi",
}
enum theme {
DARK = "dark",
LIGHT = "light",
}
enum timeFormat {
TWELVE = 12,
TWENTY_FOUR = 24,
}
const usernameSchema = z
.string()
.transform((v) => v.toLowerCase())
// .refine(() => {})
.superRefine(async (val, ctx) => {
if (val) {
const result = await checkUsername(val);
if (!result.available) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "already_in_use_error" });
if (result.premium) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "premium_username" });
}
});
// @note: These are the values that are editable via PATCH method on the user Model
export const schemaUserBaseBodyParams = User.pick({
name: true,
email: true,
username: true,
bio: true,
timeZone: true,
weekStart: true,
theme: true,
defaultScheduleId: true,
locale: true,
timeFormat: true,
brandColor: true,
darkBrandColor: true,
allowDynamicBooking: true,
away: true,
role: true,
// @note: disallowing avatar changes via API for now. We can add it later if needed. User should upload image via UI.
// avatar: true,
}).partial();
// @note: partial() is used to allow for the user to edit only the fields they want to edit making all optional,
// if want to make any required do it in the schemaRequiredParams
// Here we can both require or not (adding optional or nullish) and also rewrite validations for any value
// for example making weekStart only accept weekdays as input
const schemaUserEditParams = z.object({
email: z.string().email(),
username: usernameSchema,
weekStart: z.nativeEnum(weekdays).optional(),
brandColor: z.string().min(4).max(9).regex(/^#/).optional(),
darkBrandColor: z.string().min(4).max(9).regex(/^#/).optional(),
timeZone: timeZone.optional(),
theme: z.nativeEnum(theme).optional().nullable(),
timeFormat: z.nativeEnum(timeFormat).optional(),
defaultScheduleId: z
.number()
.refine((id: number) => id > 0)
.optional()
.nullable(),
locale: z.nativeEnum(locales).optional().nullable(),
});
// @note: These are the values that are editable via PATCH method on the user Model,
// merging both BaseBodyParams with RequiredParams, and omiting whatever we want at the end.
const schemaUserCreateParams = z.object({
email: z.string().email(),
username: usernameSchema,
weekStart: z.nativeEnum(weekdays).optional(),
brandColor: z.string().min(4).max(9).regex(/^#/).optional(),
darkBrandColor: z.string().min(4).max(9).regex(/^#/).optional(),
timeZone: timeZone.optional(),
theme: z.nativeEnum(theme).optional().nullable(),
timeFormat: z.nativeEnum(timeFormat).optional(),
defaultScheduleId: z
.number()
.refine((id: number) => id > 0)
.optional()
.nullable(),
locale: z.nativeEnum(locales).optional(),
createdDate: iso8601.optional(),
});
// @note: These are the values that are editable via PATCH method on the user Model,
// merging both BaseBodyParams with RequiredParams, and omiting whatever we want at the end.
export const schemaUserEditBodyParams = schemaUserBaseBodyParams
.merge(schemaUserEditParams)
.omit({})
.partial()
.strict();
export const schemaUserCreateBodyParams = schemaUserBaseBodyParams
.merge(schemaUserCreateParams)
.omit({})
.strict();
// @note: These are the values that are always returned when reading a user
export const schemaUserReadPublic = User.pick({
id: true,
username: true,
name: true,
email: true,
emailVerified: true,
bio: true,
avatar: true,
timeZone: true,
weekStart: true,
endTime: true,
bufferTime: true,
theme: true,
defaultScheduleId: true,
locale: true,
timeFormat: true,
brandColor: true,
darkBrandColor: true,
allowDynamicBooking: true,
away: true,
createdDate: true,
verified: true,
invitedTo: true,
role: true,
});
export const schemaUsersReadPublic = z.array(schemaUserReadPublic);
+55
View File
@@ -0,0 +1,55 @@
import { z } from "zod";
import { WEBHOOK_TRIGGER_EVENTS } from "@calcom/features/webhooks/lib/constants";
import { _WebhookModel as Webhook } from "@calcom/prisma/zod";
const schemaWebhookBaseBodyParams = Webhook.pick({
userId: true,
eventTypeId: true,
eventTriggers: true,
active: true,
subscriberUrl: true,
payloadTemplate: true,
});
export const schemaWebhookCreateParams = z
.object({
// subscriberUrl: z.string().url(),
// eventTriggers: z.enum(WEBHOOK_TRIGGER_EVENTS).array(),
// active: z.boolean(),
payloadTemplate: z.string().optional().nullable(),
eventTypeId: z.number().optional(),
userId: z.number().optional(),
// API shouldn't mess with Apps webhooks yet (ie. Zapier)
// appId: z.string().optional().nullable(),
})
.strict();
export const schemaWebhookCreateBodyParams = schemaWebhookBaseBodyParams.merge(schemaWebhookCreateParams);
export const schemaWebhookEditBodyParams = schemaWebhookBaseBodyParams
.merge(
z.object({
eventTriggers: z.enum(WEBHOOK_TRIGGER_EVENTS).array().optional(),
})
)
.partial()
.strict();
export const schemaWebhookReadPublic = Webhook.pick({
id: true,
userId: true,
eventTypeId: true,
payloadTemplate: true,
eventTriggers: true,
// FIXME: We have some invalid urls saved in the DB
// subscriberUrl: true,
/** @todo: find out how to properly add back and validate those. */
// eventType: true,
// app: true,
appId: true,
}).merge(
z.object({
subscriberUrl: z.string(),
})
);
+10
View File
@@ -0,0 +1,10 @@
const path = require("path");
const i18nConfig = require("@calcom/config/next-i18next.config");
/** @type {import("next-i18next").UserConfig} */
const config = {
...i18nConfig,
localePath: path.resolve("../web/public/static/locales"),
};
module.exports = config;
+69
View File
@@ -0,0 +1,69 @@
const { withAxiom } = require("next-axiom");
module.exports = withAxiom({
transpilePackages: [
"@calcom/app-store",
"@calcom/core",
"@calcom/dayjs",
"@calcom/emails",
"@calcom/features",
"@calcom/lib",
"@calcom/prisma",
"@calcom/trpc",
],
async headers() {
return [
{
source: "/docs",
headers: [
{
key: "Access-Control-Allow-Credentials",
value: "true",
},
{
key: "Access-Control-Allow-Origin",
value: "*",
},
{
key: "Access-Control-Allow-Methods",
value: "GET, OPTIONS, PATCH, DELETE, POST, PUT",
},
{
key: "Access-Control-Allow-Headers",
value:
"X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, Content-Type, api_key, Authorization",
},
],
},
];
},
async rewrites() {
return {
afterFiles: [
// This redirects requests recieved at / the root to the /api/ folder.
{
source: "/v:version/:rest*",
destination: "/api/v:version/:rest*",
},
// This redirects requests to api/v*/ to /api/ passing version as a query parameter.
{
source: "/api/v:version/:rest*",
destination: "/api/:rest*?version=:version",
},
// Keeps backwards compatibility with old webhook URLs
{
source: "/api/hooks/:rest*",
destination: "/api/webhooks/:rest*",
},
],
fallback: [
// These rewrites are checked after both pages/public files
// and dynamic routes are checked
{
source: "/:path*",
destination: `/api/:path*`,
},
],
};
},
});
+21
View File
@@ -0,0 +1,21 @@
import type { Session } from "next-auth";
import type { NextApiRequest as BaseNextApiRequest } from "next/types";
import type { PrismaClient } from "@calcom/prisma/client";
export type * from "next/types";
export declare module "next" {
interface NextApiRequest extends BaseNextApiRequest {
session?: Session | null;
userId: number;
method: string;
prisma: PrismaClient;
// session: { user: { id: number } };
// query: Partial<{ [key: string]: string | string[] }>;
isAdmin: boolean;
isCustomPrisma: boolean;
pagination: { take: number; skip: number };
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"name": "@calcom/api",
"version": "1.0.0",
"description": "Public API for Cal.com",
"main": "index.ts",
"repository": "git@github.com:calcom/api.git",
"author": "Cal.com Inc.",
"private": true,
"scripts": {
"build": "next build",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next",
"dev": "PORT=3002 next dev",
"lint": "eslint . --ignore-path .gitignore",
"lint:report": "eslint . --format json --output-file ../../lint-results/api.json",
"lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix",
"start": "PORT=3002 next start",
"test": "echo 'No tests yet' && exit 1",
"type-check": "tsc --pretty --noEmit"
},
"devDependencies": {
"@calcom/tsconfig": "*",
"@calcom/types": "*",
"node-mocks-http": "^1.11.0"
},
"dependencies": {
"@calcom/app-store": "*",
"@calcom/core": "*",
"@calcom/dayjs": "*",
"@calcom/emails": "*",
"@calcom/features": "*",
"@calcom/lib": "*",
"@calcom/prisma": "*",
"@calcom/trpc": "*",
"@sentry/nextjs": "^7.20.0",
"bcryptjs": "^2.4.3",
"memory-cache": "^0.2.0",
"next": "~13.2.1",
"next-api-middleware": "^1.0.1",
"next-axiom": "^0.16.0",
"next-swagger-doc": "^0.3.6",
"next-validations": "^0.2.0",
"typescript": "^4.9.4",
"tzdata": "^1.0.30",
"uuid": "^8.3.2",
"zod": "^3.20.2"
}
}
@@ -0,0 +1,17 @@
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { schemaQueryIdAsString } from "~/lib/validations/shared/queryIdString";
export async function authMiddleware(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const { id } = schemaQueryIdAsString.parse(req.query);
// Admin can check any api key
if (isAdmin) return;
// Check if user can access the api key
const apiKey = await prisma.apiKey.findFirst({
where: { id, userId },
});
if (!apiKey) throw new HttpError({ statusCode: 404, message: "API key not found" });
}
@@ -0,0 +1,14 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaQueryIdAsString } from "~/lib/validations/shared/queryIdString";
async function deleteHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdAsString.parse(query);
await prisma.apiKey.delete({ where: { id } });
return { message: `ApiKey with id: ${id} deleted` };
}
export default defaultResponder(deleteHandler);
+15
View File
@@ -0,0 +1,15 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { apiKeyPublicSchema } from "~/lib/validations/api-key";
import { schemaQueryIdAsString } from "~/lib/validations/shared/queryIdString";
async function getHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdAsString.parse(query);
const api_key = await prisma.apiKey.findUniqueOrThrow({ where: { id } });
return { api_key: apiKeyPublicSchema.parse(api_key) };
}
export default defaultResponder(getHandler);
@@ -0,0 +1,16 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { apiKeyEditBodySchema, apiKeyPublicSchema } from "~/lib/validations/api-key";
import { schemaQueryIdAsString } from "~/lib/validations/shared/queryIdString";
async function patchHandler(req: NextApiRequest) {
const { prisma, body } = req;
const { id } = schemaQueryIdAsString.parse(req.query);
const data = apiKeyEditBodySchema.parse(body);
const api_key = await prisma.apiKey.update({ where: { id }, data });
return { api_key: apiKeyPublicSchema.parse(api_key) };
}
export default defaultResponder(patchHandler);
+18
View File
@@ -0,0 +1,18 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
import { authMiddleware } from "./_auth-middleware";
export default withMiddleware()(
defaultResponder(async (req: NextApiRequest, res: NextApiResponse) => {
await authMiddleware(req);
return defaultHandler({
GET: import("./_get"),
PATCH: import("./_patch"),
DELETE: import("./_delete"),
})(req, res);
})
);
+40
View File
@@ -0,0 +1,40 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import type { Ensure } from "@calcom/types/utils";
import { apiKeyPublicSchema } from "~/lib/validations/api-key";
import { schemaQuerySingleOrMultipleUserIds } from "~/lib/validations/shared/queryUserId";
type CustomNextApiRequest = NextApiRequest & {
args?: Prisma.ApiKeyFindManyArgs;
};
/** Admins can query other users' API keys */
function handleAdminRequests(req: CustomNextApiRequest) {
// To match type safety with runtime
if (!hasReqArgs(req)) throw Error("Missing req.args");
const { userId, isAdmin } = req;
if (isAdmin && req.query.userId) {
const query = schemaQuerySingleOrMultipleUserIds.parse(req.query);
const userIds = Array.isArray(query.userId) ? query.userId : [query.userId || userId];
req.args.where = { userId: { in: userIds } };
if (Array.isArray(query.userId)) req.args.orderBy = { userId: "asc" };
}
}
function hasReqArgs(req: CustomNextApiRequest): req is Ensure<CustomNextApiRequest, "args"> {
return "args" in req;
}
async function getHandler(req: CustomNextApiRequest) {
const { userId, isAdmin, prisma } = req;
req.args = isAdmin ? {} : { where: { userId } };
// Proof of concept: allowing mutation in exchange of composability
handleAdminRequests(req);
const data = await prisma.apiKey.findMany(req.args);
return { api_keys: data.map((v) => apiKeyPublicSchema.parse(v)) };
}
export default defaultResponder(getHandler);
+44
View File
@@ -0,0 +1,44 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { v4 } from "uuid";
import { generateUniqueAPIKey } from "@calcom/features/ee/api-keys/lib/apiKeys";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import { apiKeyCreateBodySchema, apiKeyPublicSchema } from "~/lib/validations/api-key";
async function postHandler(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const { neverExpires, userId: bodyUserId, ...input } = apiKeyCreateBodySchema.parse(req.body);
const [hashedKey, apiKey] = generateUniqueAPIKey();
const args: Prisma.ApiKeyCreateArgs = {
data: {
id: v4(),
userId,
...input,
// And here we pass a null to expiresAt if never expires is true. otherwise just pass expiresAt from input
expiresAt: neverExpires ? null : input.expiresAt,
hashedKey,
},
};
if (!isAdmin && bodyUserId) throw new HttpError({ statusCode: 403, message: `ADMIN required for userId` });
if (isAdmin && bodyUserId) {
const where: Prisma.UserWhereInput = { id: bodyUserId };
await prisma.user.findFirstOrThrow({ where });
args.data.userId = bodyUserId;
}
const result = await prisma.apiKey.create(args);
return {
api_key: {
...apiKeyPublicSchema.parse(result),
key: `${process.env.API_KEY_PREFIX ?? "cal_"}${apiKey}`,
},
message: "API key created successfully. Save the `key` value as it won't be displayed again.",
};
}
export default defaultResponder(postHandler);
+10
View File
@@ -0,0 +1,10 @@
import { defaultHandler } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
export default withMiddleware("HTTP_GET_OR_POST")(
defaultHandler({
GET: import("./_get"),
POST: import("./_post"),
})
);
@@ -0,0 +1,20 @@
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
async function authMiddleware(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const query = schemaQueryIdParseInt.parse(req.query);
// @note: Here we make sure to only return attendee's of the user's own bookings if the user is not an admin.
if (isAdmin) return;
// Find all user bookings, including attendees
const attendee = await prisma.attendee.findFirst({
where: { id: query.id, booking: { userId } },
});
// Flatten and merge all the attendees in one array
if (!attendee) throw new HttpError({ statusCode: 403, message: "Forbidden" });
}
export default authMiddleware;
@@ -0,0 +1,43 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /attendees/{id}:
* delete:
* operationId: removeAttendeeById
* summary: Remove an existing attendee
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the attendee to delete
* tags:
* - attendees
* responses:
* 201:
* description: OK, attendee removed successfully
* 400:
* description: Bad request. Attendee id is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function deleteHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
await prisma.attendee.delete({ where: { id } });
return { message: `Attendee with id: ${id} deleted successfully` };
}
export default defaultResponder(deleteHandler);
+44
View File
@@ -0,0 +1,44 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaAttendeeReadPublic } from "~/lib/validations/attendee";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /attendees/{id}:
* get:
* operationId: getAttendeeById
* summary: Find an attendee
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the attendee to get
* tags:
* - attendees
* responses:
* 200:
* description: OK
* 401:
* description: Authorization information is missing or invalid.
* 404:
* description: Attendee was not found
*/
export async function getHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const attendee = await prisma.attendee.findUnique({ where: { id } });
return { attendee: schemaAttendeeReadPublic.parse(attendee) };
}
export default defaultResponder(getHandler);
@@ -0,0 +1,76 @@
import type { NextApiRequest } from "next";
import type { z } from "zod";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import { schemaAttendeeEditBodyParams, schemaAttendeeReadPublic } from "~/lib/validations/attendee";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /attendees/{id}:
* patch:
* operationId: editAttendeeById
* summary: Edit an existing attendee
* requestBody:
* description: Edit an existing attendee related to one of your bookings
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* email:
* type: string
* format: email
* name:
* type: string
* timeZone:
* type: string
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the attendee to get
* tags:
* - attendees
* responses:
* 201:
* description: OK, attendee edited successfully
* 400:
* description: Bad request. Attendee body is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function patchHandler(req: NextApiRequest) {
const { prisma, query, body } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const data = schemaAttendeeEditBodyParams.parse(body);
await checkPermissions(req, data);
const attendee = await prisma.attendee.update({ where: { id }, data });
return { attendee: schemaAttendeeReadPublic.parse(attendee) };
}
async function checkPermissions(req: NextApiRequest, body: z.infer<typeof schemaAttendeeEditBodyParams>) {
const { isAdmin, prisma } = req;
if (isAdmin) return;
const { userId } = req;
const { bookingId } = body;
if (bookingId) {
// Ensure that the booking the attendee is being added to belongs to the user
const booking = await prisma.booking.findFirst({ where: { id: bookingId, userId } });
if (!booking) throw new HttpError({ statusCode: 403, message: "You don't have access to the booking" });
}
}
export default defaultResponder(patchHandler);
@@ -0,0 +1,18 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
import authMiddleware from "./_auth-middleware";
export default withMiddleware()(
defaultResponder(async (req: NextApiRequest, res: NextApiResponse) => {
await authMiddleware(req);
return defaultHandler({
GET: import("./_get"),
PATCH: import("./_patch"),
DELETE: import("./_delete"),
})(req, res);
})
);
+41
View File
@@ -0,0 +1,41 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import { schemaAttendeeReadPublic } from "~/lib/validations/attendee";
/**
* @swagger
* /attendees:
* get:
* operationId: listAttendees
* summary: Find all attendees
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* tags:
* - attendees
* responses:
* 200:
* description: OK
* 401:
* description: Authorization information is missing or invalid.
* 404:
* description: No attendees were found
*/
async function handler(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const args: Prisma.AttendeeFindManyArgs = isAdmin ? {} : { where: { booking: { userId } } };
const data = await prisma.attendee.findMany(args);
const attendees = data.map((attendee) => schemaAttendeeReadPublic.parse(attendee));
if (!attendees) throw new HttpError({ statusCode: 404, message: "No attendees were found" });
return { attendees };
}
export default defaultResponder(handler);
+81
View File
@@ -0,0 +1,81 @@
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import { schemaAttendeeCreateBodyParams, schemaAttendeeReadPublic } from "~/lib/validations/attendee";
/**
* @swagger
* /attendees:
* post:
* operationId: addAttendee
* summary: Creates a new attendee
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* requestBody:
* description: Create a new attendee related to one of your bookings
* required: true
* content:
* application/json:
* schema:
* type: object
* required:
* - bookingId
* - name
* - email
* - timeZone
* properties:
* bookingId:
* type: number
* email:
* type: string
* format: email
* name:
* type: string
* timeZone:
* type: string
* tags:
* - attendees
* responses:
* 201:
* description: OK, attendee created
* 400:
* description: Bad request. Attendee body is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
async function postHandler(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const body = schemaAttendeeCreateBodyParams.parse(req.body);
if (!isAdmin) {
const userBooking = await prisma.booking.findFirst({
where: { userId, id: body.bookingId },
select: { id: true },
});
// Here we make sure to only return attendee's of the user's own bookings.
if (!userBooking) throw new HttpError({ statusCode: 403, message: "Forbidden" });
}
const data = await prisma.attendee.create({
data: {
email: body.email,
name: body.name,
timeZone: body.timeZone,
booking: { connect: { id: body.bookingId } },
},
});
return {
attendee: schemaAttendeeReadPublic.parse(data),
message: "Attendee created successfully",
};
}
export default defaultResponder(postHandler);
+10
View File
@@ -0,0 +1,10 @@
import { defaultHandler } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
export default withMiddleware()(
defaultHandler({
GET: import("./_get"),
POST: import("./_post"),
})
);
@@ -0,0 +1,19 @@
import type { NextApiRequest } from "next";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
async function authMiddleware(req: NextApiRequest) {
const { userId, prisma, isAdmin, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
/** Admins can skip the ownership verification */
if (isAdmin) return;
/**
* There's a caveat here. If the availability exists but the user doesn't own it,
* the user will see a 404 error which may or not be the desired behavior.
*/
await prisma.availability.findFirstOrThrow({
where: { id, Schedule: { userId } },
});
}
export default authMiddleware;
@@ -0,0 +1,45 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /availabilities/{id}:
* delete:
* operationId: removeAvailabilityById
* summary: Remove an existing availability
* parameters:
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the availability to delete
* - in: query
* name: apiKey
* required: true
* schema:
* type: integer
* description: Your API key
* tags:
* - availabilities
* externalDocs:
* url: https://docs.cal.com/availability
* responses:
* 201:
* description: OK, availability removed successfully
* 400:
* description: Bad request. Availability id is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function deleteHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
await prisma.availability.delete({ where: { id } });
return { message: `Availability with id: ${id} deleted successfully` };
}
export default defaultResponder(deleteHandler);
@@ -0,0 +1,49 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaAvailabilityReadPublic } from "~/lib/validations/availability";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /availabilities/{id}:
* get:
* operationId: getAvailabilityById
* summary: Find an availability
* parameters:
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the availability to get
* - in: query
* name: apiKey
* required: true
* schema:
* type: integer
* description: Your API key
* tags:
* - availabilities
* externalDocs:
* url: https://docs.cal.com/availability
* responses:
* 200:
* description: OK
* 401:
* description: Authorization information is missing or invalid
* 404:
* description: Availability not found
*/
export async function getHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const availability = await prisma.availability.findUnique({
where: { id },
include: { Schedule: { select: { userId: true } } },
});
return { availability: schemaAvailabilityReadPublic.parse(availability) };
}
export default defaultResponder(getHandler);
@@ -0,0 +1,86 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import {
schemaAvailabilityEditBodyParams,
schemaAvailabilityReadPublic,
} from "~/lib/validations/availability";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /availabilities/{id}:
* patch:
* operationId: editAvailabilityById
* summary: Edit an existing availability
* parameters:
* - in: query
* name: apiKey
* required: true
* description: Your API key
* schema:
* type: integer
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: ID of the availability to edit
* requestBody:
* description: Edit an existing availability related to one of your bookings
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* days:
* type: array
* description: Array of integers depicting weekdays
* items:
* type: integer
* enum: [0, 1, 2, 3, 4, 5]
* scheduleId:
* type: integer
* description: ID of schedule this availability is associated with
* startTime:
* type: string
* description: Start time of the availability
* endTime:
* type: string
* description: End time of the availability
* examples:
* availability:
* summary: An example of availability
* value:
* scheduleId: 123
* days: [1,2,3,5]
* startTime: 1970-01-01T17:00:00.000Z
* endTime: 1970-01-01T17:00:00.000Z
*
* tags:
* - availabilities
* externalDocs:
* url: https://docs.cal.com/availability
* responses:
* 201:
* description: OK, availability edited successfully
* 400:
* description: Bad request. Availability body is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function patchHandler(req: NextApiRequest) {
const { prisma, query, body } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const data = schemaAvailabilityEditBodyParams.parse(body);
const availability = await prisma.availability.update({
where: { id },
data,
include: { Schedule: { select: { userId: true } } },
});
return { availability: schemaAvailabilityReadPublic.parse(availability) };
}
export default defaultResponder(patchHandler);
@@ -0,0 +1,18 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
import authMiddleware from "./_auth-middleware";
export default withMiddleware()(
defaultResponder(async (req: NextApiRequest, res: NextApiResponse) => {
await authMiddleware(req);
return defaultHandler({
GET: import("./_get"),
PATCH: import("./_patch"),
DELETE: import("./_delete"),
})(req, res);
})
);
@@ -0,0 +1,99 @@
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import {
schemaAvailabilityCreateBodyParams,
schemaAvailabilityReadPublic,
} from "~/lib/validations/availability";
/**
* @swagger
* /availabilities:
* post:
* operationId: addAvailability
* summary: Creates a new availability
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* requestBody:
* description: Edit an existing availability related to one of your bookings
* required: true
* content:
* application/json:
* schema:
* type: object
* required:
* - scheduleId
* - startTime
* - endTime
* properties:
* days:
* type: array
* description: Array of integers depicting weekdays
* items:
* type: integer
* enum: [0, 1, 2, 3, 4, 5]
* scheduleId:
* type: integer
* description: ID of schedule this availability is associated with
* startTime:
* type: string
* description: Start time of the availability
* endTime:
* type: string
* description: End time of the availability
* examples:
* availability:
* summary: An example of availability
* value:
* scheduleId: 123
* days: [1,2,3,5]
* startTime: 1970-01-01T17:00:00.000Z
* endTime: 1970-01-01T17:00:00.000Z
*
*
* tags:
* - availabilities
* externalDocs:
* url: https://docs.cal.com/availability
* responses:
* 201:
* description: OK, availability created
* 400:
* description: Bad request. Availability body is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
async function postHandler(req: NextApiRequest) {
const { prisma } = req;
const data = schemaAvailabilityCreateBodyParams.parse(req.body);
await checkPermissions(req);
const availability = await prisma.availability.create({
data,
include: { Schedule: { select: { userId: true } } },
});
req.statusCode = 201;
return {
availability: schemaAvailabilityReadPublic.parse(availability),
message: "Availability created successfully",
};
}
async function checkPermissions(req: NextApiRequest) {
const { userId, prisma, isAdmin } = req;
if (isAdmin) return;
const data = schemaAvailabilityCreateBodyParams.parse(req.body);
const schedule = await prisma.schedule.findFirst({
where: { userId, id: data.scheduleId },
});
if (!schedule)
throw new HttpError({ statusCode: 401, message: "You can't add availabilities to this schedule" });
}
export default defaultResponder(postHandler);
@@ -0,0 +1,9 @@
import { defaultHandler } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
export default withMiddleware()(
defaultHandler({
POST: import("./_post"),
})
);
+158
View File
@@ -0,0 +1,158 @@
import type { NextApiRequest } from "next";
import { z } from "zod";
import { getUserAvailability } from "@calcom/core/getUserAvailability";
import { HttpError } from "@calcom/lib/http-error";
import { defaultResponder } from "@calcom/lib/server";
import { availabilityUserSelect } from "@calcom/prisma";
import { stringOrNumber } from "@calcom/prisma/zod-utils";
/**
* @swagger
* /availability:
* get:
* summary: Find user or team availability
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* example: "1234abcd5678efgh"
* description: Your API key
* - in: query
* name: userId
* schema:
* type: integer
* example: 101
* description: ID of the user to fetch the availability for
* - in: query
* name: teamId
* schema:
* type: integer
* example: 123
* description: ID of the team to fetch the availability for
* - in: query
* name: username
* schema:
* type: string
* example: "alice"
* description: username of the user to fetch the availability for
* - in: query
* name: dateFrom
* schema:
* type: string
* format: date
* example: "2023-05-14 00:00:00"
* description: Start Date of the availability query
* - in: query
* name: dateTo
* schema:
* type: string
* format: date
* example: "2023-05-20 00:00:00"
* description: End Date of the availability query
* - in: query
* name: eventTypeId
* schema:
* type: integer
* example: 123
* description: Event Type ID of the event type to fetch the availability for
* operationId: availability
* tags:
* - availability
* responses:
* 200:
* description: OK
* content:
* application/json:
* schema:
* type: object
* example:
* busy:
* - start: "2023-05-14T10:00:00.000Z"
* end: "2023-05-14T11:00:00.000Z"
* title: "Team meeting between Alice and Bob"
* - start: "2023-05-15T14:00:00.000Z"
* end: "2023-05-15T15:00:00.000Z"
* title: "Project review between Carol and Dave"
* - start: "2023-05-16T09:00:00.000Z"
* end: "2023-05-16T10:00:00.000Z"
* - start: "2023-05-17T13:00:00.000Z"
* end: "2023-05-17T14:00:00.000Z"
* timeZone: "America/New_York"
* workingHours:
* - days: [1, 2, 3, 4, 5]
* startTime: 540
* endTime: 1020
* userId: 101
* dateOverrides:
* - date: "2023-05-15"
* startTime: 600
* endTime: 960
* userId: 101
* currentSeats: 4
* 401:
* description: Authorization information is missing or invalid.
* 404:
* description: User not found | Team not found | Team has no members
*/
const availabilitySchema = z
.object({
userId: stringOrNumber.optional(),
teamId: stringOrNumber.optional(),
username: z.string().optional(),
dateFrom: z.string(),
dateTo: z.string(),
eventTypeId: stringOrNumber.optional(),
})
.refine(
(data) => !!data.username || !!data.userId || !!data.teamId,
"Either username or userId or teamId should be filled in."
);
async function handler(req: NextApiRequest) {
const { prisma, isAdmin } = req;
const { username, userId, eventTypeId, dateTo, dateFrom, teamId } = availabilitySchema.parse(req.query);
if (!teamId)
return getUserAvailability({
username,
dateFrom,
dateTo,
eventTypeId,
userId,
});
const team = await prisma.team.findUnique({
where: { id: teamId },
select: { members: true },
});
if (!team) throw new HttpError({ statusCode: 404, message: "teamId not found" });
if (!team.members) throw new HttpError({ statusCode: 404, message: "team has no members" });
const allMemberIds = team.members.map((membership) => membership.userId);
const members = await prisma.user.findMany({
where: { id: { in: allMemberIds } },
select: availabilityUserSelect,
});
if (!isAdmin) throw new HttpError({ statusCode: 403, message: "Forbidden" });
const availabilities = members.map(async (user) => {
return {
userId: user.id,
availability: await getUserAvailability({
userId: user.id,
dateFrom,
dateTo,
eventTypeId,
}),
};
});
const settled = await Promise.all(availabilities);
if (!settled)
throw new HttpError({
statusCode: 401,
message: "We had an issue retrieving all your members availabilities",
});
return settled;
}
export default defaultResponder(handler);
+9
View File
@@ -0,0 +1,9 @@
import { defaultHandler } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
export default withMiddleware()(
defaultHandler({
GET: import("./_get"),
})
);
@@ -0,0 +1,19 @@
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
async function authMiddleware(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const { id } = schemaQueryIdParseInt.parse(req.query);
// Here we make sure to only return references of the user's own bookings if the user is not an admin.
if (isAdmin) return;
// Find all references where the user has bookings
const bookingReference = await prisma.bookingReference.findFirst({
where: { id, booking: { userId } },
});
if (!bookingReference) throw new HttpError({ statusCode: 403, message: "Forbidden" });
}
export default authMiddleware;
@@ -0,0 +1,43 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /booking-references/{id}:
* delete:
* operationId: removeBookingReferenceById
* summary: Remove an existing booking reference
* parameters:
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the booking reference to delete
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* tags:
* - booking-references
* responses:
* 201:
* description: OK, bookingReference removed successfully
* 400:
* description: Bad request. BookingReference id is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function deleteHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
await prisma.bookingReference.delete({ where: { id } });
return { message: `BookingReference with id: ${id} deleted` };
}
export default defaultResponder(deleteHandler);
@@ -0,0 +1,44 @@
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaBookingReferenceReadPublic } from "~/lib/validations/booking-reference";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /booking-references/{id}:
* get:
* operationId: getBookingReferenceById
* summary: Find a booking reference
* parameters:
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the booking reference to get
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* tags:
* - booking-references
* responses:
* 200:
* description: OK
* 401:
* description: Authorization information is missing or invalid.
* 404:
* description: BookingReference was not found
*/
export async function getHandler(req: NextApiRequest) {
const { prisma, query } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const booking_reference = await prisma.bookingReference.findUniqueOrThrow({ where: { id } });
return { booking_reference: schemaBookingReferenceReadPublic.parse(booking_reference) };
}
export default defaultResponder(getHandler);
@@ -0,0 +1,78 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import {
schemaBookingEditBodyParams,
schemaBookingReferenceReadPublic,
} from "~/lib/validations/booking-reference";
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
/**
* @swagger
* /booking-references/{id}:
* patch:
* operationId: editBookingReferenceById
* summary: Edit an existing booking reference
* requestBody:
* description: Edit an existing booking reference related to one of your bookings
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* type:
* type: string
* meetingId:
* type: string
* meetingPassword:
* type: string
* externalCalendarId:
* type: string
* deleted:
* type: boolean
* credentialId:
* type: integer
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* - in: path
* name: id
* schema:
* type: integer
* required: true
* description: ID of the booking reference to edit
* tags:
* - booking-references
* responses:
* 201:
* description: OK, BookingReference edited successfully
* 400:
* description: Bad request. BookingReference body is invalid.
* 401:
* description: Authorization information is missing or invalid.
*/
export async function patchHandler(req: NextApiRequest) {
const { prisma, query, body, isAdmin, userId } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const data = schemaBookingEditBodyParams.parse(body);
/* If user tries to update bookingId, we run extra checks */
if (data.bookingId) {
const args: Prisma.BookingFindFirstOrThrowArgs = isAdmin
? /* If admin, we only check that the booking exists */
{ where: { id: data.bookingId } }
: /* For non-admins we make sure the booking belongs to the user */
{ where: { id: data.bookingId, userId } };
await prisma.booking.findFirstOrThrow(args);
}
const booking_reference = await prisma.bookingReference.update({ where: { id }, data });
return { booking_reference: schemaBookingReferenceReadPublic.parse(booking_reference) };
}
export default defaultResponder(patchHandler);
@@ -0,0 +1,18 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
import authMiddleware from "./_auth-middleware";
export default withMiddleware()(
defaultResponder(async (req: NextApiRequest, res: NextApiResponse) => {
await authMiddleware(req);
return defaultHandler({
GET: import("./_get"),
PATCH: import("./_patch"),
DELETE: import("./_delete"),
})(req, res);
})
);
@@ -0,0 +1,38 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { schemaBookingReferenceReadPublic } from "~/lib/validations/booking-reference";
/**
* @swagger
* /booking-references:
* get:
* parameters:
* - in: query
* name: apiKey
* required: true
* schema:
* type: string
* description: Your API key
* operationId: listBookingReferences
* summary: Find all booking references
* tags:
* - booking-references
* responses:
* 200:
* description: OK
* 401:
* description: Authorization information is missing or invalid.
* 404:
* description: No booking references were found
*/
async function getHandler(req: NextApiRequest) {
const { userId, isAdmin, prisma } = req;
const args: Prisma.BookingReferenceFindManyArgs = isAdmin ? {} : { where: { booking: { userId } } };
const data = await prisma.bookingReference.findMany(args);
return { booking_references: data.map((br) => schemaBookingReferenceReadPublic.parse(br)) };
}
export default defaultResponder(getHandler);

Some files were not shown because too many files have changed in this diff Show More