diff --git a/apps/api/v2/src/modules/oauth-clients/inputs/update-oauth-client.input.ts b/apps/api/v2/src/modules/oauth-clients/inputs/update-oauth-client.input.ts
index 596651bdd4..1b2a129576 100644
--- a/apps/api/v2/src/modules/oauth-clients/inputs/update-oauth-client.input.ts
+++ b/apps/api/v2/src/modules/oauth-clients/inputs/update-oauth-client.input.ts
@@ -1,4 +1,4 @@
-import { IsArray, IsOptional, IsString } from "class-validator";
+import { IsArray, IsBoolean, IsOptional, IsString } from "class-validator";
export class UpdateOAuthClientInput {
@IsOptional()
@@ -13,4 +13,20 @@ export class UpdateOAuthClientInput {
@IsOptional()
@IsString({ each: true })
redirectUris?: string[] = [];
+
+ @IsOptional()
+ @IsString()
+ bookingRedirectUri?: string;
+
+ @IsOptional()
+ @IsString()
+ bookingCancelRedirectUri?: string;
+
+ @IsOptional()
+ @IsString()
+ bookingRescheduleRedirectUri?: string;
+
+ @IsOptional()
+ @IsBoolean()
+ areEmailsEnabled?: boolean;
}
diff --git a/apps/web/components/settings/organizations/platform/oauth-clients/OAuthClientCard.tsx b/apps/web/components/settings/organizations/platform/oauth-clients/OAuthClientCard.tsx
index c7803a9fee..f57f6b5e65 100644
--- a/apps/web/components/settings/organizations/platform/oauth-clients/OAuthClientCard.tsx
+++ b/apps/web/components/settings/organizations/platform/oauth-clients/OAuthClientCard.tsx
@@ -11,6 +11,10 @@ type OAuthClientCardProps = {
name: string;
logo?: Avatar;
redirectUris: string[];
+ bookingRedirectUri: string | null;
+ bookingCancelRedirectUri: string | null;
+ bookingRescheduleRedirectUri: string | null;
+ areEmailsEnabled: boolean;
permissions: number;
lastItem: boolean;
id: string;
@@ -23,13 +27,19 @@ export const OAuthClientCard = ({
name,
logo,
redirectUris,
+ bookingRedirectUri,
+ bookingCancelRedirectUri,
+ bookingRescheduleRedirectUri,
permissions,
id,
secret,
lastItem,
onDelete,
isLoading,
+ areEmailsEnabled,
}: OAuthClientCardProps) => {
+ console.log(areEmailsEnabled);
+
const clientPermissions = Object.values(PERMISSIONS_GROUPED_MAP).map((value, index) => {
let permissionsMessage = "";
const hasReadPermission = hasPermission(permissions, value.read);
@@ -110,8 +120,26 @@ export const OAuthClientCard = ({
Redirect uris:
{redirectUris.map((item, index) => (redirectUris.length === index + 1 ? `${item}` : `${item}, `))}
+ {bookingRedirectUri && (
+
+ Booking redirect uri: {bookingRedirectUri}
+
+ )}
+ {bookingRescheduleRedirectUri && (
+
+ Booking reschedule uri: {bookingRescheduleRedirectUri}
+
+ )}
+ {bookingCancelRedirectUri && (
+
+ Booking cancel uri: {bookingCancelRedirectUri}
+
+ )}
+
+ Emails enabled: {areEmailsEnabled ? "Yes" : "No"}
+
-
+
*/}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Permissions
diff --git a/apps/web/pages/settings/organizations/platform/oauth-clients/index.tsx b/apps/web/pages/settings/organizations/platform/oauth-clients/index.tsx
index 6e5619d65a..3a46e7a960 100644
--- a/apps/web/pages/settings/organizations/platform/oauth-clients/index.tsx
+++ b/apps/web/pages/settings/organizations/platform/oauth-clients/index.tsx
@@ -62,10 +62,15 @@ export const OAuthClients = () => {
<>
{data.map((client, index) => {
+ console.log(client);
+
return (
{
secret={client.secret}
isLoading={isDeleting}
onDelete={handleDelete}
+ areEmailsEnabled={client.areEmailsEnabled}
/>
);
})}
diff --git a/packages/platform/types/oauth-clients.ts b/packages/platform/types/oauth-clients.ts
index 836e68400c..1d3aab0663 100644
--- a/packages/platform/types/oauth-clients.ts
+++ b/packages/platform/types/oauth-clients.ts
@@ -1,4 +1,4 @@
-import { IsArray, IsNumber, IsOptional, IsString } from "class-validator";
+import { IsArray, IsNumber, IsOptional, IsBoolean, IsString } from "class-validator";
import { z } from "zod";
export class CreateOAuthClientInput {
@@ -15,6 +15,22 @@ export class CreateOAuthClientInput {
@IsNumber()
permissions!: number;
+
+ @IsOptional()
+ @IsString()
+ bookingRedirectUri?: string;
+
+ @IsOptional()
+ @IsString()
+ bookingCancelRedirectUri?: string;
+
+ @IsOptional()
+ @IsString()
+ bookingRescheduleRedirectUri?: string;
+
+ @IsOptional()
+ @IsBoolean()
+ areEmailsEnabled?: boolean;
}
export class DeleteOAuthClientInput {
diff --git a/packages/prisma/migrations/20240411114622_platform_urls_emails/migration.sql b/packages/prisma/migrations/20240411114622_platform_urls_emails/migration.sql
new file mode 100644
index 0000000000..232c86ecbd
--- /dev/null
+++ b/packages/prisma/migrations/20240411114622_platform_urls_emails/migration.sql
@@ -0,0 +1,5 @@
+-- AlterTable
+ALTER TABLE "PlatformOAuthClient" ADD COLUMN "areEmailsEnabled" BOOLEAN NOT NULL DEFAULT false,
+ADD COLUMN "bookingCancelRedirectUri" TEXT,
+ADD COLUMN "bookingRedirectUri" TEXT,
+ADD COLUMN "bookingRescheduleRedirectUri" TEXT;
diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma
index e3a3d5307f..bebe0e44bf 100644
--- a/packages/prisma/schema.prisma
+++ b/packages/prisma/schema.prisma
@@ -1228,6 +1228,11 @@ model PlatformOAuthClient {
refreshToken RefreshToken[]
authorizationTokens PlatformAuthorizationToken[]
+ bookingRedirectUri String?
+ bookingCancelRedirectUri String?
+ bookingRescheduleRedirectUri String?
+ areEmailsEnabled Boolean @default(false)
+
createdAt DateTime @default(now())
}