diff --git a/frontend/src/client/index.ts b/frontend/src/client/index.ts index b63063e..4f5b1a5 100644 --- a/frontend/src/client/index.ts +++ b/frontend/src/client/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export { analyzePosApiPosPost, createGenerationJobApiGeneratePost, getArticleBffArticlesArticleIdGet, getJobApiJobsJobIdGet, getJobsApiJobsGet, getMediaFileMediaFilenameGet, getUserProfileBffUserProfileGet, healthHealthGet, listArticlesBffArticlesGet, loginAuthLoginPost, type Options, regenerateAudioApiJobsJobIdRegenerateAudioPost, registerAuthRegisterPost, translateTextApiTranslateGet, upsertLearnableLanguageApiLearnableLanguagesPost } from './sdk.gen'; -export type { AnalyzePosApiPosPostData, AnalyzePosApiPosPostError, AnalyzePosApiPosPostErrors, AnalyzePosApiPosPostResponse, AnalyzePosApiPosPostResponses, ArticleDetail, ArticleItem, ArticleListResponse, ClientOptions, CreateGenerationJobApiGeneratePostData, CreateGenerationJobApiGeneratePostError, CreateGenerationJobApiGeneratePostErrors, CreateGenerationJobApiGeneratePostResponse, CreateGenerationJobApiGeneratePostResponses, GenerationRequest, GenerationResponse, GetArticleBffArticlesArticleIdGetData, GetArticleBffArticlesArticleIdGetError, GetArticleBffArticlesArticleIdGetErrors, GetArticleBffArticlesArticleIdGetResponse, GetArticleBffArticlesArticleIdGetResponses, GetJobApiJobsJobIdGetData, GetJobApiJobsJobIdGetError, GetJobApiJobsJobIdGetErrors, GetJobApiJobsJobIdGetResponse, GetJobApiJobsJobIdGetResponses, GetJobsApiJobsGetData, GetJobsApiJobsGetResponse, GetJobsApiJobsGetResponses, GetMediaFileMediaFilenameGetData, GetMediaFileMediaFilenameGetError, GetMediaFileMediaFilenameGetErrors, GetMediaFileMediaFilenameGetResponses, GetUserProfileBffUserProfileGetData, GetUserProfileBffUserProfileGetResponse, GetUserProfileBffUserProfileGetResponses, HealthHealthGetData, HealthHealthGetResponse, HealthHealthGetResponses, HttpValidationError, JobListResponse, JobResponse, JobSummary, LearnableLanguageItem, LearnableLanguageRequest, LearnableLanguageResponse, ListArticlesBffArticlesGetData, ListArticlesBffArticlesGetError, ListArticlesBffArticlesGetErrors, ListArticlesBffArticlesGetResponse, ListArticlesBffArticlesGetResponses, LoginAuthLoginPostData, LoginAuthLoginPostError, LoginAuthLoginPostErrors, LoginAuthLoginPostResponse, LoginAuthLoginPostResponses, LoginRequest, PosRequest, PosResponse, RegenerateAudioApiJobsJobIdRegenerateAudioPostData, RegenerateAudioApiJobsJobIdRegenerateAudioPostError, RegenerateAudioApiJobsJobIdRegenerateAudioPostErrors, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponse, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponses, RegisterAuthRegisterPostData, RegisterAuthRegisterPostError, RegisterAuthRegisterPostErrors, RegisterAuthRegisterPostResponses, RegisterRequest, TokenInfo, TokenResponse, TranslateTextApiTranslateGetData, TranslateTextApiTranslateGetError, TranslateTextApiTranslateGetErrors, TranslateTextApiTranslateGetResponse, TranslateTextApiTranslateGetResponses, TranslationResponse, UpsertLearnableLanguageApiLearnableLanguagesPostData, UpsertLearnableLanguageApiLearnableLanguagesPostError, UpsertLearnableLanguageApiLearnableLanguagesPostErrors, UpsertLearnableLanguageApiLearnableLanguagesPostResponse, UpsertLearnableLanguageApiLearnableLanguagesPostResponses, UserProfileResponse, ValidationError } from './types.gen'; +export { addFromTokenApiVocabFromTokenPost, addLearnableLanguageApiAccountLearnableLanguagesPost, addWordApiVocabPost, analyzePosApiPosPost, completeOnboardingApiAccountOnboardingPost, createGenerationJobApiGeneratePost, generateFlashcardsApiVocabEntryIdFlashcardsPost, getAccountBffAccountGet, getAccountStatusApiAccountStatusGet, getArticleBffArticlesArticleIdGet, getJobApiJobsJobIdGet, getJobsApiJobsGet, getMediaFileMediaFilenameGet, getOnboardingBffAccountOnboardingGet, getUserProfileBffUserProfileGet, healthHealthGet, listArticlesBffArticlesGet, listEntriesApiVocabGet, listFlashcardsApiFlashcardsGet, loginApiAuthLoginPost, type Options, pendingDisambiguationApiVocabPendingDisambiguationGet, recordEventApiFlashcardsFlashcardIdEventsPost, regenerateAudioApiJobsJobIdRegenerateAudioPost, registerApiAuthRegisterPost, removeLearnableLanguageApiAccountLearnableLanguagesLanguageIdDelete, resolveSenseApiVocabEntryIdSensePatch, translateTextApiTranslateGet, upsertLearnableLanguageApiLearnableLanguagesPost, verifyEmailApiAuthVerifyEmailGet } from './sdk.gen'; +export type { AccountLanguagePair, AccountResponse, AccountStatusResponse, AddFromTokenApiVocabFromTokenPostData, AddFromTokenApiVocabFromTokenPostError, AddFromTokenApiVocabFromTokenPostErrors, AddFromTokenApiVocabFromTokenPostResponse, AddFromTokenApiVocabFromTokenPostResponses, AddFromTokenRequest, AddLearnableLanguageApiAccountLearnableLanguagesPostData, AddLearnableLanguageApiAccountLearnableLanguagesPostError, AddLearnableLanguageApiAccountLearnableLanguagesPostErrors, AddLearnableLanguageApiAccountLearnableLanguagesPostResponse, AddLearnableLanguageApiAccountLearnableLanguagesPostResponses, AddLearnableLanguageRequest, AddWordApiVocabPostData, AddWordApiVocabPostError, AddWordApiVocabPostErrors, AddWordApiVocabPostResponse, AddWordApiVocabPostResponses, AddWordRequest, AnalyzePosApiPosPostData, AnalyzePosApiPosPostError, AnalyzePosApiPosPostErrors, AnalyzePosApiPosPostResponse, AnalyzePosApiPosPostResponses, ArticleDetail, ArticleItem, ArticleListResponse, ClientOptions, CompleteOnboardingApiAccountOnboardingPostData, CompleteOnboardingApiAccountOnboardingPostError, CompleteOnboardingApiAccountOnboardingPostErrors, CompleteOnboardingApiAccountOnboardingPostResponse, CompleteOnboardingApiAccountOnboardingPostResponses, CreateGenerationJobApiGeneratePostData, CreateGenerationJobApiGeneratePostError, CreateGenerationJobApiGeneratePostErrors, CreateGenerationJobApiGeneratePostResponse, CreateGenerationJobApiGeneratePostResponses, FlashcardEventResponse, FlashcardResponse, FromTokenResponse, GenerateFlashcardsApiVocabEntryIdFlashcardsPostData, GenerateFlashcardsApiVocabEntryIdFlashcardsPostError, GenerateFlashcardsApiVocabEntryIdFlashcardsPostErrors, GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponse, GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponses, GenerateFlashcardsRequest, GenerationRequest, GenerationResponse, GetAccountBffAccountGetData, GetAccountBffAccountGetResponse, GetAccountBffAccountGetResponses, GetAccountStatusApiAccountStatusGetData, GetAccountStatusApiAccountStatusGetResponse, GetAccountStatusApiAccountStatusGetResponses, GetArticleBffArticlesArticleIdGetData, GetArticleBffArticlesArticleIdGetError, GetArticleBffArticlesArticleIdGetErrors, GetArticleBffArticlesArticleIdGetResponse, GetArticleBffArticlesArticleIdGetResponses, GetJobApiJobsJobIdGetData, GetJobApiJobsJobIdGetError, GetJobApiJobsJobIdGetErrors, GetJobApiJobsJobIdGetResponse, GetJobApiJobsJobIdGetResponses, GetJobsApiJobsGetData, GetJobsApiJobsGetResponse, GetJobsApiJobsGetResponses, GetMediaFileMediaFilenameGetData, GetMediaFileMediaFilenameGetError, GetMediaFileMediaFilenameGetErrors, GetMediaFileMediaFilenameGetResponses, GetOnboardingBffAccountOnboardingGetData, GetOnboardingBffAccountOnboardingGetResponse, GetOnboardingBffAccountOnboardingGetResponses, GetUserProfileBffUserProfileGetData, GetUserProfileBffUserProfileGetResponse, GetUserProfileBffUserProfileGetResponses, HealthHealthGetData, HealthHealthGetResponse, HealthHealthGetResponses, HttpValidationError, JobListResponse, JobResponse, JobSummary, LanguagePairOption, LearnableLanguageItem, LearnableLanguageRequest, LearnableLanguageResponse, ListArticlesBffArticlesGetData, ListArticlesBffArticlesGetError, ListArticlesBffArticlesGetErrors, ListArticlesBffArticlesGetResponse, ListArticlesBffArticlesGetResponses, ListEntriesApiVocabGetData, ListEntriesApiVocabGetError, ListEntriesApiVocabGetErrors, ListEntriesApiVocabGetResponse, ListEntriesApiVocabGetResponses, ListFlashcardsApiFlashcardsGetData, ListFlashcardsApiFlashcardsGetResponse, ListFlashcardsApiFlashcardsGetResponses, LoginApiAuthLoginPostData, LoginApiAuthLoginPostError, LoginApiAuthLoginPostErrors, LoginApiAuthLoginPostResponse, LoginApiAuthLoginPostResponses, LoginRequest, OnboardingRequest, OnboardingResponse, PendingDisambiguationApiVocabPendingDisambiguationGetData, PendingDisambiguationApiVocabPendingDisambiguationGetResponse, PendingDisambiguationApiVocabPendingDisambiguationGetResponses, PosRequest, PosResponse, ProficiencyOption, RecordEventApiFlashcardsFlashcardIdEventsPostData, RecordEventApiFlashcardsFlashcardIdEventsPostError, RecordEventApiFlashcardsFlashcardIdEventsPostErrors, RecordEventApiFlashcardsFlashcardIdEventsPostResponse, RecordEventApiFlashcardsFlashcardIdEventsPostResponses, RecordEventRequest, RegenerateAudioApiJobsJobIdRegenerateAudioPostData, RegenerateAudioApiJobsJobIdRegenerateAudioPostError, RegenerateAudioApiJobsJobIdRegenerateAudioPostErrors, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponse, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponses, RegisterApiAuthRegisterPostData, RegisterApiAuthRegisterPostError, RegisterApiAuthRegisterPostErrors, RegisterApiAuthRegisterPostResponse, RegisterApiAuthRegisterPostResponses, RegisterRequest, RegisterResponse, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteData, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteError, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteErrors, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponse, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponses, ResolveSenseApiVocabEntryIdSensePatchData, ResolveSenseApiVocabEntryIdSensePatchError, ResolveSenseApiVocabEntryIdSensePatchErrors, ResolveSenseApiVocabEntryIdSensePatchResponse, ResolveSenseApiVocabEntryIdSensePatchResponses, SenseCandidateResponse, SetSenseRequest, TokenInfo, TokenResponse, TranslateTextApiTranslateGetData, TranslateTextApiTranslateGetError, TranslateTextApiTranslateGetErrors, TranslateTextApiTranslateGetResponse, TranslateTextApiTranslateGetResponses, TranslationResponse, UpsertLearnableLanguageApiLearnableLanguagesPostData, UpsertLearnableLanguageApiLearnableLanguagesPostError, UpsertLearnableLanguageApiLearnableLanguagesPostErrors, UpsertLearnableLanguageApiLearnableLanguagesPostResponse, UpsertLearnableLanguageApiLearnableLanguagesPostResponses, UserProfileResponse, ValidationError, VerifyEmailApiAuthVerifyEmailGetData, VerifyEmailApiAuthVerifyEmailGetError, VerifyEmailApiAuthVerifyEmailGetErrors, VerifyEmailApiAuthVerifyEmailGetResponse, VerifyEmailApiAuthVerifyEmailGetResponses, WordBankEntryResponse } from './types.gen'; diff --git a/frontend/src/client/sdk.gen.ts b/frontend/src/client/sdk.gen.ts index 2608a20..9455db8 100644 --- a/frontend/src/client/sdk.gen.ts +++ b/frontend/src/client/sdk.gen.ts @@ -2,7 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import type { AnalyzePosApiPosPostData, AnalyzePosApiPosPostErrors, AnalyzePosApiPosPostResponses, CreateGenerationJobApiGeneratePostData, CreateGenerationJobApiGeneratePostErrors, CreateGenerationJobApiGeneratePostResponses, GetArticleBffArticlesArticleIdGetData, GetArticleBffArticlesArticleIdGetErrors, GetArticleBffArticlesArticleIdGetResponses, GetJobApiJobsJobIdGetData, GetJobApiJobsJobIdGetErrors, GetJobApiJobsJobIdGetResponses, GetJobsApiJobsGetData, GetJobsApiJobsGetResponses, GetMediaFileMediaFilenameGetData, GetMediaFileMediaFilenameGetErrors, GetMediaFileMediaFilenameGetResponses, GetUserProfileBffUserProfileGetData, GetUserProfileBffUserProfileGetResponses, HealthHealthGetData, HealthHealthGetResponses, ListArticlesBffArticlesGetData, ListArticlesBffArticlesGetErrors, ListArticlesBffArticlesGetResponses, LoginAuthLoginPostData, LoginAuthLoginPostErrors, LoginAuthLoginPostResponses, RegenerateAudioApiJobsJobIdRegenerateAudioPostData, RegenerateAudioApiJobsJobIdRegenerateAudioPostErrors, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponses, RegisterAuthRegisterPostData, RegisterAuthRegisterPostErrors, RegisterAuthRegisterPostResponses, TranslateTextApiTranslateGetData, TranslateTextApiTranslateGetErrors, TranslateTextApiTranslateGetResponses, UpsertLearnableLanguageApiLearnableLanguagesPostData, UpsertLearnableLanguageApiLearnableLanguagesPostErrors, UpsertLearnableLanguageApiLearnableLanguagesPostResponses } from './types.gen'; +import type { AddFromTokenApiVocabFromTokenPostData, AddFromTokenApiVocabFromTokenPostErrors, AddFromTokenApiVocabFromTokenPostResponses, AddLearnableLanguageApiAccountLearnableLanguagesPostData, AddLearnableLanguageApiAccountLearnableLanguagesPostErrors, AddLearnableLanguageApiAccountLearnableLanguagesPostResponses, AddWordApiVocabPostData, AddWordApiVocabPostErrors, AddWordApiVocabPostResponses, AnalyzePosApiPosPostData, AnalyzePosApiPosPostErrors, AnalyzePosApiPosPostResponses, CompleteOnboardingApiAccountOnboardingPostData, CompleteOnboardingApiAccountOnboardingPostErrors, CompleteOnboardingApiAccountOnboardingPostResponses, CreateGenerationJobApiGeneratePostData, CreateGenerationJobApiGeneratePostErrors, CreateGenerationJobApiGeneratePostResponses, GenerateFlashcardsApiVocabEntryIdFlashcardsPostData, GenerateFlashcardsApiVocabEntryIdFlashcardsPostErrors, GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponses, GetAccountBffAccountGetData, GetAccountBffAccountGetResponses, GetAccountStatusApiAccountStatusGetData, GetAccountStatusApiAccountStatusGetResponses, GetArticleBffArticlesArticleIdGetData, GetArticleBffArticlesArticleIdGetErrors, GetArticleBffArticlesArticleIdGetResponses, GetJobApiJobsJobIdGetData, GetJobApiJobsJobIdGetErrors, GetJobApiJobsJobIdGetResponses, GetJobsApiJobsGetData, GetJobsApiJobsGetResponses, GetMediaFileMediaFilenameGetData, GetMediaFileMediaFilenameGetErrors, GetMediaFileMediaFilenameGetResponses, GetOnboardingBffAccountOnboardingGetData, GetOnboardingBffAccountOnboardingGetResponses, GetUserProfileBffUserProfileGetData, GetUserProfileBffUserProfileGetResponses, HealthHealthGetData, HealthHealthGetResponses, ListArticlesBffArticlesGetData, ListArticlesBffArticlesGetErrors, ListArticlesBffArticlesGetResponses, ListEntriesApiVocabGetData, ListEntriesApiVocabGetErrors, ListEntriesApiVocabGetResponses, ListFlashcardsApiFlashcardsGetData, ListFlashcardsApiFlashcardsGetResponses, LoginApiAuthLoginPostData, LoginApiAuthLoginPostErrors, LoginApiAuthLoginPostResponses, PendingDisambiguationApiVocabPendingDisambiguationGetData, PendingDisambiguationApiVocabPendingDisambiguationGetResponses, RecordEventApiFlashcardsFlashcardIdEventsPostData, RecordEventApiFlashcardsFlashcardIdEventsPostErrors, RecordEventApiFlashcardsFlashcardIdEventsPostResponses, RegenerateAudioApiJobsJobIdRegenerateAudioPostData, RegenerateAudioApiJobsJobIdRegenerateAudioPostErrors, RegenerateAudioApiJobsJobIdRegenerateAudioPostResponses, RegisterApiAuthRegisterPostData, RegisterApiAuthRegisterPostErrors, RegisterApiAuthRegisterPostResponses, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteData, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteErrors, RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponses, ResolveSenseApiVocabEntryIdSensePatchData, ResolveSenseApiVocabEntryIdSensePatchErrors, ResolveSenseApiVocabEntryIdSensePatchResponses, TranslateTextApiTranslateGetData, TranslateTextApiTranslateGetErrors, TranslateTextApiTranslateGetResponses, UpsertLearnableLanguageApiLearnableLanguagesPostData, UpsertLearnableLanguageApiLearnableLanguagesPostErrors, UpsertLearnableLanguageApiLearnableLanguagesPostResponses, VerifyEmailApiAuthVerifyEmailGetData, VerifyEmailApiAuthVerifyEmailGetErrors, VerifyEmailApiAuthVerifyEmailGetResponses } from './types.gen'; export type Options = Options2 & { /** @@ -18,6 +18,114 @@ export type Options; }; +/** + * Register + */ +export const registerApiAuthRegisterPost = (options: Options) => (options.client ?? client).post({ + url: '/api/auth/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Login + */ +export const loginApiAuthLoginPost = (options: Options) => (options.client ?? client).post({ + url: '/api/auth/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Verify Email + */ +export const verifyEmailApiAuthVerifyEmailGet = (options: Options) => (options.client ?? client).get({ url: '/api/auth/verify-email', ...options }); + +/** + * Add Learnable Language + */ +export const addLearnableLanguageApiAccountLearnableLanguagesPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/account/learnable-languages', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Complete Onboarding + */ +export const completeOnboardingApiAccountOnboardingPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/account/onboarding', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Get Account Status + */ +export const getAccountStatusApiAccountStatusGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/account/status', + ...options +}); + +/** + * Remove Learnable Language + */ +export const removeLearnableLanguageApiAccountLearnableLanguagesLanguageIdDelete = (options: Options) => (options.client ?? client).delete({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/account/learnable-languages/{language_id}', + ...options +}); + +/** + * Generate Flashcards + */ +export const generateFlashcardsApiVocabEntryIdFlashcardsPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab/{entry_id}/flashcards', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * List Flashcards + */ +export const listFlashcardsApiFlashcardsGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/flashcards', + ...options +}); + +/** + * Record Event + */ +export const recordEventApiFlashcardsFlashcardIdEventsPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/flashcards/{flashcard_id}/events', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + /** * Analyze Pos */ @@ -93,6 +201,81 @@ export const upsertLearnableLanguageApiLearnableLanguagesPost = (options: Options) => (options.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab', + ...options +}); + +/** + * Add Word + */ +export const addWordApiVocabPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Add From Token + */ +export const addFromTokenApiVocabFromTokenPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab/from-token', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Pending Disambiguation + */ +export const pendingDisambiguationApiVocabPendingDisambiguationGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab/pending-disambiguation', + ...options +}); + +/** + * Resolve Sense + */ +export const resolveSenseApiVocabEntryIdSensePatch = (options: Options) => (options.client ?? client).patch({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/vocab/{entry_id}/sense', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Get Account + */ +export const getAccountBffAccountGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/bff/account', + ...options +}); + +/** + * Get Onboarding + */ +export const getOnboardingBffAccountOnboardingGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/bff/account/onboarding', + ...options +}); + /** * List Articles */ @@ -120,30 +303,6 @@ export const getUserProfileBffUserProfileGet = (options: Options) => (options.client ?? client).post({ - url: '/auth/register', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } -}); - -/** - * Login - */ -export const loginAuthLoginPost = (options: Options) => (options.client ?? client).post({ - url: '/auth/login', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } -}); - /** * Get Media File */ diff --git a/frontend/src/client/types.gen.ts b/frontend/src/client/types.gen.ts index 9186118..49f6231 100644 --- a/frontend/src/client/types.gen.ts +++ b/frontend/src/client/types.gen.ts @@ -4,6 +4,134 @@ export type ClientOptions = { baseUrl: `${string}://src` | (string & {}); }; +/** + * AccountLanguagePair + */ +export type AccountLanguagePair = { + /** + * Id + */ + id: string; + /** + * Source Language + */ + source_language: string; + /** + * Target Language + */ + target_language: string; + /** + * Proficiencies + */ + proficiencies: Array; +}; + +/** + * AccountResponse + */ +export type AccountResponse = { + /** + * Email + */ + email: string; + /** + * Human Name + */ + human_name: string | null; + /** + * Language Pairs + */ + language_pairs: Array; +}; + +/** + * AccountStatusResponse + */ +export type AccountStatusResponse = { + /** + * Problem Flags + */ + problem_flags: Array; + /** + * Error Messages + */ + error_messages: Array; +}; + +/** + * AddFromTokenRequest + */ +export type AddFromTokenRequest = { + /** + * Language Pair Id + */ + language_pair_id: string; + /** + * Surface + */ + surface: string; + /** + * Spacy Lemma + */ + spacy_lemma: string; + /** + * Pos Ud + */ + pos_ud: string; + /** + * Language + */ + language: string; + /** + * Source Article Id + */ + source_article_id?: string | null; +}; + +/** + * AddLearnableLanguageRequest + */ +export type AddLearnableLanguageRequest = { + /** + * Source Language + */ + source_language: string; + /** + * Target Language + */ + target_language: string; + /** + * Proficiencies + */ + proficiencies: Array; +}; + +/** + * AddWordRequest + */ +export type AddWordRequest = { + /** + * Language Pair Id + */ + language_pair_id: string; + /** + * Surface Text + */ + surface_text: string; + /** + * Entry Pathway + */ + entry_pathway?: string; + /** + * Is Phrase + */ + is_phrase?: boolean; + /** + * Source Article Id + */ + source_article_id?: string | null; +}; + /** * ArticleDetail */ @@ -112,6 +240,115 @@ export type ArticleListResponse = { articles: Array; }; +/** + * FlashcardEventResponse + */ +export type FlashcardEventResponse = { + /** + * Id + */ + id: string; + /** + * Flashcard Id + */ + flashcard_id: string; + /** + * User Id + */ + user_id: string; + /** + * Event Type + */ + event_type: string; + /** + * User Response + */ + user_response: string | null; + /** + * Created At + */ + created_at: string; +}; + +/** + * FlashcardResponse + */ +export type FlashcardResponse = { + /** + * Id + */ + id: string; + /** + * User Id + */ + user_id: string; + /** + * Bank Entry Id + */ + bank_entry_id: string; + /** + * Source Lang + */ + source_lang: string; + /** + * Target Lang + */ + target_lang: string; + /** + * Prompt Text + */ + prompt_text: string; + /** + * Answer Text + */ + answer_text: string; + /** + * Prompt Context Text + */ + prompt_context_text: string | null; + /** + * Answer Context Text + */ + answer_context_text: string | null; + /** + * Card Direction + */ + card_direction: string; + /** + * Prompt Modality + */ + prompt_modality: string; + /** + * Created At + */ + created_at: string; +}; + +/** + * FromTokenResponse + */ +export type FromTokenResponse = { + entry: WordBankEntryResponse; + /** + * Sense Candidates + */ + sense_candidates: Array; + /** + * Matched Via + */ + matched_via: string; +}; + +/** + * GenerateFlashcardsRequest + */ +export type GenerateFlashcardsRequest = { + /** + * Direction + */ + direction?: string | null; +}; + /** * GenerationRequest */ @@ -224,6 +461,24 @@ export type JobSummary = { error_message?: string | null; }; +/** + * LanguagePairOption + */ +export type LanguagePairOption = { + /** + * Value + */ + value: string; + /** + * Label + */ + label: string; + /** + * Description + */ + description: string; +}; + /** * LearnableLanguageItem */ @@ -300,6 +555,38 @@ export type LoginRequest = { password: string; }; +/** + * OnboardingRequest + */ +export type OnboardingRequest = { + /** + * Human Name + */ + human_name: string; + /** + * Language Pairs + */ + language_pairs: Array; + /** + * Proficiencies + */ + proficiencies: Array>; +}; + +/** + * OnboardingResponse + */ +export type OnboardingResponse = { + /** + * Language Pairs + */ + language_pairs: Array; + /** + * Proficiencies + */ + proficiencies: Array; +}; + /** * POSRequest */ @@ -328,6 +615,38 @@ export type PosResponse = { tokens: Array; }; +/** + * ProficiencyOption + */ +export type ProficiencyOption = { + /** + * Value + */ + value: string; + /** + * Label + */ + label: string; + /** + * Description + */ + description: string; +}; + +/** + * RecordEventRequest + */ +export type RecordEventRequest = { + /** + * Event Type + */ + event_type: string; + /** + * User Response + */ + user_response?: string | null; +}; + /** * RegisterRequest */ @@ -342,6 +661,52 @@ export type RegisterRequest = { password: string; }; +/** + * RegisterResponse + */ +export type RegisterResponse = { + /** + * Success + */ + success: boolean; + /** + * Error Message + */ + error_message?: string | null; +}; + +/** + * SenseCandidateResponse + */ +export type SenseCandidateResponse = { + /** + * Id + */ + id: string; + /** + * Gloss + */ + gloss: string; + /** + * Topics + */ + topics: Array; + /** + * Tags + */ + tags: Array; +}; + +/** + * SetSenseRequest + */ +export type SetSenseRequest = { + /** + * Sense Id + */ + sense_id: string; +}; + /** * TokenInfo */ @@ -442,6 +807,320 @@ export type ValidationError = { }; }; +/** + * WordBankEntryResponse + */ +export type WordBankEntryResponse = { + /** + * Id + */ + id: string; + /** + * User Id + */ + user_id: string; + /** + * Language Pair Id + */ + language_pair_id: string; + /** + * Sense Id + */ + sense_id: string | null; + /** + * Wordform Id + */ + wordform_id: string | null; + /** + * Surface Text + */ + surface_text: string; + /** + * Is Phrase + */ + is_phrase: boolean; + /** + * Entry Pathway + */ + entry_pathway: string; + /** + * Source Article Id + */ + source_article_id: string | null; + /** + * Disambiguation Status + */ + disambiguation_status: string; + /** + * Created At + */ + created_at: string; +}; + +export type RegisterApiAuthRegisterPostData = { + body: RegisterRequest; + path?: never; + query?: never; + url: '/api/auth/register'; +}; + +export type RegisterApiAuthRegisterPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RegisterApiAuthRegisterPostError = RegisterApiAuthRegisterPostErrors[keyof RegisterApiAuthRegisterPostErrors]; + +export type RegisterApiAuthRegisterPostResponses = { + /** + * Successful Response + */ + 201: RegisterResponse; +}; + +export type RegisterApiAuthRegisterPostResponse = RegisterApiAuthRegisterPostResponses[keyof RegisterApiAuthRegisterPostResponses]; + +export type LoginApiAuthLoginPostData = { + body: LoginRequest; + path?: never; + query?: never; + url: '/api/auth/login'; +}; + +export type LoginApiAuthLoginPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type LoginApiAuthLoginPostError = LoginApiAuthLoginPostErrors[keyof LoginApiAuthLoginPostErrors]; + +export type LoginApiAuthLoginPostResponses = { + /** + * Successful Response + */ + 200: TokenResponse; +}; + +export type LoginApiAuthLoginPostResponse = LoginApiAuthLoginPostResponses[keyof LoginApiAuthLoginPostResponses]; + +export type VerifyEmailApiAuthVerifyEmailGetData = { + body?: never; + path?: never; + query: { + /** + * Token + */ + token: string; + }; + url: '/api/auth/verify-email'; +}; + +export type VerifyEmailApiAuthVerifyEmailGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type VerifyEmailApiAuthVerifyEmailGetError = VerifyEmailApiAuthVerifyEmailGetErrors[keyof VerifyEmailApiAuthVerifyEmailGetErrors]; + +export type VerifyEmailApiAuthVerifyEmailGetResponses = { + /** + * Response Verify Email Api Auth Verify Email Get + * + * Successful Response + */ + 200: { + [key: string]: unknown; + }; +}; + +export type VerifyEmailApiAuthVerifyEmailGetResponse = VerifyEmailApiAuthVerifyEmailGetResponses[keyof VerifyEmailApiAuthVerifyEmailGetResponses]; + +export type AddLearnableLanguageApiAccountLearnableLanguagesPostData = { + body: AddLearnableLanguageRequest; + path?: never; + query?: never; + url: '/api/account/learnable-languages'; +}; + +export type AddLearnableLanguageApiAccountLearnableLanguagesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type AddLearnableLanguageApiAccountLearnableLanguagesPostError = AddLearnableLanguageApiAccountLearnableLanguagesPostErrors[keyof AddLearnableLanguageApiAccountLearnableLanguagesPostErrors]; + +export type AddLearnableLanguageApiAccountLearnableLanguagesPostResponses = { + /** + * Successful Response + */ + 201: LearnableLanguageResponse; +}; + +export type AddLearnableLanguageApiAccountLearnableLanguagesPostResponse = AddLearnableLanguageApiAccountLearnableLanguagesPostResponses[keyof AddLearnableLanguageApiAccountLearnableLanguagesPostResponses]; + +export type CompleteOnboardingApiAccountOnboardingPostData = { + body: OnboardingRequest; + path?: never; + query?: never; + url: '/api/account/onboarding'; +}; + +export type CompleteOnboardingApiAccountOnboardingPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CompleteOnboardingApiAccountOnboardingPostError = CompleteOnboardingApiAccountOnboardingPostErrors[keyof CompleteOnboardingApiAccountOnboardingPostErrors]; + +export type CompleteOnboardingApiAccountOnboardingPostResponses = { + /** + * Response Complete Onboarding Api Account Onboarding Post + * + * Successful Response + */ + 200: { + [key: string]: unknown; + }; +}; + +export type CompleteOnboardingApiAccountOnboardingPostResponse = CompleteOnboardingApiAccountOnboardingPostResponses[keyof CompleteOnboardingApiAccountOnboardingPostResponses]; + +export type GetAccountStatusApiAccountStatusGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/account/status'; +}; + +export type GetAccountStatusApiAccountStatusGetResponses = { + /** + * Successful Response + */ + 200: AccountStatusResponse; +}; + +export type GetAccountStatusApiAccountStatusGetResponse = GetAccountStatusApiAccountStatusGetResponses[keyof GetAccountStatusApiAccountStatusGetResponses]; + +export type RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteData = { + body?: never; + path: { + /** + * Language Id + */ + language_id: string; + }; + query?: never; + url: '/api/account/learnable-languages/{language_id}'; +}; + +export type RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteError = RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteErrors[keyof RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteErrors]; + +export type RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponse = RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponses[keyof RemoveLearnableLanguageApiAccountLearnableLanguagesLanguageIdDeleteResponses]; + +export type GenerateFlashcardsApiVocabEntryIdFlashcardsPostData = { + body: GenerateFlashcardsRequest; + path: { + /** + * Entry Id + */ + entry_id: string; + }; + query?: never; + url: '/api/vocab/{entry_id}/flashcards'; +}; + +export type GenerateFlashcardsApiVocabEntryIdFlashcardsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GenerateFlashcardsApiVocabEntryIdFlashcardsPostError = GenerateFlashcardsApiVocabEntryIdFlashcardsPostErrors[keyof GenerateFlashcardsApiVocabEntryIdFlashcardsPostErrors]; + +export type GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponses = { + /** + * Response Generate Flashcards Api Vocab Entry Id Flashcards Post + * + * Successful Response + */ + 201: Array; +}; + +export type GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponse = GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponses[keyof GenerateFlashcardsApiVocabEntryIdFlashcardsPostResponses]; + +export type ListFlashcardsApiFlashcardsGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/flashcards'; +}; + +export type ListFlashcardsApiFlashcardsGetResponses = { + /** + * Response List Flashcards Api Flashcards Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListFlashcardsApiFlashcardsGetResponse = ListFlashcardsApiFlashcardsGetResponses[keyof ListFlashcardsApiFlashcardsGetResponses]; + +export type RecordEventApiFlashcardsFlashcardIdEventsPostData = { + body: RecordEventRequest; + path: { + /** + * Flashcard Id + */ + flashcard_id: string; + }; + query?: never; + url: '/api/flashcards/{flashcard_id}/events'; +}; + +export type RecordEventApiFlashcardsFlashcardIdEventsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RecordEventApiFlashcardsFlashcardIdEventsPostError = RecordEventApiFlashcardsFlashcardIdEventsPostErrors[keyof RecordEventApiFlashcardsFlashcardIdEventsPostErrors]; + +export type RecordEventApiFlashcardsFlashcardIdEventsPostResponses = { + /** + * Successful Response + */ + 201: FlashcardEventResponse; +}; + +export type RecordEventApiFlashcardsFlashcardIdEventsPostResponse = RecordEventApiFlashcardsFlashcardIdEventsPostResponses[keyof RecordEventApiFlashcardsFlashcardIdEventsPostResponses]; + export type AnalyzePosApiPosPostData = { body: PosRequest; path?: never; @@ -635,6 +1314,168 @@ export type UpsertLearnableLanguageApiLearnableLanguagesPostResponses = { export type UpsertLearnableLanguageApiLearnableLanguagesPostResponse = UpsertLearnableLanguageApiLearnableLanguagesPostResponses[keyof UpsertLearnableLanguageApiLearnableLanguagesPostResponses]; +export type ListEntriesApiVocabGetData = { + body?: never; + path?: never; + query: { + /** + * Language Pair Id + */ + language_pair_id: string; + }; + url: '/api/vocab'; +}; + +export type ListEntriesApiVocabGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListEntriesApiVocabGetError = ListEntriesApiVocabGetErrors[keyof ListEntriesApiVocabGetErrors]; + +export type ListEntriesApiVocabGetResponses = { + /** + * Response List Entries Api Vocab Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListEntriesApiVocabGetResponse = ListEntriesApiVocabGetResponses[keyof ListEntriesApiVocabGetResponses]; + +export type AddWordApiVocabPostData = { + body: AddWordRequest; + path?: never; + query?: never; + url: '/api/vocab'; +}; + +export type AddWordApiVocabPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type AddWordApiVocabPostError = AddWordApiVocabPostErrors[keyof AddWordApiVocabPostErrors]; + +export type AddWordApiVocabPostResponses = { + /** + * Successful Response + */ + 201: WordBankEntryResponse; +}; + +export type AddWordApiVocabPostResponse = AddWordApiVocabPostResponses[keyof AddWordApiVocabPostResponses]; + +export type AddFromTokenApiVocabFromTokenPostData = { + body: AddFromTokenRequest; + path?: never; + query?: never; + url: '/api/vocab/from-token'; +}; + +export type AddFromTokenApiVocabFromTokenPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type AddFromTokenApiVocabFromTokenPostError = AddFromTokenApiVocabFromTokenPostErrors[keyof AddFromTokenApiVocabFromTokenPostErrors]; + +export type AddFromTokenApiVocabFromTokenPostResponses = { + /** + * Successful Response + */ + 201: FromTokenResponse; +}; + +export type AddFromTokenApiVocabFromTokenPostResponse = AddFromTokenApiVocabFromTokenPostResponses[keyof AddFromTokenApiVocabFromTokenPostResponses]; + +export type PendingDisambiguationApiVocabPendingDisambiguationGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/vocab/pending-disambiguation'; +}; + +export type PendingDisambiguationApiVocabPendingDisambiguationGetResponses = { + /** + * Response Pending Disambiguation Api Vocab Pending Disambiguation Get + * + * Successful Response + */ + 200: Array; +}; + +export type PendingDisambiguationApiVocabPendingDisambiguationGetResponse = PendingDisambiguationApiVocabPendingDisambiguationGetResponses[keyof PendingDisambiguationApiVocabPendingDisambiguationGetResponses]; + +export type ResolveSenseApiVocabEntryIdSensePatchData = { + body: SetSenseRequest; + path: { + /** + * Entry Id + */ + entry_id: string; + }; + query?: never; + url: '/api/vocab/{entry_id}/sense'; +}; + +export type ResolveSenseApiVocabEntryIdSensePatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ResolveSenseApiVocabEntryIdSensePatchError = ResolveSenseApiVocabEntryIdSensePatchErrors[keyof ResolveSenseApiVocabEntryIdSensePatchErrors]; + +export type ResolveSenseApiVocabEntryIdSensePatchResponses = { + /** + * Successful Response + */ + 200: WordBankEntryResponse; +}; + +export type ResolveSenseApiVocabEntryIdSensePatchResponse = ResolveSenseApiVocabEntryIdSensePatchResponses[keyof ResolveSenseApiVocabEntryIdSensePatchResponses]; + +export type GetAccountBffAccountGetData = { + body?: never; + path?: never; + query?: never; + url: '/bff/account'; +}; + +export type GetAccountBffAccountGetResponses = { + /** + * Successful Response + */ + 200: AccountResponse; +}; + +export type GetAccountBffAccountGetResponse = GetAccountBffAccountGetResponses[keyof GetAccountBffAccountGetResponses]; + +export type GetOnboardingBffAccountOnboardingGetData = { + body?: never; + path?: never; + query?: never; + url: '/bff/account/onboarding'; +}; + +export type GetOnboardingBffAccountOnboardingGetResponses = { + /** + * Successful Response + */ + 200: OnboardingResponse; +}; + +export type GetOnboardingBffAccountOnboardingGetResponse = GetOnboardingBffAccountOnboardingGetResponses[keyof GetOnboardingBffAccountOnboardingGetResponses]; + export type ListArticlesBffArticlesGetData = { body?: never; path?: never; @@ -711,54 +1552,6 @@ export type GetUserProfileBffUserProfileGetResponses = { export type GetUserProfileBffUserProfileGetResponse = GetUserProfileBffUserProfileGetResponses[keyof GetUserProfileBffUserProfileGetResponses]; -export type RegisterAuthRegisterPostData = { - body: RegisterRequest; - path?: never; - query?: never; - url: '/auth/register'; -}; - -export type RegisterAuthRegisterPostErrors = { - /** - * Validation Error - */ - 422: HttpValidationError; -}; - -export type RegisterAuthRegisterPostError = RegisterAuthRegisterPostErrors[keyof RegisterAuthRegisterPostErrors]; - -export type RegisterAuthRegisterPostResponses = { - /** - * Successful Response - */ - 201: unknown; -}; - -export type LoginAuthLoginPostData = { - body: LoginRequest; - path?: never; - query?: never; - url: '/auth/login'; -}; - -export type LoginAuthLoginPostErrors = { - /** - * Validation Error - */ - 422: HttpValidationError; -}; - -export type LoginAuthLoginPostError = LoginAuthLoginPostErrors[keyof LoginAuthLoginPostErrors]; - -export type LoginAuthLoginPostResponses = { - /** - * Successful Response - */ - 200: TokenResponse; -}; - -export type LoginAuthLoginPostResponse = LoginAuthLoginPostResponses[keyof LoginAuthLoginPostResponses]; - export type GetMediaFileMediaFilenameGetData = { body?: never; path: { diff --git a/frontend/src/lib/openapi.json b/frontend/src/lib/openapi.json index d7c2033..a6c968a 100644 --- a/frontend/src/lib/openapi.json +++ b/frontend/src/lib/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"Language Learning API","version":"0.1.0"},"paths":{"/api/pos/":{"post":{"tags":["api","api","pos"],"summary":"Analyze Pos","operationId":"analyze_pos_api_pos__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/POSRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/POSResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/translate":{"get":{"tags":["api","api","translate"],"summary":"Translate text to a target language","operationId":"translate_text_api_translate_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"target_language","in":"query","required":true,"schema":{"type":"string","title":"Target Language"}},{"name":"context","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/generate":{"post":{"tags":["api","api"],"summary":"Create Generation Job","operationId":"create_generation_job_api_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jobs/":{"get":{"tags":["api"],"summary":"Get Jobs","operationId":"get_jobs_api_jobs__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jobs/{job_id}":{"get":{"tags":["api"],"summary":"Get Job","operationId":"get_job_api_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/regenerate-audio":{"post":{"tags":["api"],"summary":"Regenerate Audio","operationId":"regenerate_audio_api_jobs__job_id__regenerate_audio_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Audio Api Jobs Job Id Regenerate Audio Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/learnable_languages":{"post":{"tags":["api","api"],"summary":"Upsert Learnable Language","operationId":"upsert_learnable_language_api_learnable_languages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnableLanguageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnableLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/bff/articles":{"get":{"tags":["bff","bff","articles"],"summary":"List Articles","operationId":"list_articles_bff_articles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_language","in":"query","required":false,"schema":{"type":"string","default":"fr","title":"Target Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bff/articles/{article_id}":{"get":{"tags":["bff","bff","articles"],"summary":"Get Article","operationId":"get_article_bff_articles__article_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"string","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bff/user_profile":{"get":{"tags":["bff","bff"],"summary":"Get User Profile","operationId":"get_user_profile_bff_user_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media/{filename}":{"get":{"tags":["media"],"summary":"Get Media File","operationId":"get_media_file_media__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"ArticleDetail":{"properties":{"id":{"type":"string","title":"Id"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"source_language":{"type":"string","title":"Source Language"},"source_title":{"type":"string","title":"Source Title"},"source_body":{"type":"string","title":"Source Body"},"source_body_pos":{"additionalProperties":true,"type":"object","title":"Source Body Pos"},"target_language":{"type":"string","title":"Target Language"},"target_complexities":{"items":{"type":"string"},"type":"array","title":"Target Complexities"},"target_title":{"type":"string","title":"Target Title"},"target_body":{"type":"string","title":"Target Body"},"target_audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Audio Url"},"target_body_pos":{"additionalProperties":true,"type":"object","title":"Target Body Pos"},"target_body_transcript":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Target Body Transcript"}},"type":"object","required":["id","published_at","source_language","source_title","source_body","source_body_pos","target_language","target_complexities","target_title","target_body","target_audio_url","target_body_pos","target_body_transcript"],"title":"ArticleDetail"},"ArticleItem":{"properties":{"id":{"type":"string","title":"Id"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"source_language":{"type":"string","title":"Source Language"},"source_title":{"type":"string","title":"Source Title"},"target_language":{"type":"string","title":"Target Language"},"target_complexities":{"items":{"type":"string"},"type":"array","title":"Target Complexities"},"target_title":{"type":"string","title":"Target Title"}},"type":"object","required":["id","published_at","source_language","source_title","target_language","target_complexities","target_title"],"title":"ArticleItem"},"ArticleListResponse":{"properties":{"articles":{"items":{"$ref":"#/components/schemas/ArticleItem"},"type":"array","title":"Articles"}},"type":"object","required":["articles"],"title":"ArticleListResponse"},"GenerationRequest":{"properties":{"target_language":{"type":"string","title":"Target Language"},"complexity_level":{"type":"string","title":"Complexity Level"},"input_texts":{"items":{"type":"string"},"type":"array","title":"Input Texts"},"source_language":{"type":"string","title":"Source Language","default":"en"}},"type":"object","required":["target_language","complexity_level","input_texts"],"title":"GenerationRequest"},"GenerationResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"}},"type":"object","required":["job_id"],"title":"GenerationResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobSummary"},"type":"array","title":"Jobs"}},"type":"object","required":["jobs"],"title":"JobListResponse"},"JobResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"translated_article_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Translated Article Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","status","created_at"],"title":"JobResponse"},"JobSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","status","created_at"],"title":"JobSummary"},"LearnableLanguageItem":{"properties":{"id":{"type":"string","title":"Id"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["id","source_language","target_language","proficiencies"],"title":"LearnableLanguageItem"},"LearnableLanguageRequest":{"properties":{"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["source_language","target_language","proficiencies"],"title":"LearnableLanguageRequest"},"LearnableLanguageResponse":{"properties":{"id":{"type":"string","title":"Id"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["id","source_language","target_language","proficiencies"],"title":"LearnableLanguageResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"POSRequest":{"properties":{"text":{"type":"string","title":"Text"},"language":{"type":"string","title":"Language"}},"type":"object","required":["text","language"],"title":"POSRequest"},"POSResponse":{"properties":{"language":{"type":"string","title":"Language"},"tokens":{"items":{"$ref":"#/components/schemas/TokenInfo"},"type":"array","title":"Tokens"}},"type":"object","required":["language","tokens"],"title":"POSResponse"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"RegisterRequest"},"TokenInfo":{"properties":{"text":{"type":"string","title":"Text"},"lemma":{"type":"string","title":"Lemma"},"pos":{"type":"string","title":"Pos"},"tag":{"type":"string","title":"Tag"},"dep":{"type":"string","title":"Dep"},"is_stop":{"type":"boolean","title":"Is Stop"}},"type":"object","required":["text","lemma","pos","tag","dep","is_stop"],"title":"TokenInfo"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"TokenResponse"},"TranslationResponse":{"properties":{"text":{"type":"string","title":"Text"},"target_language":{"type":"string","title":"Target Language"},"translated_text":{"type":"string","title":"Translated Text"}},"type":"object","required":["text","target_language","translated_text"],"title":"TranslationResponse"},"UserProfileResponse":{"properties":{"learnable_languages":{"items":{"$ref":"#/components/schemas/LearnableLanguageItem"},"type":"array","title":"Learnable Languages"}},"type":"object","required":["learnable_languages"],"title":"UserProfileResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"Language Learning API","version":"0.1.0"},"paths":{"/api/auth/register":{"post":{"tags":["api","auth"],"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["api","auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify-email":{"get":{"tags":["api","auth"],"summary":"Verify Email","operationId":"verify_email_api_auth_verify_email_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Email Api Auth Verify Email Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/account/learnable-languages":{"post":{"tags":["api","account"],"summary":"Add Learnable Language","operationId":"add_learnable_language_api_account_learnable_languages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddLearnableLanguageRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnableLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/account/onboarding":{"post":{"tags":["api","account"],"summary":"Complete Onboarding","operationId":"complete_onboarding_api_account_onboarding_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Complete Onboarding Api Account Onboarding Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/account/status":{"get":{"tags":["api","account"],"summary":"Get Account Status","operationId":"get_account_status_api_account_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/account/learnable-languages/{language_id}":{"delete":{"tags":["api","account"],"summary":"Remove Learnable Language","operationId":"remove_learnable_language_api_account_learnable_languages__language_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"language_id","in":"path","required":true,"schema":{"type":"string","title":"Language Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vocab/{entry_id}/flashcards":{"post":{"tags":["api","flashcards"],"summary":"Generate Flashcards","operationId":"generate_flashcards_api_vocab__entry_id__flashcards_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateFlashcardsRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FlashcardResponse"},"title":"Response Generate Flashcards Api Vocab Entry Id Flashcards Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flashcards":{"get":{"tags":["api","flashcards"],"summary":"List Flashcards","operationId":"list_flashcards_api_flashcards_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FlashcardResponse"},"type":"array","title":"Response List Flashcards Api Flashcards Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/flashcards/{flashcard_id}/events":{"post":{"tags":["api","flashcards"],"summary":"Record Event","operationId":"record_event_api_flashcards__flashcard_id__events_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"flashcard_id","in":"path","required":true,"schema":{"type":"string","title":"Flashcard Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordEventRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlashcardEventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pos/":{"post":{"tags":["api","api","pos"],"summary":"Analyze Pos","operationId":"analyze_pos_api_pos__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/POSRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/POSResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/translate":{"get":{"tags":["api","api","translate"],"summary":"Translate text to a target language","operationId":"translate_text_api_translate_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"target_language","in":"query","required":true,"schema":{"type":"string","title":"Target Language"}},{"name":"context","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/generate":{"post":{"tags":["api","api"],"summary":"Create Generation Job","operationId":"create_generation_job_api_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jobs/":{"get":{"tags":["api"],"summary":"Get Jobs","operationId":"get_jobs_api_jobs__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jobs/{job_id}":{"get":{"tags":["api"],"summary":"Get Job","operationId":"get_job_api_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/regenerate-audio":{"post":{"tags":["api"],"summary":"Regenerate Audio","operationId":"regenerate_audio_api_jobs__job_id__regenerate_audio_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Audio Api Jobs Job Id Regenerate Audio Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/learnable_languages":{"post":{"tags":["api","api"],"summary":"Upsert Learnable Language","operationId":"upsert_learnable_language_api_learnable_languages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnableLanguageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnableLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/vocab":{"post":{"tags":["api","vocab"],"summary":"Add Word","operationId":"add_word_api_vocab_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWordRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WordBankEntryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["api","vocab"],"summary":"List Entries","operationId":"list_entries_api_vocab_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"language_pair_id","in":"query","required":true,"schema":{"type":"string","title":"Language Pair Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WordBankEntryResponse"},"title":"Response List Entries Api Vocab Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vocab/from-token":{"post":{"tags":["api","vocab"],"summary":"Add From Token","operationId":"add_from_token_api_vocab_from_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFromTokenRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FromTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/vocab/pending-disambiguation":{"get":{"tags":["api","vocab"],"summary":"Pending Disambiguation","operationId":"pending_disambiguation_api_vocab_pending_disambiguation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WordBankEntryResponse"},"type":"array","title":"Response Pending Disambiguation Api Vocab Pending Disambiguation Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/vocab/{entry_id}/sense":{"patch":{"tags":["api","vocab"],"summary":"Resolve Sense","operationId":"resolve_sense_api_vocab__entry_id__sense_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSenseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WordBankEntryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bff/account":{"get":{"tags":["bff","bff"],"summary":"Get Account","operationId":"get_account_bff_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/bff/account/onboarding":{"get":{"tags":["bff","bff"],"summary":"Get Onboarding","operationId":"get_onboarding_bff_account_onboarding_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/bff/articles":{"get":{"tags":["bff","bff","articles"],"summary":"List Articles","operationId":"list_articles_bff_articles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_language","in":"query","required":false,"schema":{"type":"string","default":"fr","title":"Target Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bff/articles/{article_id}":{"get":{"tags":["bff","bff","articles"],"summary":"Get Article","operationId":"get_article_bff_articles__article_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"string","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bff/user_profile":{"get":{"tags":["bff","bff"],"summary":"Get User Profile","operationId":"get_user_profile_bff_user_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/media/{filename}":{"get":{"tags":["media"],"summary":"Get Media File","operationId":"get_media_file_media__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"AccountLanguagePair":{"properties":{"id":{"type":"string","title":"Id"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["id","source_language","target_language","proficiencies"],"title":"AccountLanguagePair"},"AccountResponse":{"properties":{"email":{"type":"string","title":"Email"},"human_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Name"},"language_pairs":{"items":{"$ref":"#/components/schemas/AccountLanguagePair"},"type":"array","title":"Language Pairs"}},"type":"object","required":["email","human_name","language_pairs"],"title":"AccountResponse"},"AccountStatusResponse":{"properties":{"problem_flags":{"items":{"type":"string"},"type":"array","title":"Problem Flags"},"error_messages":{"items":{"type":"string"},"type":"array","title":"Error Messages"}},"type":"object","required":["problem_flags","error_messages"],"title":"AccountStatusResponse"},"AddFromTokenRequest":{"properties":{"language_pair_id":{"type":"string","title":"Language Pair Id"},"surface":{"type":"string","title":"Surface"},"spacy_lemma":{"type":"string","title":"Spacy Lemma"},"pos_ud":{"type":"string","title":"Pos Ud"},"language":{"type":"string","title":"Language"},"source_article_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Article Id"}},"type":"object","required":["language_pair_id","surface","spacy_lemma","pos_ud","language"],"title":"AddFromTokenRequest"},"AddLearnableLanguageRequest":{"properties":{"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["source_language","target_language","proficiencies"],"title":"AddLearnableLanguageRequest"},"AddWordRequest":{"properties":{"language_pair_id":{"type":"string","title":"Language Pair Id"},"surface_text":{"type":"string","title":"Surface Text"},"entry_pathway":{"type":"string","title":"Entry Pathway","default":"manual"},"is_phrase":{"type":"boolean","title":"Is Phrase","default":false},"source_article_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Article Id"}},"type":"object","required":["language_pair_id","surface_text"],"title":"AddWordRequest"},"ArticleDetail":{"properties":{"id":{"type":"string","title":"Id"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"source_language":{"type":"string","title":"Source Language"},"source_title":{"type":"string","title":"Source Title"},"source_body":{"type":"string","title":"Source Body"},"source_body_pos":{"additionalProperties":true,"type":"object","title":"Source Body Pos"},"target_language":{"type":"string","title":"Target Language"},"target_complexities":{"items":{"type":"string"},"type":"array","title":"Target Complexities"},"target_title":{"type":"string","title":"Target Title"},"target_body":{"type":"string","title":"Target Body"},"target_audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Audio Url"},"target_body_pos":{"additionalProperties":true,"type":"object","title":"Target Body Pos"},"target_body_transcript":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Target Body Transcript"}},"type":"object","required":["id","published_at","source_language","source_title","source_body","source_body_pos","target_language","target_complexities","target_title","target_body","target_audio_url","target_body_pos","target_body_transcript"],"title":"ArticleDetail"},"ArticleItem":{"properties":{"id":{"type":"string","title":"Id"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"source_language":{"type":"string","title":"Source Language"},"source_title":{"type":"string","title":"Source Title"},"target_language":{"type":"string","title":"Target Language"},"target_complexities":{"items":{"type":"string"},"type":"array","title":"Target Complexities"},"target_title":{"type":"string","title":"Target Title"}},"type":"object","required":["id","published_at","source_language","source_title","target_language","target_complexities","target_title"],"title":"ArticleItem"},"ArticleListResponse":{"properties":{"articles":{"items":{"$ref":"#/components/schemas/ArticleItem"},"type":"array","title":"Articles"}},"type":"object","required":["articles"],"title":"ArticleListResponse"},"FlashcardEventResponse":{"properties":{"id":{"type":"string","title":"Id"},"flashcard_id":{"type":"string","title":"Flashcard Id"},"user_id":{"type":"string","title":"User Id"},"event_type":{"type":"string","title":"Event Type"},"user_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Response"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","flashcard_id","user_id","event_type","user_response","created_at"],"title":"FlashcardEventResponse"},"FlashcardResponse":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"bank_entry_id":{"type":"string","title":"Bank Entry Id"},"source_lang":{"type":"string","title":"Source Lang"},"target_lang":{"type":"string","title":"Target Lang"},"prompt_text":{"type":"string","title":"Prompt Text"},"answer_text":{"type":"string","title":"Answer Text"},"prompt_context_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Context Text"},"answer_context_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer Context Text"},"card_direction":{"type":"string","title":"Card Direction"},"prompt_modality":{"type":"string","title":"Prompt Modality"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","user_id","bank_entry_id","source_lang","target_lang","prompt_text","answer_text","prompt_context_text","answer_context_text","card_direction","prompt_modality","created_at"],"title":"FlashcardResponse"},"FromTokenResponse":{"properties":{"entry":{"$ref":"#/components/schemas/WordBankEntryResponse"},"sense_candidates":{"items":{"$ref":"#/components/schemas/SenseCandidateResponse"},"type":"array","title":"Sense Candidates"},"matched_via":{"type":"string","title":"Matched Via"}},"type":"object","required":["entry","sense_candidates","matched_via"],"title":"FromTokenResponse"},"GenerateFlashcardsRequest":{"properties":{"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"}},"type":"object","title":"GenerateFlashcardsRequest"},"GenerationRequest":{"properties":{"target_language":{"type":"string","title":"Target Language"},"complexity_level":{"type":"string","title":"Complexity Level"},"input_texts":{"items":{"type":"string"},"type":"array","title":"Input Texts"},"source_language":{"type":"string","title":"Source Language","default":"en"}},"type":"object","required":["target_language","complexity_level","input_texts"],"title":"GenerationRequest"},"GenerationResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"}},"type":"object","required":["job_id"],"title":"GenerationResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobSummary"},"type":"array","title":"Jobs"}},"type":"object","required":["jobs"],"title":"JobListResponse"},"JobResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"translated_article_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Translated Article Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","status","created_at"],"title":"JobResponse"},"JobSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","status","created_at"],"title":"JobSummary"},"LanguagePairOption":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"}},"type":"object","required":["value","label","description"],"title":"LanguagePairOption"},"LearnableLanguageItem":{"properties":{"id":{"type":"string","title":"Id"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["id","source_language","target_language","proficiencies"],"title":"LearnableLanguageItem"},"LearnableLanguageRequest":{"properties":{"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["source_language","target_language","proficiencies"],"title":"LearnableLanguageRequest"},"LearnableLanguageResponse":{"properties":{"id":{"type":"string","title":"Id"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"},"proficiencies":{"items":{"type":"string"},"type":"array","title":"Proficiencies"}},"type":"object","required":["id","source_language","target_language","proficiencies"],"title":"LearnableLanguageResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"OnboardingRequest":{"properties":{"human_name":{"type":"string","title":"Human Name"},"language_pairs":{"items":{"type":"string"},"type":"array","title":"Language Pairs"},"proficiencies":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Proficiencies"}},"type":"object","required":["human_name","language_pairs","proficiencies"],"title":"OnboardingRequest"},"OnboardingResponse":{"properties":{"language_pairs":{"items":{"$ref":"#/components/schemas/LanguagePairOption"},"type":"array","title":"Language Pairs"},"proficiencies":{"items":{"$ref":"#/components/schemas/ProficiencyOption"},"type":"array","title":"Proficiencies"}},"type":"object","required":["language_pairs","proficiencies"],"title":"OnboardingResponse"},"POSRequest":{"properties":{"text":{"type":"string","title":"Text"},"language":{"type":"string","title":"Language"}},"type":"object","required":["text","language"],"title":"POSRequest"},"POSResponse":{"properties":{"language":{"type":"string","title":"Language"},"tokens":{"items":{"$ref":"#/components/schemas/TokenInfo"},"type":"array","title":"Tokens"}},"type":"object","required":["language","tokens"],"title":"POSResponse"},"ProficiencyOption":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"}},"type":"object","required":["value","label","description"],"title":"ProficiencyOption"},"RecordEventRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"},"user_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Response"}},"type":"object","required":["event_type"],"title":"RecordEventRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"RegisterRequest"},"RegisterResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["success"],"title":"RegisterResponse"},"SenseCandidateResponse":{"properties":{"id":{"type":"string","title":"Id"},"gloss":{"type":"string","title":"Gloss"},"topics":{"items":{"type":"string"},"type":"array","title":"Topics"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["id","gloss","topics","tags"],"title":"SenseCandidateResponse"},"SetSenseRequest":{"properties":{"sense_id":{"type":"string","title":"Sense Id"}},"type":"object","required":["sense_id"],"title":"SetSenseRequest"},"TokenInfo":{"properties":{"text":{"type":"string","title":"Text"},"lemma":{"type":"string","title":"Lemma"},"pos":{"type":"string","title":"Pos"},"tag":{"type":"string","title":"Tag"},"dep":{"type":"string","title":"Dep"},"is_stop":{"type":"boolean","title":"Is Stop"}},"type":"object","required":["text","lemma","pos","tag","dep","is_stop"],"title":"TokenInfo"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"TokenResponse"},"TranslationResponse":{"properties":{"text":{"type":"string","title":"Text"},"target_language":{"type":"string","title":"Target Language"},"translated_text":{"type":"string","title":"Translated Text"}},"type":"object","required":["text","target_language","translated_text"],"title":"TranslationResponse"},"UserProfileResponse":{"properties":{"learnable_languages":{"items":{"$ref":"#/components/schemas/LearnableLanguageItem"},"type":"array","title":"Learnable Languages"}},"type":"object","required":["learnable_languages"],"title":"UserProfileResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WordBankEntryResponse":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"language_pair_id":{"type":"string","title":"Language Pair Id"},"sense_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sense Id"},"wordform_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordform Id"},"surface_text":{"type":"string","title":"Surface Text"},"is_phrase":{"type":"boolean","title":"Is Phrase"},"entry_pathway":{"type":"string","title":"Entry Pathway"},"source_article_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Article Id"},"disambiguation_status":{"type":"string","title":"Disambiguation Status"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","user_id","language_pair_id","sense_id","wordform_id","surface_text","is_phrase","entry_pathway","source_article_id","disambiguation_status","created_at"],"title":"WordBankEntryResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file