feat: org/team event type private links endpoints#23048
feat: org/team event type private links endpoints#23048alishaz-polymath merged 11 commits intomainfrom
Conversation
|
Note Reviews pausedUse the following commands to manage reviews:
WalkthroughAdds organization/team-scoped private-links support for event types: introduces OrganizationsEventTypesPrivateLinksController with CRUD endpoints, wires EventTypesPrivateLinksModule into OrganizationsModule and exports PrivateLinksService, refactors PrivateLinksService (removes userId from get/update/delete signatures and injects input/output/repository dependencies), updates existing event-type private-links controller to match, removes OAuthClientModule from the module imports, adds an e2e test exercising org/team private-link CRUD flows, and updates OpenAPI/Swagger and public OpenAPI v2 docs to include the new endpoints and schemas. Also bumps @calcom/platform-libraries to 9.9.9. Estimated code review effort🎯 4 (Complex) | ⏱️ ~40 minutes Possibly related PRs
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ |
| @GetUser("id") userId: number | ||
| ): Promise<CreatePrivateLinkOutput> { | ||
| await this.teamsEventTypesService.validateEventTypeExists(teamId, eventTypeId); | ||
| const privateLink = await this.privateLinksService.createPrivateLink(eventTypeId, userId, body); |
There was a problem hiding this comment.
I thought that userId was removed from private links service - user id is still passed here.
Graphite Automations"Add ready-for-e2e label" took an action on this PR • (08/13/25)1 label was added to this PR based on Keith Williams's automation. |
E2E results are ready! |
✅ Actions performedReviews paused. |

What does this PR do?
Summary
Endpoints
/v2/organizations/:orgId/teams/:teamId/event-types/:eventTypeId/private-links/v2/organizations/:orgId/teams/:teamId/event-types/:eventTypeId/private-links/v2/organizations/:orgId/teams/:teamId/event-types/:eventTypeId/private-links/:linkId/v2/organizations/:orgId/teams/:teamId/event-types/:eventTypeId/private-links/:linkIdPermissions and guards
@Roles("TEAM_ADMIN"),@PlatformPlan("ESSENTIALS")ApiAuthGuard,IsOrgGuard,RolesGuard,IsTeamInOrg,PlatformPlanGuard,IsAdminAPIEnabledGuardTeamsEventTypesService.validateEventTypeExists(teamId, eventTypeId)Implementation notes
apps/api/v2/src/ee/event-types-private-links/controllers/organizations-event-types-private-links.controller.tsPrivateLinksServicefor create/list/update/delete.SUCCESS_STATUSand platform-types outputs.Module changes
OrganizationsModule:EventTypesPrivateLinksModulefor the service.OrganizationsEventTypesPrivateLinksControllerto controllers.EventTypesPrivateLinksModuleto only event-type-scoped endpoints and exportedPrivateLinksService.Tests
apps/api/v2/src/modules/organizations/event-types/organizations-event-types-private-links.e2e-spec.tsAPI surface and data model
Visual Demo (For contributors especially)
A visual demonstration is strongly recommended, for both the original and new change (video / image - any one).
Video Demo (if applicable):
Image Demo (if applicable):
Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
data.linkId.:linkIdto updatemaxUsageCount; expect 200 with updated value.:linkId; expect 200 withdata.linkId.Checklist