mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 04:39:06 +00:00
consent disable feature (no-mistakes)
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
"""add skip_consent to room and meeting
|
||||||
|
|
||||||
|
Revision ID: 20251217000000
|
||||||
|
Revises: bbafedfa510c
|
||||||
|
Create Date: 2025-12-17 00:00:00.000000
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = "20251217000000"
|
||||||
|
down_revision: Union[str, None] = "bbafedfa510c"
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
with op.batch_alter_table("room", schema=None) as batch_op:
|
||||||
|
batch_op.add_column(
|
||||||
|
sa.Column(
|
||||||
|
"skip_consent",
|
||||||
|
sa.Boolean(),
|
||||||
|
nullable=False,
|
||||||
|
server_default=sa.text("false"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
with op.batch_alter_table("meeting", schema=None) as batch_op:
|
||||||
|
batch_op.add_column(
|
||||||
|
sa.Column(
|
||||||
|
"skip_consent",
|
||||||
|
sa.Boolean(),
|
||||||
|
nullable=False,
|
||||||
|
server_default=sa.text("false"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
with op.batch_alter_table("meeting", schema=None) as batch_op:
|
||||||
|
batch_op.drop_column("skip_consent")
|
||||||
|
|
||||||
|
with op.batch_alter_table("room", schema=None) as batch_op:
|
||||||
|
batch_op.drop_column("skip_consent")
|
||||||
@@ -63,6 +63,12 @@ meetings = sa.Table(
|
|||||||
nullable=False,
|
nullable=False,
|
||||||
server_default=assert_equal(WHEREBY_PLATFORM, "whereby"),
|
server_default=assert_equal(WHEREBY_PLATFORM, "whereby"),
|
||||||
),
|
),
|
||||||
|
sa.Column(
|
||||||
|
"skip_consent",
|
||||||
|
sa.Boolean,
|
||||||
|
nullable=False,
|
||||||
|
server_default=sa.false(),
|
||||||
|
),
|
||||||
sa.Index("idx_meeting_room_id", "room_id"),
|
sa.Index("idx_meeting_room_id", "room_id"),
|
||||||
sa.Index("idx_meeting_calendar_event", "calendar_event_id"),
|
sa.Index("idx_meeting_calendar_event", "calendar_event_id"),
|
||||||
)
|
)
|
||||||
@@ -110,6 +116,7 @@ class Meeting(BaseModel):
|
|||||||
calendar_event_id: str | None = None
|
calendar_event_id: str | None = None
|
||||||
calendar_metadata: dict[str, Any] | None = None
|
calendar_metadata: dict[str, Any] | None = None
|
||||||
platform: Platform = WHEREBY_PLATFORM
|
platform: Platform = WHEREBY_PLATFORM
|
||||||
|
skip_consent: bool = False
|
||||||
|
|
||||||
|
|
||||||
class MeetingController:
|
class MeetingController:
|
||||||
@@ -140,6 +147,7 @@ class MeetingController:
|
|||||||
calendar_event_id=calendar_event_id,
|
calendar_event_id=calendar_event_id,
|
||||||
calendar_metadata=calendar_metadata,
|
calendar_metadata=calendar_metadata,
|
||||||
platform=room.platform,
|
platform=room.platform,
|
||||||
|
skip_consent=room.skip_consent,
|
||||||
)
|
)
|
||||||
query = meetings.insert().values(**meeting.model_dump())
|
query = meetings.insert().values(**meeting.model_dump())
|
||||||
await get_database().execute(query)
|
await get_database().execute(query)
|
||||||
|
|||||||
@@ -57,6 +57,12 @@ rooms = sqlalchemy.Table(
|
|||||||
sqlalchemy.String,
|
sqlalchemy.String,
|
||||||
nullable=False,
|
nullable=False,
|
||||||
),
|
),
|
||||||
|
sqlalchemy.Column(
|
||||||
|
"skip_consent",
|
||||||
|
sqlalchemy.Boolean,
|
||||||
|
nullable=False,
|
||||||
|
server_default=sqlalchemy.sql.false(),
|
||||||
|
),
|
||||||
sqlalchemy.Index("idx_room_is_shared", "is_shared"),
|
sqlalchemy.Index("idx_room_is_shared", "is_shared"),
|
||||||
sqlalchemy.Index("idx_room_ics_enabled", "ics_enabled"),
|
sqlalchemy.Index("idx_room_ics_enabled", "ics_enabled"),
|
||||||
)
|
)
|
||||||
@@ -85,6 +91,7 @@ class Room(BaseModel):
|
|||||||
ics_last_sync: datetime | None = None
|
ics_last_sync: datetime | None = None
|
||||||
ics_last_etag: str | None = None
|
ics_last_etag: str | None = None
|
||||||
platform: Platform = Field(default_factory=lambda: settings.DEFAULT_VIDEO_PLATFORM)
|
platform: Platform = Field(default_factory=lambda: settings.DEFAULT_VIDEO_PLATFORM)
|
||||||
|
skip_consent: bool = False
|
||||||
|
|
||||||
|
|
||||||
class RoomController:
|
class RoomController:
|
||||||
@@ -139,6 +146,7 @@ class RoomController:
|
|||||||
ics_fetch_interval: int = 300,
|
ics_fetch_interval: int = 300,
|
||||||
ics_enabled: bool = False,
|
ics_enabled: bool = False,
|
||||||
platform: Platform = settings.DEFAULT_VIDEO_PLATFORM,
|
platform: Platform = settings.DEFAULT_VIDEO_PLATFORM,
|
||||||
|
skip_consent: bool = False,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Add a new room
|
Add a new room
|
||||||
@@ -163,6 +171,7 @@ class RoomController:
|
|||||||
"ics_fetch_interval": ics_fetch_interval,
|
"ics_fetch_interval": ics_fetch_interval,
|
||||||
"ics_enabled": ics_enabled,
|
"ics_enabled": ics_enabled,
|
||||||
"platform": platform,
|
"platform": platform,
|
||||||
|
"skip_consent": skip_consent,
|
||||||
}
|
}
|
||||||
|
|
||||||
room = Room(**room_data)
|
room = Room(**room_data)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ class Room(BaseModel):
|
|||||||
ics_last_sync: Optional[datetime] = None
|
ics_last_sync: Optional[datetime] = None
|
||||||
ics_last_etag: Optional[str] = None
|
ics_last_etag: Optional[str] = None
|
||||||
platform: Platform
|
platform: Platform
|
||||||
|
skip_consent: bool = False
|
||||||
|
|
||||||
|
|
||||||
class RoomDetails(Room):
|
class RoomDetails(Room):
|
||||||
@@ -72,6 +73,7 @@ class Meeting(BaseModel):
|
|||||||
calendar_event_id: str | None = None
|
calendar_event_id: str | None = None
|
||||||
calendar_metadata: dict[str, Any] | None = None
|
calendar_metadata: dict[str, Any] | None = None
|
||||||
platform: Platform
|
platform: Platform
|
||||||
|
skip_consent: bool = False
|
||||||
|
|
||||||
|
|
||||||
class CreateRoom(BaseModel):
|
class CreateRoom(BaseModel):
|
||||||
@@ -90,6 +92,7 @@ class CreateRoom(BaseModel):
|
|||||||
ics_fetch_interval: int = 300
|
ics_fetch_interval: int = 300
|
||||||
ics_enabled: bool = False
|
ics_enabled: bool = False
|
||||||
platform: Platform
|
platform: Platform
|
||||||
|
skip_consent: bool = False
|
||||||
|
|
||||||
|
|
||||||
class UpdateRoom(BaseModel):
|
class UpdateRoom(BaseModel):
|
||||||
@@ -108,6 +111,7 @@ class UpdateRoom(BaseModel):
|
|||||||
ics_fetch_interval: Optional[int] = None
|
ics_fetch_interval: Optional[int] = None
|
||||||
ics_enabled: Optional[bool] = None
|
ics_enabled: Optional[bool] = None
|
||||||
platform: Optional[Platform] = None
|
platform: Optional[Platform] = None
|
||||||
|
skip_consent: Optional[bool] = None
|
||||||
|
|
||||||
|
|
||||||
class CreateRoomMeeting(BaseModel):
|
class CreateRoomMeeting(BaseModel):
|
||||||
@@ -249,6 +253,7 @@ async def rooms_create(
|
|||||||
ics_fetch_interval=room.ics_fetch_interval,
|
ics_fetch_interval=room.ics_fetch_interval,
|
||||||
ics_enabled=room.ics_enabled,
|
ics_enabled=room.ics_enabled,
|
||||||
platform=room.platform,
|
platform=room.platform,
|
||||||
|
skip_consent=room.skip_consent,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ const roomInitialState = {
|
|||||||
icsEnabled: false,
|
icsEnabled: false,
|
||||||
icsFetchInterval: 5,
|
icsFetchInterval: 5,
|
||||||
platform: "whereby",
|
platform: "whereby",
|
||||||
|
skipConsent: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RoomsList() {
|
export default function RoomsList() {
|
||||||
@@ -175,6 +176,7 @@ export default function RoomsList() {
|
|||||||
icsEnabled: detailedEditedRoom.ics_enabled || false,
|
icsEnabled: detailedEditedRoom.ics_enabled || false,
|
||||||
icsFetchInterval: detailedEditedRoom.ics_fetch_interval || 5,
|
icsFetchInterval: detailedEditedRoom.ics_fetch_interval || 5,
|
||||||
platform: detailedEditedRoom.platform,
|
platform: detailedEditedRoom.platform,
|
||||||
|
skipConsent: detailedEditedRoom.skip_consent || false,
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
[detailedEditedRoom],
|
[detailedEditedRoom],
|
||||||
@@ -326,6 +328,7 @@ export default function RoomsList() {
|
|||||||
ics_enabled: room.icsEnabled,
|
ics_enabled: room.icsEnabled,
|
||||||
ics_fetch_interval: room.icsFetchInterval,
|
ics_fetch_interval: room.icsFetchInterval,
|
||||||
platform,
|
platform,
|
||||||
|
skip_consent: room.skipConsent,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isEditing) {
|
if (isEditing) {
|
||||||
@@ -388,6 +391,7 @@ export default function RoomsList() {
|
|||||||
icsEnabled: roomData.ics_enabled || false,
|
icsEnabled: roomData.ics_enabled || false,
|
||||||
icsFetchInterval: roomData.ics_fetch_interval || 5,
|
icsFetchInterval: roomData.ics_fetch_interval || 5,
|
||||||
platform: roomData.platform,
|
platform: roomData.platform,
|
||||||
|
skipConsent: roomData.skip_consent || false,
|
||||||
});
|
});
|
||||||
setEditRoomId(roomId);
|
setEditRoomId(roomId);
|
||||||
setIsEditing(true);
|
setIsEditing(true);
|
||||||
@@ -796,6 +800,34 @@ export default function RoomsList() {
|
|||||||
<Checkbox.Label>Shared room</Checkbox.Label>
|
<Checkbox.Label>Shared room</Checkbox.Label>
|
||||||
</Checkbox.Root>
|
</Checkbox.Root>
|
||||||
</Field.Root>
|
</Field.Root>
|
||||||
|
{room.recordingType === "cloud" && (
|
||||||
|
<Field.Root mt={4}>
|
||||||
|
<Checkbox.Root
|
||||||
|
name="skipConsent"
|
||||||
|
checked={room.skipConsent}
|
||||||
|
onCheckedChange={(e) => {
|
||||||
|
const syntheticEvent = {
|
||||||
|
target: {
|
||||||
|
name: "skipConsent",
|
||||||
|
type: "checkbox",
|
||||||
|
checked: e.checked,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
handleRoomChange(syntheticEvent);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Checkbox.HiddenInput />
|
||||||
|
<Checkbox.Control>
|
||||||
|
<Checkbox.Indicator />
|
||||||
|
</Checkbox.Control>
|
||||||
|
<Checkbox.Label>Skip consent dialog</Checkbox.Label>
|
||||||
|
</Checkbox.Root>
|
||||||
|
<Field.HelperText>
|
||||||
|
When enabled, participants won't be asked for
|
||||||
|
recording consent. Audio will be stored automatically.
|
||||||
|
</Field.HelperText>
|
||||||
|
</Field.Root>
|
||||||
|
)}
|
||||||
</Tabs.Content>
|
</Tabs.Content>
|
||||||
|
|
||||||
<Tabs.Content value="share" pt={6}>
|
<Tabs.Content value="share" pt={6}>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import type { components } from "../../reflector-api";
|
|||||||
import { useAuth } from "../../lib/AuthProvider";
|
import { useAuth } from "../../lib/AuthProvider";
|
||||||
import {
|
import {
|
||||||
ConsentDialogButton,
|
ConsentDialogButton,
|
||||||
|
RecordingIndicator,
|
||||||
recordingTypeRequiresConsent,
|
recordingTypeRequiresConsent,
|
||||||
} from "../../lib/consent";
|
} from "../../lib/consent";
|
||||||
import { useRoomJoinMeeting } from "../../lib/apiHooks";
|
import { useRoomJoinMeeting } from "../../lib/apiHooks";
|
||||||
@@ -162,7 +163,12 @@ export default function DailyRoom({ meeting }: DailyRoomProps) {
|
|||||||
<div ref={containerRef} style={{ width: "100%", height: "100%" }} />
|
<div ref={containerRef} style={{ width: "100%", height: "100%" }} />
|
||||||
{meeting.recording_type &&
|
{meeting.recording_type &&
|
||||||
recordingTypeRequiresConsent(meeting.recording_type) &&
|
recordingTypeRequiresConsent(meeting.recording_type) &&
|
||||||
meeting.id && <ConsentDialogButton meetingId={meeting.id} />}
|
meeting.id &&
|
||||||
|
(meeting.skip_consent ? (
|
||||||
|
<RecordingIndicator />
|
||||||
|
) : (
|
||||||
|
<ConsentDialogButton meetingId={meeting.id} />
|
||||||
|
))}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { getWherebyUrl, useWhereby } from "../../lib/wherebyClient";
|
|||||||
import { assertExistsAndNonEmptyString, NonEmptyString } from "../../lib/utils";
|
import { assertExistsAndNonEmptyString, NonEmptyString } from "../../lib/utils";
|
||||||
import {
|
import {
|
||||||
ConsentDialogButton as BaseConsentDialogButton,
|
ConsentDialogButton as BaseConsentDialogButton,
|
||||||
|
RecordingIndicator,
|
||||||
useConsentDialog,
|
useConsentDialog,
|
||||||
recordingTypeRequiresConsent,
|
recordingTypeRequiresConsent,
|
||||||
} from "../../lib/consent";
|
} from "../../lib/consent";
|
||||||
@@ -90,12 +91,15 @@ export default function WherebyRoom({ meeting }: WherebyRoomProps) {
|
|||||||
/>
|
/>
|
||||||
{recordingType &&
|
{recordingType &&
|
||||||
recordingTypeRequiresConsent(recordingType) &&
|
recordingTypeRequiresConsent(recordingType) &&
|
||||||
meetingId && (
|
meetingId &&
|
||||||
|
(meeting.skip_consent ? (
|
||||||
|
<RecordingIndicator />
|
||||||
|
) : (
|
||||||
<WherebyConsentDialogButton
|
<WherebyConsentDialogButton
|
||||||
meetingId={assertExistsAndNonEmptyString(meetingId)}
|
meetingId={assertExistsAndNonEmptyString(meetingId)}
|
||||||
wherebyRef={wherebyRef}
|
wherebyRef={wherebyRef}
|
||||||
/>
|
/>
|
||||||
)}
|
))}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
33
www/app/lib/consent/RecordingIndicator.tsx
Normal file
33
www/app/lib/consent/RecordingIndicator.tsx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { Box, Text } from "@chakra-ui/react";
|
||||||
|
import { FaCircle } from "react-icons/fa6";
|
||||||
|
import {
|
||||||
|
CONSENT_BUTTON_TOP_OFFSET,
|
||||||
|
CONSENT_BUTTON_LEFT_OFFSET,
|
||||||
|
CONSENT_BUTTON_Z_INDEX,
|
||||||
|
} from "./constants";
|
||||||
|
|
||||||
|
export function RecordingIndicator() {
|
||||||
|
return (
|
||||||
|
<Box
|
||||||
|
position="absolute"
|
||||||
|
top={CONSENT_BUTTON_TOP_OFFSET}
|
||||||
|
left={CONSENT_BUTTON_LEFT_OFFSET}
|
||||||
|
zIndex={CONSENT_BUTTON_Z_INDEX}
|
||||||
|
display="flex"
|
||||||
|
alignItems="center"
|
||||||
|
gap={2}
|
||||||
|
bg="red.500"
|
||||||
|
color="white"
|
||||||
|
px={3}
|
||||||
|
py={1.5}
|
||||||
|
borderRadius="md"
|
||||||
|
fontSize="sm"
|
||||||
|
fontWeight="medium"
|
||||||
|
>
|
||||||
|
<FaCircle size={8} />
|
||||||
|
<Text>Recording</Text>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
export { ConsentDialogButton } from "./ConsentDialogButton";
|
export { ConsentDialogButton } from "./ConsentDialogButton";
|
||||||
export { ConsentDialog } from "./ConsentDialog";
|
export { ConsentDialog } from "./ConsentDialog";
|
||||||
|
export { RecordingIndicator } from "./RecordingIndicator";
|
||||||
export { useConsentDialog } from "./useConsentDialog";
|
export { useConsentDialog } from "./useConsentDialog";
|
||||||
export { recordingTypeRequiresConsent } from "./utils";
|
export { recordingTypeRequiresConsent } from "./utils";
|
||||||
export * from "./constants";
|
export * from "./constants";
|
||||||
|
|||||||
69
www/app/reflector-api.d.ts
vendored
69
www/app/reflector-api.d.ts
vendored
@@ -893,8 +893,16 @@ export interface components {
|
|||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
ics_enabled: boolean;
|
ics_enabled: boolean;
|
||||||
/** Platform */
|
/**
|
||||||
platform?: ("whereby" | "daily") | null;
|
* Platform
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
platform: "whereby" | "daily";
|
||||||
|
/**
|
||||||
|
* Skip Consent
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
skip_consent: boolean;
|
||||||
};
|
};
|
||||||
/** CreateRoomMeeting */
|
/** CreateRoomMeeting */
|
||||||
CreateRoomMeeting: {
|
CreateRoomMeeting: {
|
||||||
@@ -1123,7 +1131,9 @@ export interface components {
|
|||||||
/** Audio Deleted */
|
/** Audio Deleted */
|
||||||
audio_deleted?: boolean | null;
|
audio_deleted?: boolean | null;
|
||||||
/** Participants */
|
/** Participants */
|
||||||
participants: components["schemas"]["TranscriptParticipant"][] | null;
|
participants:
|
||||||
|
| components["schemas"]["TranscriptParticipantWithEmail"][]
|
||||||
|
| null;
|
||||||
/**
|
/**
|
||||||
* @description discriminator enum property added by openapi-typescript
|
* @description discriminator enum property added by openapi-typescript
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
@@ -1184,7 +1194,9 @@ export interface components {
|
|||||||
/** Audio Deleted */
|
/** Audio Deleted */
|
||||||
audio_deleted?: boolean | null;
|
audio_deleted?: boolean | null;
|
||||||
/** Participants */
|
/** Participants */
|
||||||
participants: components["schemas"]["TranscriptParticipant"][] | null;
|
participants:
|
||||||
|
| components["schemas"]["TranscriptParticipantWithEmail"][]
|
||||||
|
| null;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* GetTranscriptWithText
|
* GetTranscriptWithText
|
||||||
@@ -1246,7 +1258,9 @@ export interface components {
|
|||||||
/** Audio Deleted */
|
/** Audio Deleted */
|
||||||
audio_deleted?: boolean | null;
|
audio_deleted?: boolean | null;
|
||||||
/** Participants */
|
/** Participants */
|
||||||
participants: components["schemas"]["TranscriptParticipant"][] | null;
|
participants:
|
||||||
|
| components["schemas"]["TranscriptParticipantWithEmail"][]
|
||||||
|
| null;
|
||||||
/**
|
/**
|
||||||
* @description discriminator enum property added by openapi-typescript
|
* @description discriminator enum property added by openapi-typescript
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
@@ -1315,7 +1329,9 @@ export interface components {
|
|||||||
/** Audio Deleted */
|
/** Audio Deleted */
|
||||||
audio_deleted?: boolean | null;
|
audio_deleted?: boolean | null;
|
||||||
/** Participants */
|
/** Participants */
|
||||||
participants: components["schemas"]["TranscriptParticipant"][] | null;
|
participants:
|
||||||
|
| components["schemas"]["TranscriptParticipantWithEmail"][]
|
||||||
|
| null;
|
||||||
/**
|
/**
|
||||||
* @description discriminator enum property added by openapi-typescript
|
* @description discriminator enum property added by openapi-typescript
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
@@ -1386,7 +1402,9 @@ export interface components {
|
|||||||
/** Audio Deleted */
|
/** Audio Deleted */
|
||||||
audio_deleted?: boolean | null;
|
audio_deleted?: boolean | null;
|
||||||
/** Participants */
|
/** Participants */
|
||||||
participants: components["schemas"]["TranscriptParticipant"][] | null;
|
participants:
|
||||||
|
| components["schemas"]["TranscriptParticipantWithEmail"][]
|
||||||
|
| null;
|
||||||
/**
|
/**
|
||||||
* @description discriminator enum property added by openapi-typescript
|
* @description discriminator enum property added by openapi-typescript
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
@@ -1526,6 +1544,11 @@ export interface components {
|
|||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
platform: "whereby" | "daily";
|
platform: "whereby" | "daily";
|
||||||
|
/**
|
||||||
|
* Skip Consent
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
skip_consent: boolean;
|
||||||
};
|
};
|
||||||
/** MeetingConsentRequest */
|
/** MeetingConsentRequest */
|
||||||
MeetingConsentRequest: {
|
MeetingConsentRequest: {
|
||||||
@@ -1567,6 +1590,11 @@ export interface components {
|
|||||||
/** Name */
|
/** Name */
|
||||||
name: string;
|
name: string;
|
||||||
};
|
};
|
||||||
|
/** ProcessStatus */
|
||||||
|
ProcessStatus: {
|
||||||
|
/** Status */
|
||||||
|
status: string;
|
||||||
|
};
|
||||||
/** Room */
|
/** Room */
|
||||||
Room: {
|
Room: {
|
||||||
/** Id */
|
/** Id */
|
||||||
@@ -1617,6 +1645,11 @@ export interface components {
|
|||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
platform: "whereby" | "daily";
|
platform: "whereby" | "daily";
|
||||||
|
/**
|
||||||
|
* Skip Consent
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
skip_consent: boolean;
|
||||||
};
|
};
|
||||||
/** RoomDetails */
|
/** RoomDetails */
|
||||||
RoomDetails: {
|
RoomDetails: {
|
||||||
@@ -1668,6 +1701,11 @@ export interface components {
|
|||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
platform: "whereby" | "daily";
|
platform: "whereby" | "daily";
|
||||||
|
/**
|
||||||
|
* Skip Consent
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
skip_consent: boolean;
|
||||||
/** Webhook Url */
|
/** Webhook Url */
|
||||||
webhook_url: string | null;
|
webhook_url: string | null;
|
||||||
/** Webhook Secret */
|
/** Webhook Secret */
|
||||||
@@ -1813,6 +1851,19 @@ export interface components {
|
|||||||
/** User Id */
|
/** User Id */
|
||||||
user_id?: string | null;
|
user_id?: string | null;
|
||||||
};
|
};
|
||||||
|
/** TranscriptParticipantWithEmail */
|
||||||
|
TranscriptParticipantWithEmail: {
|
||||||
|
/** Id */
|
||||||
|
id?: string;
|
||||||
|
/** Speaker */
|
||||||
|
speaker: number | null;
|
||||||
|
/** Name */
|
||||||
|
name: string;
|
||||||
|
/** User Id */
|
||||||
|
user_id?: string | null;
|
||||||
|
/** Email */
|
||||||
|
email?: string | null;
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* TranscriptSegment
|
* TranscriptSegment
|
||||||
* @description A single transcript segment with speaker and timing information.
|
* @description A single transcript segment with speaker and timing information.
|
||||||
@@ -1868,6 +1919,8 @@ export interface components {
|
|||||||
ics_enabled?: boolean | null;
|
ics_enabled?: boolean | null;
|
||||||
/** Platform */
|
/** Platform */
|
||||||
platform?: ("whereby" | "daily") | null;
|
platform?: ("whereby" | "daily") | null;
|
||||||
|
/** Skip Consent */
|
||||||
|
skip_consent?: boolean | null;
|
||||||
};
|
};
|
||||||
/** UpdateTranscript */
|
/** UpdateTranscript */
|
||||||
UpdateTranscript: {
|
UpdateTranscript: {
|
||||||
@@ -3362,7 +3415,7 @@ export interface operations {
|
|||||||
[name: string]: unknown;
|
[name: string]: unknown;
|
||||||
};
|
};
|
||||||
content: {
|
content: {
|
||||||
"application/json": unknown;
|
"application/json": components["schemas"]["ProcessStatus"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
/** @description Validation Error */
|
/** @description Validation Error */
|
||||||
|
|||||||
Reference in New Issue
Block a user