cal.com icon indicating copy to clipboard operation
cal.com copied to clipboard

feat: API v2 subversioning

Open keithwillcode opened this issue 1 year ago • 4 comments

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

keithwillcode avatar May 20 '24 18:05 keithwillcode

Thank you for following the naming conventions! 🙏 Feel free to join our discord and post your PR link.

github-actions[bot] avatar May 20 '24 18:05 github-actions[bot]

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

vercel[bot] avatar May 20 '24 18:05 vercel[bot]

📦 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! 🙌

github-actions[bot] avatar May 20 '24 18:05 github-actions[bot]

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 2Retry 1Initial Attempt
Error: Test timeout of 60000ms exceeded.
Test timeout of 60000ms exceeded.
2.72% (7) 7 / 257 runs
failed over last 7 days
21.01% (54) 54 / 257 runs
flaked 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 2Retry 1Initial Attempt
Error: expect(received).toBe(expected) // Object.is equality...
expect(received).toBe(expected) // Object.is equality

Expected: 1
Received: 0
6.79% (18) 18 / 265 runs
failed over last 7 days
4.15% (11) 11 / 265 runs
flaked 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 2Retry 1Initial Attempt
Error: Expected to provide an iframe, got null
Expected to provide an iframe, got null
18.77% (49) 49 / 261 runs
failed over last 7 days
34.87% (91) 91 / 261 runs
flaked over last 7 days

⚠️ Flakes

📄   apps/web/playwright/event-types.e2e.ts • 3 Flakes

Top 1 Common Error Messages

null

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 2Retry 1Initial Attempt
1.59% (4) 4 / 252 runs
failed over last 7 days
9.92% (25) 25 / 252 runs
flaked over last 7 days
Event Types tests -- legacy user Different Locations Tests Can add Organzer Phone Number location and book with it
Retry 2Retry 1Initial Attempt
0.40% (1) 1 / 251 run
failed over last 7 days
6.37% (16) 16 / 251 runs
flaked over last 7 days
Event Types tests -- legacy user Different Locations Tests Can remove location from multiple locations that are saved
Retry 1Initial Attempt
4.40% (11) 11 / 250 runs
failed over last 7 days
21.20% (53) 53 / 250 runs
flaked 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 1Initial Attempt
0.40% (1) 1 / 247 run
failed over last 7 days
2.02% (5) 5 / 247 runs
flaked 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 1Initial Attempt
0.41% (1) 1 / 246 run
failed over last 7 days
48.78% (120) 120 / 246 runs
flaked 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 1Initial Attempt
3.40% (9) 9 / 265 runs
failed over last 7 days
6.04% (16) 16 / 265 runs
flaked over last 7 days

📄   packages/embeds/embed-core/playwright/tests/namespacing.e2e.ts • 4 Flakes

Top 1 Common Error Messages

null

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 1Initial Attempt
0.41% (1) 1 / 246 run
failed over last 7 days
63.41% (156) 156 / 246 runs
flaked over last 7 days
Namespacing Inline Embed Double install Embed Snippet with inline embed using a namespace
Retry 1Initial Attempt
0.41% (1) 1 / 246 run
failed over last 7 days
62.20% (153) 153 / 246 runs
flaked over last 7 days
Namespacing Inline Embed Double install Embed Snippet with inline embed without a namespace(i.e. default namespace)
Retry 1Initial Attempt
0% (0) 0 / 246 runs
failed over last 7 days
65.04% (160) 160 / 246 runs
flaked over last 7 days
Namespacing Different namespaces can have different init configs
Retry 1Initial Attempt
0% (0) 0 / 244 runs
failed over last 7 days
62.30% (152) 152 / 244 runs
flaked 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 1Initial Attempt
0% (0) 0 / 246 runs
failed over last 7 days
17.48% (43) 43 / 246 runs
flaked 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 2Retry 1Initial Attempt
7.09% (18) 18 / 254 runs
failed over last 7 days
28.74% (73) 73 / 254 runs
flaked over last 7 days

View Detailed Build Results


deploysentinel[bot] avatar May 20 '24 18:05 deploysentinel[bot]

New and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@sideway/[email protected] None 0 16.9 kB marsup
npm/@sideway/[email protected] None 0 3.64 kB hueniverse
npm/[email protected] None 0 4.78 kB isaacs
npm/[email protected] None 0 8.05 kB iarna
npm/[email protected] None 0 0 B
npm/[email protected] None 0 4.05 kB stevenvachon
npm/[email protected] None 0 9.23 kB isaacs
npm/[email protected] None 0 12.7 kB iarna
npm/[email protected] None 0 17.5 kB mathias
npm/[email protected] None 0 7.46 kB tjholowaychuk
npm/[email protected] filesystem, shell 0 23.6 kB lovell
npm/[email protected] None 0 17.3 kB dcporter
npm/[email protected] None 0 5.8 kB developit
npm/[email protected] None 0 6.26 kB dougwilson
npm/[email protected] None 0 5.88 kB dougwilson
npm/[email protected] None 0 86.2 kB infusion
npm/[email protected] environment 0 3.44 kB iarna
npm/[email protected] None 0 102 kB evanhahn
npm/[email protected] None 0 42.1 kB whitequark
npm/[email protected] None 0 20.1 kB jdalton
npm/[email protected] None 0 11.1 kB dougwilson
npm/[email protected] None 0 35.6 kB alexreardon
npm/[email protected] None 0 10.5 kB tigt
npm/[email protected] None 0 27.4 kB dougwilson
npm/[email protected] None 0 7.77 kB james.talmage
npm/[email protected] None 0 7.54 kB dougwilson
npm/[email protected] None 0 27.2 kB evilebottnawi
npm/[email protected] None 0 8.46 kB dougwilson
npm/[email protected] None 0 4.03 kB wesleytodd
npm/[email protected] None 0 12.1 kB dougwilson
npm/[email protected] None 0 4.68 kB dougwilson
npm/[email protected] None 0 68 kB dsagal2
npm/[email protected] None 0 0 B

🚮 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]

View full report↗︎

socket-security[bot] avatar May 31 '24 07:05 socket-security[bot]

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.

graphite-app[bot] avatar May 31 '24 10:05 graphite-app[bot]

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

ThyMinimalDev avatar Jun 04 '24 14:06 ThyMinimalDev