mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 12:19:06 +00:00
* feat: better highlight * feat(search): add long_summary to search vector for improved search results - Update search vector to include long_summary with weight B (between title A and webvtt C) - Modify SearchController to fetch long_summary and prioritize its snippets - Generate snippets from long_summary first (max 2), then from webvtt for remaining slots - Add comprehensive tests for long_summary search functionality - Create migration to update search_vector_en column in PostgreSQL This improves search quality by including summarized content which often contains key topics and themes that may not be explicitly mentioned in the transcript. * fix: address code review feedback for search enhancements - Fix test file inconsistencies by removing references to non-existent model fields - Comment out tests for unimplemented features (room_ids, status filters, date ranges) - Update tests to only use currently available fields (room_id singular, no room_name/processing_status) - Mark future functionality tests with @pytest.mark.skip - Make snippet counts configurable - Add LONG_SUMMARY_MAX_SNIPPETS constant (default: 2) - Replace hardcoded value with configurable constant - Improve error handling consistency in WebVTT parsing - Use different log levels for different error types (debug for malformed, warning for decode, error for unexpected) - Add catch-all exception handler for unexpected errors - Include stack trace for critical errors All existing tests pass with these changes. * fix: correct datetime test to include required duration field * feat: better highlight * feat: search room names * feat: acknowledge deleted room * feat: search filters fix and rank removal * chore: minor refactoring * feat: better matches frontend * chore: self-review (vibe) * chore: self-review WIP * chore: self-review WIP * chore: self-review WIP * chore: self-review WIP * chore: self-review WIP * chore: self-review WIP * chore: self-review WIP * remove swc (vibe) * search url query sync (vibe) * search url query sync (vibe) * better casts and cap while * PR review + simplify frontend hook * pr: remove search db timeouts * cleanup tests * tests cleanup * frontend cleanup * index declarations * refactor frontend (self-review) * fix search pagination * clear "x" for search input * pagination max pages fix * chore: cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * lockfile * pr review
1602 lines
27 KiB
TypeScript
1602 lines
27 KiB
TypeScript
// This file is auto-generated by @hey-api/openapi-ts
|
|
|
|
export const $AudioWaveform = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
type: "number",
|
|
},
|
|
type: "array",
|
|
title: "Data",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["data"],
|
|
title: "AudioWaveform",
|
|
} as const;
|
|
|
|
export const $Body_transcript_record_upload_v1_transcripts__transcript_id__record_upload_post =
|
|
{
|
|
properties: {
|
|
chunk: {
|
|
type: "string",
|
|
format: "binary",
|
|
title: "Chunk",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["chunk"],
|
|
title:
|
|
"Body_transcript_record_upload_v1_transcripts__transcript_id__record_upload_post",
|
|
} as const;
|
|
|
|
export const $CreateParticipant = {
|
|
properties: {
|
|
speaker: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Speaker",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["name"],
|
|
title: "CreateParticipant",
|
|
} as const;
|
|
|
|
export const $CreateRoom = {
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
zulip_auto_post: {
|
|
type: "boolean",
|
|
title: "Zulip Auto Post",
|
|
},
|
|
zulip_stream: {
|
|
type: "string",
|
|
title: "Zulip Stream",
|
|
},
|
|
zulip_topic: {
|
|
type: "string",
|
|
title: "Zulip Topic",
|
|
},
|
|
is_locked: {
|
|
type: "boolean",
|
|
title: "Is Locked",
|
|
},
|
|
room_mode: {
|
|
type: "string",
|
|
title: "Room Mode",
|
|
},
|
|
recording_type: {
|
|
type: "string",
|
|
title: "Recording Type",
|
|
},
|
|
recording_trigger: {
|
|
type: "string",
|
|
title: "Recording Trigger",
|
|
},
|
|
is_shared: {
|
|
type: "boolean",
|
|
title: "Is Shared",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"name",
|
|
"zulip_auto_post",
|
|
"zulip_stream",
|
|
"zulip_topic",
|
|
"is_locked",
|
|
"room_mode",
|
|
"recording_type",
|
|
"recording_trigger",
|
|
"is_shared",
|
|
],
|
|
title: "CreateRoom",
|
|
} as const;
|
|
|
|
export const $CreateTranscript = {
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
source_language: {
|
|
type: "string",
|
|
title: "Source Language",
|
|
default: "en",
|
|
},
|
|
target_language: {
|
|
type: "string",
|
|
title: "Target Language",
|
|
default: "en",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["name"],
|
|
title: "CreateTranscript",
|
|
} as const;
|
|
|
|
export const $DeletionStatus = {
|
|
properties: {
|
|
status: {
|
|
type: "string",
|
|
title: "Status",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["status"],
|
|
title: "DeletionStatus",
|
|
} as const;
|
|
|
|
export const $GetTranscript = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
user_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "User Id",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
status: {
|
|
type: "string",
|
|
title: "Status",
|
|
},
|
|
locked: {
|
|
type: "boolean",
|
|
title: "Locked",
|
|
},
|
|
duration: {
|
|
type: "number",
|
|
title: "Duration",
|
|
},
|
|
title: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Title",
|
|
},
|
|
short_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Short Summary",
|
|
},
|
|
long_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Long Summary",
|
|
},
|
|
created_at: {
|
|
type: "string",
|
|
title: "Created At",
|
|
},
|
|
share_mode: {
|
|
type: "string",
|
|
title: "Share Mode",
|
|
default: "private",
|
|
},
|
|
source_language: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Source Language",
|
|
},
|
|
target_language: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Target Language",
|
|
},
|
|
reviewed: {
|
|
type: "boolean",
|
|
title: "Reviewed",
|
|
},
|
|
meeting_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Meeting Id",
|
|
},
|
|
source_kind: {
|
|
$ref: "#/components/schemas/SourceKind",
|
|
},
|
|
room_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Id",
|
|
},
|
|
room_name: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Name",
|
|
},
|
|
audio_deleted: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Audio Deleted",
|
|
},
|
|
participants: {
|
|
anyOf: [
|
|
{
|
|
items: {
|
|
$ref: "#/components/schemas/TranscriptParticipant",
|
|
},
|
|
type: "array",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Participants",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id",
|
|
"user_id",
|
|
"name",
|
|
"status",
|
|
"locked",
|
|
"duration",
|
|
"title",
|
|
"short_summary",
|
|
"long_summary",
|
|
"created_at",
|
|
"source_language",
|
|
"target_language",
|
|
"reviewed",
|
|
"meeting_id",
|
|
"source_kind",
|
|
"participants",
|
|
],
|
|
title: "GetTranscript",
|
|
} as const;
|
|
|
|
export const $GetTranscriptMinimal = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
user_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "User Id",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
status: {
|
|
type: "string",
|
|
title: "Status",
|
|
},
|
|
locked: {
|
|
type: "boolean",
|
|
title: "Locked",
|
|
},
|
|
duration: {
|
|
type: "number",
|
|
title: "Duration",
|
|
},
|
|
title: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Title",
|
|
},
|
|
short_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Short Summary",
|
|
},
|
|
long_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Long Summary",
|
|
},
|
|
created_at: {
|
|
type: "string",
|
|
title: "Created At",
|
|
},
|
|
share_mode: {
|
|
type: "string",
|
|
title: "Share Mode",
|
|
default: "private",
|
|
},
|
|
source_language: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Source Language",
|
|
},
|
|
target_language: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Target Language",
|
|
},
|
|
reviewed: {
|
|
type: "boolean",
|
|
title: "Reviewed",
|
|
},
|
|
meeting_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Meeting Id",
|
|
},
|
|
source_kind: {
|
|
$ref: "#/components/schemas/SourceKind",
|
|
},
|
|
room_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Id",
|
|
},
|
|
room_name: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Name",
|
|
},
|
|
audio_deleted: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Audio Deleted",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id",
|
|
"user_id",
|
|
"name",
|
|
"status",
|
|
"locked",
|
|
"duration",
|
|
"title",
|
|
"short_summary",
|
|
"long_summary",
|
|
"created_at",
|
|
"source_language",
|
|
"target_language",
|
|
"reviewed",
|
|
"meeting_id",
|
|
"source_kind",
|
|
],
|
|
title: "GetTranscriptMinimal",
|
|
} as const;
|
|
|
|
export const $GetTranscriptSegmentTopic = {
|
|
properties: {
|
|
text: {
|
|
type: "string",
|
|
title: "Text",
|
|
},
|
|
start: {
|
|
type: "number",
|
|
title: "Start",
|
|
},
|
|
speaker: {
|
|
type: "integer",
|
|
title: "Speaker",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["text", "start", "speaker"],
|
|
title: "GetTranscriptSegmentTopic",
|
|
} as const;
|
|
|
|
export const $GetTranscriptTopic = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
title: {
|
|
type: "string",
|
|
title: "Title",
|
|
},
|
|
summary: {
|
|
type: "string",
|
|
title: "Summary",
|
|
},
|
|
timestamp: {
|
|
type: "number",
|
|
title: "Timestamp",
|
|
},
|
|
duration: {
|
|
anyOf: [
|
|
{
|
|
type: "number",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Duration",
|
|
},
|
|
transcript: {
|
|
type: "string",
|
|
title: "Transcript",
|
|
},
|
|
segments: {
|
|
items: {
|
|
$ref: "#/components/schemas/GetTranscriptSegmentTopic",
|
|
},
|
|
type: "array",
|
|
title: "Segments",
|
|
default: [],
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["id", "title", "summary", "timestamp", "duration", "transcript"],
|
|
title: "GetTranscriptTopic",
|
|
} as const;
|
|
|
|
export const $GetTranscriptTopicWithWords = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
title: {
|
|
type: "string",
|
|
title: "Title",
|
|
},
|
|
summary: {
|
|
type: "string",
|
|
title: "Summary",
|
|
},
|
|
timestamp: {
|
|
type: "number",
|
|
title: "Timestamp",
|
|
},
|
|
duration: {
|
|
anyOf: [
|
|
{
|
|
type: "number",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Duration",
|
|
},
|
|
transcript: {
|
|
type: "string",
|
|
title: "Transcript",
|
|
},
|
|
segments: {
|
|
items: {
|
|
$ref: "#/components/schemas/GetTranscriptSegmentTopic",
|
|
},
|
|
type: "array",
|
|
title: "Segments",
|
|
default: [],
|
|
},
|
|
words: {
|
|
items: {
|
|
$ref: "#/components/schemas/Word",
|
|
},
|
|
type: "array",
|
|
title: "Words",
|
|
default: [],
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["id", "title", "summary", "timestamp", "duration", "transcript"],
|
|
title: "GetTranscriptTopicWithWords",
|
|
} as const;
|
|
|
|
export const $GetTranscriptTopicWithWordsPerSpeaker = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
title: {
|
|
type: "string",
|
|
title: "Title",
|
|
},
|
|
summary: {
|
|
type: "string",
|
|
title: "Summary",
|
|
},
|
|
timestamp: {
|
|
type: "number",
|
|
title: "Timestamp",
|
|
},
|
|
duration: {
|
|
anyOf: [
|
|
{
|
|
type: "number",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Duration",
|
|
},
|
|
transcript: {
|
|
type: "string",
|
|
title: "Transcript",
|
|
},
|
|
segments: {
|
|
items: {
|
|
$ref: "#/components/schemas/GetTranscriptSegmentTopic",
|
|
},
|
|
type: "array",
|
|
title: "Segments",
|
|
default: [],
|
|
},
|
|
words_per_speaker: {
|
|
items: {
|
|
$ref: "#/components/schemas/SpeakerWords",
|
|
},
|
|
type: "array",
|
|
title: "Words Per Speaker",
|
|
default: [],
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["id", "title", "summary", "timestamp", "duration", "transcript"],
|
|
title: "GetTranscriptTopicWithWordsPerSpeaker",
|
|
} as const;
|
|
|
|
export const $HTTPValidationError = {
|
|
properties: {
|
|
detail: {
|
|
items: {
|
|
$ref: "#/components/schemas/ValidationError",
|
|
},
|
|
type: "array",
|
|
title: "Detail",
|
|
},
|
|
},
|
|
type: "object",
|
|
title: "HTTPValidationError",
|
|
} as const;
|
|
|
|
export const $Meeting = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
room_name: {
|
|
type: "string",
|
|
title: "Room Name",
|
|
},
|
|
room_url: {
|
|
type: "string",
|
|
title: "Room Url",
|
|
},
|
|
host_room_url: {
|
|
type: "string",
|
|
title: "Host Room Url",
|
|
},
|
|
start_date: {
|
|
type: "string",
|
|
format: "date-time",
|
|
title: "Start Date",
|
|
},
|
|
end_date: {
|
|
type: "string",
|
|
format: "date-time",
|
|
title: "End Date",
|
|
},
|
|
recording_type: {
|
|
type: "string",
|
|
enum: ["none", "local", "cloud"],
|
|
title: "Recording Type",
|
|
default: "cloud",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id",
|
|
"room_name",
|
|
"room_url",
|
|
"host_room_url",
|
|
"start_date",
|
|
"end_date",
|
|
],
|
|
title: "Meeting",
|
|
} as const;
|
|
|
|
export const $MeetingConsentRequest = {
|
|
properties: {
|
|
consent_given: {
|
|
type: "boolean",
|
|
title: "Consent Given",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["consent_given"],
|
|
title: "MeetingConsentRequest",
|
|
} as const;
|
|
|
|
export const $Page_GetTranscriptMinimal_ = {
|
|
properties: {
|
|
items: {
|
|
items: {
|
|
$ref: "#/components/schemas/GetTranscriptMinimal",
|
|
},
|
|
type: "array",
|
|
title: "Items",
|
|
},
|
|
total: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Total",
|
|
},
|
|
page: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 1,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Page",
|
|
},
|
|
size: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 1,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Size",
|
|
},
|
|
pages: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Pages",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["items", "page", "size"],
|
|
title: "Page[GetTranscriptMinimal]",
|
|
} as const;
|
|
|
|
export const $Page_Room_ = {
|
|
properties: {
|
|
items: {
|
|
items: {
|
|
$ref: "#/components/schemas/Room",
|
|
},
|
|
type: "array",
|
|
title: "Items",
|
|
},
|
|
total: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Total",
|
|
},
|
|
page: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 1,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Page",
|
|
},
|
|
size: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 1,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Size",
|
|
},
|
|
pages: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Pages",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["items", "page", "size"],
|
|
title: "Page[Room]",
|
|
} as const;
|
|
|
|
export const $Participant = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
speaker: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Speaker",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["id", "speaker", "name"],
|
|
title: "Participant",
|
|
} as const;
|
|
|
|
export const $Room = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
user_id: {
|
|
type: "string",
|
|
title: "User Id",
|
|
},
|
|
created_at: {
|
|
type: "string",
|
|
format: "date-time",
|
|
title: "Created At",
|
|
},
|
|
zulip_auto_post: {
|
|
type: "boolean",
|
|
title: "Zulip Auto Post",
|
|
},
|
|
zulip_stream: {
|
|
type: "string",
|
|
title: "Zulip Stream",
|
|
},
|
|
zulip_topic: {
|
|
type: "string",
|
|
title: "Zulip Topic",
|
|
},
|
|
is_locked: {
|
|
type: "boolean",
|
|
title: "Is Locked",
|
|
},
|
|
room_mode: {
|
|
type: "string",
|
|
title: "Room Mode",
|
|
},
|
|
recording_type: {
|
|
type: "string",
|
|
title: "Recording Type",
|
|
},
|
|
recording_trigger: {
|
|
type: "string",
|
|
title: "Recording Trigger",
|
|
},
|
|
is_shared: {
|
|
type: "boolean",
|
|
title: "Is Shared",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id",
|
|
"name",
|
|
"user_id",
|
|
"created_at",
|
|
"zulip_auto_post",
|
|
"zulip_stream",
|
|
"zulip_topic",
|
|
"is_locked",
|
|
"room_mode",
|
|
"recording_type",
|
|
"recording_trigger",
|
|
"is_shared",
|
|
],
|
|
title: "Room",
|
|
} as const;
|
|
|
|
export const $RtcOffer = {
|
|
properties: {
|
|
sdp: {
|
|
type: "string",
|
|
title: "Sdp",
|
|
},
|
|
type: {
|
|
type: "string",
|
|
title: "Type",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["sdp", "type"],
|
|
title: "RtcOffer",
|
|
} as const;
|
|
|
|
export const $SearchResponse = {
|
|
properties: {
|
|
results: {
|
|
items: {
|
|
$ref: "#/components/schemas/SearchResult",
|
|
},
|
|
type: "array",
|
|
title: "Results",
|
|
},
|
|
total: {
|
|
type: "integer",
|
|
minimum: 0,
|
|
title: "Total",
|
|
description: "Total number of search results",
|
|
},
|
|
query: {
|
|
type: "string",
|
|
minLength: 0,
|
|
title: "Query",
|
|
description: "Search query text",
|
|
},
|
|
limit: {
|
|
type: "integer",
|
|
maximum: 100,
|
|
minimum: 1,
|
|
title: "Limit",
|
|
description: "Results per page",
|
|
},
|
|
offset: {
|
|
type: "integer",
|
|
minimum: 0,
|
|
title: "Offset",
|
|
description: "Number of results to skip",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["results", "total", "query", "limit", "offset"],
|
|
title: "SearchResponse",
|
|
} as const;
|
|
|
|
export const $SearchResult = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
minLength: 1,
|
|
title: "Id",
|
|
},
|
|
title: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Title",
|
|
},
|
|
user_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "User Id",
|
|
},
|
|
room_id: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Id",
|
|
},
|
|
room_name: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Room Name",
|
|
},
|
|
source_kind: {
|
|
$ref: "#/components/schemas/SourceKind",
|
|
},
|
|
created_at: {
|
|
type: "string",
|
|
title: "Created At",
|
|
},
|
|
status: {
|
|
type: "string",
|
|
minLength: 1,
|
|
title: "Status",
|
|
},
|
|
rank: {
|
|
type: "number",
|
|
maximum: 1,
|
|
minimum: 0,
|
|
title: "Rank",
|
|
},
|
|
duration: {
|
|
anyOf: [
|
|
{
|
|
type: "number",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Duration",
|
|
description: "Duration in seconds",
|
|
},
|
|
search_snippets: {
|
|
items: {
|
|
type: "string",
|
|
},
|
|
type: "array",
|
|
title: "Search Snippets",
|
|
description: "Text snippets around search matches",
|
|
},
|
|
total_match_count: {
|
|
type: "integer",
|
|
minimum: 0,
|
|
title: "Total Match Count",
|
|
description: "Total number of matches found in the transcript",
|
|
default: 0,
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"id",
|
|
"source_kind",
|
|
"created_at",
|
|
"status",
|
|
"rank",
|
|
"duration",
|
|
"search_snippets",
|
|
],
|
|
title: "SearchResult",
|
|
description: "Public search result model with computed fields.",
|
|
} as const;
|
|
|
|
export const $SourceKind = {
|
|
type: "string",
|
|
enum: ["room", "live", "file"],
|
|
title: "SourceKind",
|
|
} as const;
|
|
|
|
export const $SpeakerAssignment = {
|
|
properties: {
|
|
speaker: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
minimum: 0,
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Speaker",
|
|
},
|
|
participant: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Participant",
|
|
},
|
|
timestamp_from: {
|
|
type: "number",
|
|
title: "Timestamp From",
|
|
},
|
|
timestamp_to: {
|
|
type: "number",
|
|
title: "Timestamp To",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["timestamp_from", "timestamp_to"],
|
|
title: "SpeakerAssignment",
|
|
} as const;
|
|
|
|
export const $SpeakerAssignmentStatus = {
|
|
properties: {
|
|
status: {
|
|
type: "string",
|
|
title: "Status",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["status"],
|
|
title: "SpeakerAssignmentStatus",
|
|
} as const;
|
|
|
|
export const $SpeakerMerge = {
|
|
properties: {
|
|
speaker_from: {
|
|
type: "integer",
|
|
title: "Speaker From",
|
|
},
|
|
speaker_to: {
|
|
type: "integer",
|
|
title: "Speaker To",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["speaker_from", "speaker_to"],
|
|
title: "SpeakerMerge",
|
|
} as const;
|
|
|
|
export const $SpeakerWords = {
|
|
properties: {
|
|
speaker: {
|
|
type: "integer",
|
|
title: "Speaker",
|
|
},
|
|
words: {
|
|
items: {
|
|
$ref: "#/components/schemas/Word",
|
|
},
|
|
type: "array",
|
|
title: "Words",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["speaker", "words"],
|
|
title: "SpeakerWords",
|
|
} as const;
|
|
|
|
export const $Stream = {
|
|
properties: {
|
|
stream_id: {
|
|
type: "integer",
|
|
title: "Stream Id",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["stream_id", "name"],
|
|
title: "Stream",
|
|
} as const;
|
|
|
|
export const $Topic = {
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["name"],
|
|
title: "Topic",
|
|
} as const;
|
|
|
|
export const $TranscriptParticipant = {
|
|
properties: {
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
speaker: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Speaker",
|
|
},
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["speaker", "name"],
|
|
title: "TranscriptParticipant",
|
|
} as const;
|
|
|
|
export const $UpdateParticipant = {
|
|
properties: {
|
|
speaker: {
|
|
anyOf: [
|
|
{
|
|
type: "integer",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Speaker",
|
|
},
|
|
name: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Name",
|
|
},
|
|
},
|
|
type: "object",
|
|
title: "UpdateParticipant",
|
|
} as const;
|
|
|
|
export const $UpdateRoom = {
|
|
properties: {
|
|
name: {
|
|
type: "string",
|
|
title: "Name",
|
|
},
|
|
zulip_auto_post: {
|
|
type: "boolean",
|
|
title: "Zulip Auto Post",
|
|
},
|
|
zulip_stream: {
|
|
type: "string",
|
|
title: "Zulip Stream",
|
|
},
|
|
zulip_topic: {
|
|
type: "string",
|
|
title: "Zulip Topic",
|
|
},
|
|
is_locked: {
|
|
type: "boolean",
|
|
title: "Is Locked",
|
|
},
|
|
room_mode: {
|
|
type: "string",
|
|
title: "Room Mode",
|
|
},
|
|
recording_type: {
|
|
type: "string",
|
|
title: "Recording Type",
|
|
},
|
|
recording_trigger: {
|
|
type: "string",
|
|
title: "Recording Trigger",
|
|
},
|
|
is_shared: {
|
|
type: "boolean",
|
|
title: "Is Shared",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: [
|
|
"name",
|
|
"zulip_auto_post",
|
|
"zulip_stream",
|
|
"zulip_topic",
|
|
"is_locked",
|
|
"room_mode",
|
|
"recording_type",
|
|
"recording_trigger",
|
|
"is_shared",
|
|
],
|
|
title: "UpdateRoom",
|
|
} as const;
|
|
|
|
export const $UpdateTranscript = {
|
|
properties: {
|
|
name: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Name",
|
|
},
|
|
locked: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Locked",
|
|
},
|
|
title: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Title",
|
|
},
|
|
short_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Short Summary",
|
|
},
|
|
long_summary: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Long Summary",
|
|
},
|
|
share_mode: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
enum: ["public", "semi-private", "private"],
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Share Mode",
|
|
},
|
|
participants: {
|
|
anyOf: [
|
|
{
|
|
items: {
|
|
$ref: "#/components/schemas/TranscriptParticipant",
|
|
},
|
|
type: "array",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Participants",
|
|
},
|
|
reviewed: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Reviewed",
|
|
},
|
|
audio_deleted: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Audio Deleted",
|
|
},
|
|
},
|
|
type: "object",
|
|
title: "UpdateTranscript",
|
|
} as const;
|
|
|
|
export const $UserInfo = {
|
|
properties: {
|
|
sub: {
|
|
type: "string",
|
|
title: "Sub",
|
|
},
|
|
email: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Email",
|
|
},
|
|
email_verified: {
|
|
anyOf: [
|
|
{
|
|
type: "boolean",
|
|
},
|
|
{
|
|
type: "null",
|
|
},
|
|
],
|
|
title: "Email Verified",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["sub", "email", "email_verified"],
|
|
title: "UserInfo",
|
|
} as const;
|
|
|
|
export const $ValidationError = {
|
|
properties: {
|
|
loc: {
|
|
items: {
|
|
anyOf: [
|
|
{
|
|
type: "string",
|
|
},
|
|
{
|
|
type: "integer",
|
|
},
|
|
],
|
|
},
|
|
type: "array",
|
|
title: "Location",
|
|
},
|
|
msg: {
|
|
type: "string",
|
|
title: "Message",
|
|
},
|
|
type: {
|
|
type: "string",
|
|
title: "Error Type",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["loc", "msg", "type"],
|
|
title: "ValidationError",
|
|
} as const;
|
|
|
|
export const $WherebyWebhookEvent = {
|
|
properties: {
|
|
apiVersion: {
|
|
type: "string",
|
|
title: "Apiversion",
|
|
},
|
|
id: {
|
|
type: "string",
|
|
title: "Id",
|
|
},
|
|
createdAt: {
|
|
type: "string",
|
|
format: "date-time",
|
|
title: "Createdat",
|
|
},
|
|
type: {
|
|
type: "string",
|
|
title: "Type",
|
|
},
|
|
data: {
|
|
additionalProperties: true,
|
|
type: "object",
|
|
title: "Data",
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["apiVersion", "id", "createdAt", "type", "data"],
|
|
title: "WherebyWebhookEvent",
|
|
} as const;
|
|
|
|
export const $Word = {
|
|
properties: {
|
|
text: {
|
|
type: "string",
|
|
title: "Text",
|
|
},
|
|
start: {
|
|
type: "number",
|
|
minimum: 0,
|
|
title: "Start",
|
|
description: "Time in seconds with float part",
|
|
},
|
|
end: {
|
|
type: "number",
|
|
minimum: 0,
|
|
title: "End",
|
|
description: "Time in seconds with float part",
|
|
},
|
|
speaker: {
|
|
type: "integer",
|
|
title: "Speaker",
|
|
default: 0,
|
|
},
|
|
},
|
|
type: "object",
|
|
required: ["text", "start", "end"],
|
|
title: "Word",
|
|
} as const;
|