import { CrowdinApi, PaginationOptions, ResponseObject, PatchRequest, ResponseList } from '../core'; /** * Crowdin Apps are web applications that can be integrated with Crowdin to extend its functionality. * * Use the API to manage the necessary app data. */ export declare class Applications extends CrowdinApi { /** * @requiredScope application.installation:read * @param options optional pagination and filter parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.applications.installations.getMany */ listApplicationInstallations(options?: ApplicationsModel.ListApplicationInstallationsOptions): Promise>; /** * @requiredScope application.installation:write * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.installations.post */ installApplication(request: ApplicationsModel.InstallApplication | ApplicationsModel.InstallApplicationFromManifest): Promise>; /** * @requiredScope application.installation:read * @param applicationId application identifier * @see https://developer.crowdin.com/api/v2/#operation/api.applications.installations.get */ getApplicationInstallation(applicationId: string): Promise>; /** * @requiredScope application.installation:write * @param applicationId application identifier * @param force force delete the application * @see https://developer.crowdin.com/api/v2/#operation/api.applications.installations.delete */ deleteApplicationInstallation(applicationId: string, force?: boolean): Promise>; /** * @requiredScope application.installation:write * @param applicationId application identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.installations.patch */ editApplicationInstallation(applicationId: string, request: PatchRequest[]): Promise>; /** * @requiredScope application.installation:read * @param applicationId application identifier * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.installations.update.get */ getApplicationInstallationUpdate(applicationId: string): Promise>; /** * @requiredScope application.installation:write * @param applicationId application identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.installations.update.post */ applyApplicationInstallationUpdate(applicationId: string, request: ApplicationsModel.ApplyApplicationInstallationUpdateRequest): Promise>; /** * @requiredScope application.installation:write * @param applicationId application identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.installations.bundles.post */ uploadApplicationBundle(applicationId: string, request: ApplicationsModel.UploadApplicationBundleRequest): Promise>; /** * @requiredScope application.storage:read * @param applicationId application identifier * @param options optional pagination and filter parameters for the request * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.storage.kv.records.getMany */ listApplicationStorageRecords(applicationId: string, options?: ApplicationsModel.ListStorageRecordsOptions): Promise>; /** * @requiredScope application.storage:write * @param applicationId application identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.storage.kv.records.post */ addApplicationStorageRecord(applicationId: string, request: ApplicationsModel.AddStorageRecordRequest): Promise>; /** * @requiredScope application.storage:read * @param applicationId application identifier * @param key key of the record * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.storage.kv.records.get */ getApplicationStorageRecord(applicationId: string, key: string): Promise>; /** * @requiredScope application.storage:write * @param applicationId application identifier * @param key key of the record * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.storage.kv.records.patch */ editApplicationStorageRecord(applicationId: string, key: string, request: PatchRequest[]): Promise>; /** * @requiredScope application.storage:write * @param applicationId application identifier * @param key key of the record * @see https://support.crowdin.com/developer/api/v2/#tag/Applications/operation/api.applications.storage.kv.records.delete */ deleteApplicationStorageRecord(applicationId: string, key: string): Promise; /** * @requiredScope application.proxy:read * @param applicationId application identifier * @param path path implemented by the application * @see https://developer.crowdin.com/api/v2/#operation/api.applications.api.get */ getApplicationData(applicationId: string, path: string): Promise>; /** * @requiredScope application.proxy:write * @param applicationId application identifier * @param path path implemented by the application * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.api.put */ updateOrRestoreApplicationData(applicationId: string, path: string, request: any): Promise>; /** * @requiredScope application.proxy:write * @param applicationId application identifier * @param path path implemented by the application * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.api.post */ addApplicationData(applicationId: string, path: string, request: any): Promise>; /** * @requiredScope application.proxy:write * @param applicationId application identifier * @param path path implemented by the application * @see https://developer.crowdin.com/api/v2/#operation/api.applications.api.delete */ deleteApplicationData(applicationId: string, path: string): Promise; /** * @requiredScope application.proxy:write * @param applicationId application identifier * @param path path implemented by the application * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.api.patch */ editApplicationData(applicationId: string, path: string, request: any): Promise>; /** * @requiredScope application.consent:read * @param options optional pagination and filter parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.applications.consents.getMany */ listApplicationConsentDecisions(options?: ApplicationsModel.ListConsentDecisionsOptions): Promise>; /** * @requiredScope application.consent:write * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.consents.post */ createApplicationConsentDecision(request: ApplicationsModel.CreateConsentDecisionRequest): Promise>; /** * @requiredScope application.consent:write * @param consentId consent decision identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.applications.consents.patch */ editApplicationConsentDecision(consentId: number, request: PatchRequest[]): Promise>; /** * @requiredScope application.consent:write * @param consentId consent decision identifier * @see https://developer.crowdin.com/api/v2/#operation/api.applications.consents.delete */ deleteApplicationConsentDecision(consentId: number): Promise; } export declare namespace ApplicationsModel { interface Application { identifier: string; name: string; installedBy?: ApplicationUser | null; description: string | null; logo: string; logoUrl?: string | null; agent?: ApplicationUser | null; baseUrl: string | null; manifestUrl: string | null; manifest?: any | null; createdAt: string | null; manifestUpdatedAt?: string | null; isManifestOutdated?: boolean; modules: ApplicationModule[]; scopes: string[]; permissions: ApplicationPermissions; defaultPermissions: any; limitReached: boolean; stringBasedAvailable?: boolean; bundle?: ApplicationBundle | null; } interface ApplicationUser { id: number; username: string; fullName: string; avatarUrl: string; } type ApplicationBundle = { mode: 'internal'; } | { mode: 'external'; url: string; }; interface ListApplicationInstallationsOptions extends PaginationOptions { installedBy?: number; orderBy?: string; } interface InstallApplication { url: string; permissions?: ApplicationPermissions; modules?: ApplicationModule[]; assignAgent?: boolean; } interface InstallApplicationFromManifest { manifest: ApplicationManifest; permissions?: ApplicationPermissions; modules?: ApplicationModule[]; } interface ApplicationManifest { name: string; description?: string; logo?: string; scopes?: string[]; stringBasedAvailable?: boolean; modules: Record; default_permissions?: { user?: 'owner' | 'managers' | 'all' | 'guests'; project?: 'own' | 'restricted'; }; bundle?: ApplicationBundle; } interface ApplicationManifestModule { key: string; name: string; logo?: string; description?: string; environments?: ('crowdin' | 'crowdin-enterprise')[]; permissions?: Omit; [key: string]: any; } interface ApplicationInstallationUpdate { manifestHash: string | null; latestManifest: any | null; addedScopes: string[]; removedScopes: string[]; addedModules: any[]; removedModules: any[]; changedModules: any[]; changedEvents: Record; baseUrlChanged: { from: string | null; to: string | null; } | null; authenticationTypeChanged: { from: string | null; to: string | null; } | null; hasChanges: boolean; } interface ApplyApplicationInstallationUpdateRequest { manifestHash: string; } interface UploadApplicationBundleRequest { storageId: number; } type StorageRecordValue = string | number | boolean | any[] | Record; interface StorageRecord { key: string; value: StorageRecordValue; secret: boolean; createdAt: string; updatedAt: string; expiresAt: string | null; } interface ListStorageRecordsOptions extends PaginationOptions { prefix?: string; orderBy?: string; } interface AddStorageRecordRequest { key: string; value: StorageRecordValue; secret?: boolean; ttl?: number | null; } interface ApplicationPermissions { user: { value: 'all' | 'owner' | 'managers' | 'guests' | 'restricted'; ids: number[]; }; project: { value: 'own' | 'restricted'; ids: number[]; }; } interface ApplicationModule { key: string; type?: string; data?: any; authenticationType?: string; permissions: Omit; } type ConsentStatus = 'granted' | 'denied'; interface ConsentUser { id: number; username: string; fullName: string; avatarUrl: string; } interface ConsentDecision { id: number; installedBy: ConsentUser | null; identifier: string; name: string | null; status: ConsentStatus; scopes: string[]; createdAt: string; updatedAt: string; } interface ListConsentDecisionsOptions extends PaginationOptions { identifier?: string; orderBy?: string; } interface CreateConsentDecisionRequest { identifier: string; installedBy: number; status: ConsentStatus; scopes?: string[]; } }