cal.com
cal.com copied to clipboard
feat: API v2 subversioning
What does this PR do?
- Fixes #XXXX (GitHub issue number)
- Fixes CAL-XXXX (Linear issue number - should be visible at the bottom of the GitHub issue description)
Mandatory Tasks (DO NOT REMOVE)
- [ ] I have self-reviewed the code (A decent size PR without self-review might be rejected)
- [ ] I have added a Docs issue here if this PR makes changes that would require a documentation change
- [ ] I have added or modified automated tests that prove my fix is effective or that my feature works (PRs might be rejected if logical changes are not properly tested)
How should this be tested?
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
Checklist
- I haven't read the contributing guide
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
Thank you for following the naming conventions! 🙏 Feel free to join our discord and post your PR link.
The latest updates on your projects. Learn more about Vercel for Git ↗︎
3 Ignored Deployments
| Name | Status | Preview | Comments | Updated (UTC) |
|---|---|---|---|---|
| ai | ⬜️ Ignored (Inspect) | Visit Preview | Jun 4, 2024 3:01pm | |
| cal | ⬜️ Ignored (Inspect) | Visit Preview | Jun 4, 2024 3:01pm | |
| calcom-web-canary | ⬜️ Ignored (Inspect) | Visit Preview | Jun 4, 2024 3:01pm |
📦 Next.js Bundle Analysis for @calcom/web
This analysis was generated by the Next.js Bundle Analysis action. 🤖
This PR introduced no changes to the JavaScript bundle! 🙌
Current Playwright Test Results Summary
✅ 318 Passing - ❌ 3 Failing - ⚠️ 12 Flaky
Run may still be in progress, this comment will be updated as current testing workflow or job completes...
(Last updated on 05/20/2024 06:50:57pm UTC)
Run Details
Running Workflow PR Update on Github Actions
Commit: 94e2c842ad58ca36b7421709fa9171be22244b63
Started: 05/20/2024 06:46:34pm UTC
❌ Failures
📄 apps/web/playwright/event-types.e2e.ts • 1 Failure
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Event Types tests -- future user can add multiple organizer address
Retry 2 • Retry 1 • Initial Attempt Error: Test timeout of 60000ms exceeded.
|
2.72% (7)7 / 257 runsfailed over last 7 days |
21.01% (54)54 / 257 runsflaked over last 7 days |
📄 apps/web/playwright/team/team-invitation.e2e.ts • 1 Failure
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Team Invitation (non verified)
Retry 2 • Retry 1 • Initial Attempt Error: expect(received).toBe(expected) // Object.is equality...
|
6.79% (18)18 / 265 runsfailed over last 7 days |
4.15% (11)11 / 265 runsflaked over last 7 days |
📄 packages/embeds/embed-react/playwright/tests/basic.e2e.ts • 1 Failure
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
React Embed Element Click Popup should verify that the iframe got created with correct URL - namespaced
Retry 2 • Retry 1 • Initial Attempt Error: Expected to provide an iframe, got null
|
18.77% (49)49 / 261 runsfailed over last 7 days |
34.87% (91)91 / 261 runsflaked over last 7 days |
⚠️ Flakes
📄 apps/web/playwright/event-types.e2e.ts • 3 Flakes
Top 1 Common Error Messages
|
|
3 Test Cases Affected |
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Event Types tests -- legacy user enabling recurring event comes with default options
Retry 2 • Retry 1 • Initial Attempt |
1.59% (4)4 / 252 runsfailed over last 7 days |
9.92% (25)25 / 252 runsflaked over last 7 days |
|
Event Types tests -- legacy user Different Locations Tests Can add Organzer Phone Number location and book with it
Retry 2 • Retry 1 • Initial Attempt |
0.40% (1)1 / 251 runfailed over last 7 days |
6.37% (16)16 / 251 runsflaked over last 7 days |
|
Event Types tests -- legacy user Different Locations Tests Can remove location from multiple locations that are saved
Retry 1 • Initial Attempt |
4.40% (11)11 / 250 runsfailed over last 7 days |
21.20% (53)53 / 250 runsflaked over last 7 days |
📄 apps/web/playwright/insights.e2e.ts • 1 Flake
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Insights should test download button
Retry 1 • Initial Attempt |
0.40% (1)1 / 247 runfailed over last 7 days |
2.02% (5)5 / 247 runsflaked over last 7 days |
📄 apps/web/playwright/managedBooking/advancedOptions.e2e.ts • 1 Flake
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Check advanced options in a managed team event type Check advanced options in a managed team event type without offer seats
Retry 1 • Initial Attempt |
0.41% (1)1 / 246 runfailed over last 7 days |
48.78% (120)120 / 246 runsflaked over last 7 days |
📄 apps/web/playwright/team/team-invitation.e2e.ts • 1 Flake
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Team Invitation (verified)
Retry 1 • Initial Attempt |
3.40% (9)9 / 265 runsfailed over last 7 days |
6.04% (16)16 / 265 runsflaked over last 7 days |
📄 packages/embeds/embed-core/playwright/tests/namespacing.e2e.ts • 4 Flakes
Top 1 Common Error Messages
|
|
4 Test Cases Affected |
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Namespacing Inline Embed Add inline embed using a namespace without reload
Retry 1 • Initial Attempt |
0.41% (1)1 / 246 runfailed over last 7 days |
63.41% (156)156 / 246 runsflaked over last 7 days |
|
Namespacing Inline Embed Double install Embed Snippet with inline embed using a namespace
Retry 1 • Initial Attempt |
0.41% (1)1 / 246 runfailed over last 7 days |
62.20% (153)153 / 246 runsflaked over last 7 days |
|
Namespacing Inline Embed Double install Embed Snippet with inline embed without a namespace(i.e. default namespace)
Retry 1 • Initial Attempt |
0% (0)0 / 246 runsfailed over last 7 days |
65.04% (160)160 / 246 runsflaked over last 7 days |
|
Namespacing Different namespaces can have different init configs
Retry 1 • Initial Attempt |
0% (0)0 / 244 runsfailed over last 7 days |
62.30% (152)152 / 244 runsflaked over last 7 days |
📄 apps/web/playwright/login.e2e.ts • 1 Flake
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
user can login & logout succesfully -- legacy login flow user & logout using dashboard
Retry 1 • Initial Attempt |
0% (0)0 / 246 runsfailed over last 7 days |
17.48% (43)43 / 246 runsflaked over last 7 days |
📄 apps/web/playwright/organization/booking.e2e.ts • 1 Flake
Test Case Results
| Test Case | Last 7 days Failures | Last 7 days Flakes |
|---|---|---|
|
Bookings Team Event Can create a booking for Round Robin EventType
Retry 2 • Retry 1 • Initial Attempt |
7.09% (18)18 / 254 runsfailed over last 7 days |
28.74% (73)73 / 254 runsflaked over last 7 days |
New and removed dependencies detected. Learn more about Socket for GitHub ↗︎
🚮 Removed packages: npm/@aashutoshrathi/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@bcoe/[email protected], npm/@eslint-community/[email protected], npm/@eslint/[email protected], npm/@grpc/[email protected], npm/@hapi/[email protected], npm/@humanwhocodes/[email protected], npm/@humanwhocodes/[email protected], npm/@isaacs/[email protected], npm/@istanbuljs/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@nodelib/[email protected], npm/@nodelib/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@protobufjs/[email protected], npm/@sinclair/[email protected], npm/@sinonjs/[email protected], npm/@sinonjs/[email protected], npm/@tootallnate/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@ungap/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected]
Graphite Automations
"Add foundation team as reviewer" took an action on this PR • (05/31/24)
1 reviewer was added to this PR based on Keith Williams's automation.
Looks good - just 1 minor comment below.
Also, let's just assume that current controllers, services and repositories are for VERSION_2024_04_15. We could suffix them, but it's fine if we leave as is.
Because my vote goes for each release having a copy of its own services at least suffixed by release number. Maybe repositories don't need to be versioned since business logic should be handled in services, and repository is just a db operation after all.
I think creating subfolders works well