UNPKG

@crowdin/app-project-module

Version:

Module that generates for you all common endpoints for serving standalone Crowdin App

301 lines (300 loc) 8.47 kB
import { ModuleKey } from '../../types'; import Crowdin from '@crowdin/crowdin-api-client'; export interface Webhook extends ModuleKey { /** * Events that the webhook should listen to */ events: string[]; /** * handle function */ callback: (data: { webhookContext: WebhookContext; events: Event[]; client: Crowdin; }) => Promise<void>; } interface WebhookContext { domain?: string; organizationId?: number; userId?: number; agentId?: number; } interface EventPayload { event: string; } interface BranchPayload { id: number; } interface FilePayload { id: number; name: string; title: string | null; type: string; path: string; status: string; revision: number; branchId: number | null; directoryId: number | null; project?: ProjectPayload; } interface GroupPayload { id: number; name: string; createdAt: string; updatedAt: string; description: string | null; parentId: number; userId: number; organizationId: number; } interface LanguagePayload { id: string; name: string; editorCode: string; twoLettersCode: string; threeLettersCode: string; locale: string; androidCode: string; osxCode: string; osxLocale: string; textDirection: string; dialectOf: string; } interface ProjectBuildPayload { id: number; downloadUrl: string; project: ProjectPayload; } interface ProjectPayload { id: number; userId: number; sourceLanguageId: string; targetLanguageIds: string[]; identifier: string; name: string; createdAt: string; updatedAt: string; lastActivity: string; description: string; url: string; cname: string | null; languageAccessPolicy?: string; visibility?: string; publicDownloads?: boolean; logo?: string; isExternal?: boolean; externalType?: string | null; hasCrowdsourcing?: boolean; } interface StepPayload { name: string; } interface SuggestionPayload { id: number; text: string; pluralCategoryName: string | null; rating: number; provider: string | null; isPreTranslated: boolean; createdAt: string; step?: StepPayload | null; } interface NewSuggestionPayload { user: UserPayload | null; targetLanguage: LanguagePayload | null; string: TranslationPayload | null; } interface TaskPayload { id: number; type: number; vendor?: string | null; status?: string | null; title: string; assignees: TaskAssigneeUserPayload[]; assignedTeams: TaskAssigneeTeamPayload[]; fileIds?: number[]; branchIds?: number[]; progress: { total: number; done: number; percent: number; }; description: string; translationUrl: string | null; wordsCount: number; filesCount?: number; commentsCount: number; deadline: string; timeRange: string | null; workflowStepId: number; buyUrl: string; createdAt: string; updatedAt: string; oldStatus: string | null; newStatus: string | null; sourceLanguage: LanguagePayload; targetLanguage: LanguagePayload | null; project: ProjectPayload; taskCreator: UserPayload; } interface TranslationDiscussionsPayload { id: number; text: string; type: string; issueType: string; issueStatus: string; resolvedAt: string; createdAt: string; string: TranslationPayload; targetLanguage: LanguagePayload; user: UserPayload; commentResolver: UserPayload; } interface TranslationPayload { id: number; identifier: string; key: string; text: string; type: string; context: string; maxLength: number; isHidden: boolean; isDuplicate: boolean; masterStringId: number; revision?: number; hasPlurals: boolean; labelIds: number[]; url: string; createdAt: string; updatedAt: string; file?: FilePayload; branch?: BranchPayload; project: ProjectPayload; } interface UserPayload { id: number; username: string; fullName: string; avatarUrl: string; } interface TaskAssigneeUserPayload extends UserPayload { worksCount: number; wordsLeft: number; } interface TaskAssigneeTeamPayload { id: number; wordsCount: number; } export interface FileTranslatedEvent extends EventPayload { file: FilePayload; targetLanguage: LanguagePayload; step?: StepPayload; } export interface FileApprovedEvent extends EventPayload { file: FilePayload; targetLanguage: LanguagePayload; step?: StepPayload; } export interface FileAddedEvent extends EventPayload { file: FilePayload; user: UserPayload; } export interface FileUpdatedEvent extends EventPayload { file: FilePayload; user: UserPayload; } export interface FileRevertedEvent extends EventPayload { file: FilePayload; user: UserPayload; } export interface FileDeletedEvent extends EventPayload { file: FilePayload; user: UserPayload; } export interface ProjectTranslatedEvent extends EventPayload { project: ProjectPayload; targetLanguage: LanguagePayload; workflowStep: StepPayload; } export interface ProjectApprovedEvent extends EventPayload { project: ProjectPayload; targetLanguage: LanguagePayload; workflowStep: StepPayload; } export interface ProjectBuiltEvent extends EventPayload { build: ProjectBuildPayload; } export interface TopSuggestionUpdatedEvent extends EventPayload { oldTranslation: SuggestionPayload; newTranslation: NewSuggestionPayload; } export interface SuggestionAddedEvent extends EventPayload { translation: TranslationPayload; } export interface SuggestionUpdatedEvent extends EventPayload { translation: TranslationPayload; } export interface SuggestionDeletedEvent extends EventPayload { translation: TranslationPayload; } export interface SuggestionApprovedEvent extends EventPayload { translation: TranslationPayload; } export interface SuggestionDisapprovedEvent extends EventPayload { translation: TranslationPayload; } export interface StringAddedEvent extends EventPayload { string: TranslationPayload; user: UserPayload; } export interface StringUpdatedEvent extends EventPayload { string: TranslationPayload; user: UserPayload; } export interface StringDeletedEvent extends EventPayload { string: TranslationPayload; user: UserPayload; } export interface TranslationDiscussionsCreatedEvent extends EventPayload { comment: TranslationDiscussionsPayload; } export interface TranslationDiscussionsUpdatedEvent extends EventPayload { comment: TranslationDiscussionsPayload; } export interface TranslationDiscussionsDeletedEvent extends EventPayload { comment: TranslationDiscussionsPayload; } export interface TranslationDiscussionsRestoredEvent extends EventPayload { comment: TranslationDiscussionsPayload; } export interface TaskAddedEvent extends EventPayload { task: TaskPayload; } export interface TaskStatusChangedEvent extends EventPayload { task: TaskPayload; } export interface TaskDeletedEvent extends EventPayload { task: TaskPayload; } export interface TaskUpdatedEvent extends EventPayload { task: TaskPayload; } export interface ProjectCreatedEvent extends EventPayload { project: ProjectPayload; user: UserPayload; } export interface ProjectDeletedEvent extends EventPayload { project: ProjectPayload; user: UserPayload; } export interface GroupCreatedEvent extends EventPayload { group: GroupPayload; user: UserPayload; } export interface GroupDeletedEvent extends EventPayload { group: GroupPayload; user: UserPayload; } export type Event = FileTranslatedEvent | FileApprovedEvent | FileAddedEvent | FileUpdatedEvent | FileRevertedEvent | FileDeletedEvent | ProjectTranslatedEvent | ProjectApprovedEvent | ProjectBuiltEvent | TopSuggestionUpdatedEvent | SuggestionAddedEvent | SuggestionUpdatedEvent | SuggestionDeletedEvent | SuggestionApprovedEvent | SuggestionDisapprovedEvent | StringAddedEvent | StringUpdatedEvent | StringDeletedEvent | TranslationDiscussionsCreatedEvent | TranslationDiscussionsUpdatedEvent | TranslationDiscussionsDeletedEvent | TranslationDiscussionsRestoredEvent | TaskAddedEvent | TaskStatusChangedEvent | TaskDeletedEvent | TaskUpdatedEvent | ProjectCreatedEvent | ProjectDeletedEvent | GroupCreatedEvent | GroupDeletedEvent; export {};