import type { PaginationParams, FilterType, Filter } from "./common"; export type BaserowJobState = "pending" | "exporting" | "cancelled" | "finished" | "failed" | "expired"; export interface BaserowJob { id: number; type: string; progressPercentage: number; state: BaserowJobState; humanReadableError?: string; } export interface Table { id: number; name: string; order: number; database_id: number; dataSync?: DataSync | null; } export type ListTablesResponse = Table[]; export interface TableCreate { name: string; data?: any[][]; firstRowHeader?: boolean; } export interface PatchedTableUpdate { name?: string; } export interface OrderTablesPayload { tableIds: number[]; } export interface TableImportConfiguration { upsertFields?: number[] | null; upsertValues?: any[][] | null; } export interface TableImportPayload { data: any[][]; configuration?: TableImportConfiguration; } export interface FileImportJobResponse extends BaserowJob { databaseId: number; name?: string; tableId?: number; firstRowHeader?: boolean; report: { failingRows: Record>; }; } export interface DuplicateTableJobResponse extends BaserowJob { originalTable: Table; duplicatedTable: Table; } interface BaseExportOptions { viewId?: number | null; exportCharset?: ExportCharset; filters?: PublicViewFilters | null; orderBy?: string | null; fields?: number[] | null; } export type ExportCharset = "utf-8" | "iso-8859-6" | "windows-1256" | "iso-8859-4" | "windows-1257" | "iso-8859-14" | "iso-8859-2" | "windows-1250" | "gbk" | "gb18030" | "big5" | "koi8-r" | "koi8-u" | "iso-8859-5" | "windows-1251" | "x-mac-cyrillic" | "iso-8859-7" | "windows-1253" | "iso-8859-8" | "windows-1255" | "euc-jp" | "iso-2022-jp" | "shift-jis" | "euc-kr" | "macintosh" | "iso-8859-10" | "iso-8859-16" | "windows-874" | "windows-1254" | "windows-1258" | "iso-8859-1" | "windows-1252" | "iso-8859-3"; export type ExporterType = "csv" | "json" | "xml" | "excel" | "file"; export interface CsvExporterOptions extends BaseExportOptions { exporterType: "csv"; csvColumnSeparator?: "," | ";" | "|" | "tab" | "recordSeparator" | "unitSeparator"; csvIncludeHeader?: boolean; } export interface ExcelExporterOptions extends BaseExportOptions { exporterType: "excel"; excelIncludeHeader?: boolean; } export interface FileExporterOptions extends BaseExportOptions { exporterType: "file"; organizeFiles?: boolean; } export interface JsonExporterOptions extends BaseExportOptions { exporterType: "json"; } export interface XmlExporterOptions extends BaseExportOptions { exporterType: "xml"; } export type ExportOptions = CsvExporterOptions | ExcelExporterOptions | FileExporterOptions | JsonExporterOptions | XmlExporterOptions; export interface ExportJob extends BaserowJob { table?: number | null; view?: number | null; exporterType: string; exportedFileName?: string | null; createdAt: string; url: string; } export interface DataSyncSyncedProperty { fieldId: number; key: string; uniquePrimary?: boolean; } export interface BaseDataSync { id: number; type: string; syncedProperties: DataSyncSyncedProperty[]; lastSync?: string | null; lastError?: string | null; } export interface ICalCalendarDataSync extends BaseDataSync { type: "ical_calendar"; icalUrl: string; } export interface PostgreSQLDataSync extends BaseDataSync { type: "postgresql"; postgresqlHost: string; postgresqlUsername: string; postgresqlPort?: number; postgresqlDatabase: string; postgresqlSchema?: string; postgresqlTable: string; postgresqlSslmode?: string; } export interface LocalBaserowTableDataSync extends BaseDataSync { type: "local_baserow_table"; sourceTableId: number; sourceTableViewId?: number | null; } export interface JiraIssuesDataSync extends BaseDataSync { type: "jira_issues"; jiraUrl: string; jiraProjectKey?: string; jiraUsername: string; } export interface GitHubIssuesDataSync extends BaseDataSync { type: "github_issues"; githubIssuesOwner: string; githubIssuesRepo: string; } export interface GitLabIssuesDataSync extends BaseDataSync { type: "gitlab_issues"; gitlabUrl?: string; gitlabProjectId: string; } export interface HubSpotContactsDataSync extends BaseDataSync { type: "hubspot_contacts"; } export type DataSync = ICalCalendarDataSync | PostgreSQLDataSync | LocalBaserowTableDataSync | JiraIssuesDataSync | GitHubIssuesDataSync | GitLabIssuesDataSync | HubSpotContactsDataSync; interface BaseDataSyncCreate { syncedProperties: string[]; tableName: string; } export interface ICalCalendarDataSyncCreate extends BaseDataSyncCreate { type: "ical_calendar"; icalUrl: string; } export interface PostgreSQLDataSyncCreate extends BaseDataSyncCreate { type: "postgresql"; postgresqlHost: string; postgresqlUsername: string; postgresqlPort?: number; postgresqlDatabase: string; postgresqlSchema?: string; postgresqlTable: string; postgresqlSslmode?: string; } export interface LocalBaserowTableDataSyncCreate extends BaseDataSyncCreate { type: "local_baserow_table"; sourceTableId: number; sourceTableViewId?: number | null; } export interface JiraIssuesDataSyncCreate extends BaseDataSyncCreate { type: "jira_issues"; jiraUrl: string; jiraProjectKey?: string; jiraUsername: string; } export interface GitHubIssuesDataSyncCreate extends BaseDataSyncCreate { type: "github_issues"; githubIssuesOwner: string; githubIssuesRepo: string; } export interface GitLabIssuesDataSyncCreate extends BaseDataSyncCreate { type: "gitlab_issues"; gitlabUrl?: string; gitlabProjectId: string; } export interface HubSpotContactsDataSyncCreate extends BaseDataSyncCreate { type: "hubspot_contacts"; } export type DataSyncCreatePayload = ICalCalendarDataSyncCreate | PostgreSQLDataSyncCreate | LocalBaserowTableDataSyncCreate | JiraIssuesDataSyncCreate | GitHubIssuesDataSyncCreate | GitLabIssuesDataSyncCreate | HubSpotContactsDataSyncCreate; interface BaseDataSyncUpdate { syncedProperties?: string[]; } export interface ICalCalendarDataSyncUpdate extends BaseDataSyncUpdate { icalUrl?: string; } export interface PostgreSQLDataSyncUpdate extends BaseDataSyncUpdate { postgresqlHost?: string; postgresqlUsername?: string; postgresqlPort?: number; postgresqlDatabase?: string; postgresqlSchema?: string; postgresqlTable?: string; postgresqlSslmode?: string; } export interface LocalBaserowTableDataSyncUpdate extends BaseDataSyncUpdate { sourceTableId?: number; sourceTableViewId?: number | null; } export interface JiraIssuesDataSyncUpdate extends BaseDataSyncUpdate { jiraUrl?: string; jiraProjectKey?: string; jiraUsername?: string; } export interface GitHubIssuesDataSyncUpdate extends BaseDataSyncUpdate { githubIssuesOwner?: string; githubIssuesRepo?: string; } export interface GitLabIssuesDataSyncUpdate extends BaseDataSyncUpdate { gitlabUrl?: string; gitlabProjectId?: string; } export interface HubSpotContactsDataSyncUpdate extends BaseDataSyncUpdate { } export type DataSyncUpdatePayload = ICalCalendarDataSyncUpdate | PostgreSQLDataSyncUpdate | LocalBaserowTableDataSyncUpdate | JiraIssuesDataSyncUpdate | GitHubIssuesDataSyncUpdate | GitLabIssuesDataSyncUpdate | HubSpotContactsDataSyncUpdate; export interface ListDataSyncProperty { uniquePrimary: boolean; key: string; name: string; fieldType: string; initiallySelected: boolean; } export type ListDataSyncPropertiesResponse = ListDataSyncProperty[]; interface BaseListDataSyncPropertiesRequest { type: string; } export interface ICalCalendarListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "ical_calendar"; icalUrl: string; } export interface PostgreSQLListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "postgresql"; postgresqlHost: string; postgresqlUsername: string; postgresqlPort?: number; postgresqlDatabase: string; postgresqlSchema?: string; postgresqlTable: string; postgresqlSslmode?: string; } export interface LocalBaserowTableListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "local_baserow_table"; sourceTableId: number; sourceTableViewId?: number | null; } export interface JiraIssuesListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "jira_issues"; jiraUrl: string; jiraProjectKey?: string; jiraUsername: string; } export interface GitHubIssuesListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "github_issues"; githubIssuesOwner: string; githubIssuesRepo: string; } export interface GitLabIssuesListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "gitlab_issues"; gitlabUrl?: string; gitlabProjectId: string; } export interface HubSpotContactsListDataSyncPropertiesRequest extends BaseListDataSyncPropertiesRequest { type: "hubspot_contacts"; } export type ListDataSyncPropertiesRequest = ICalCalendarListDataSyncPropertiesRequest | PostgreSQLListDataSyncPropertiesRequest | LocalBaserowTableListDataSyncPropertiesRequest | JiraIssuesListDataSyncPropertiesRequest | GitHubIssuesListDataSyncPropertiesRequest | GitLabIssuesListDataSyncPropertiesRequest | HubSpotContactsListDataSyncPropertiesRequest; export interface SyncDataSyncTableJobResponse extends BaserowJob { dataSync: DataSync; } export interface BaserowRow { id: number; order: string; [key: string]: any; } export interface RowMetadata { rowCommentCount?: number; rowCommentsNotificationMode?: "all" | "mentions"; } export interface BaserowRowWithMetadata extends BaserowRow { metadata?: RowMetadata; } export interface ListRowsParams { page?: number; size?: number; search?: string; viewId?: number | null; filters?: Filter[]; filterType?: FilterType; [key: `filter__${number}`]: string; orderBy?: string; includeFields?: string; exclude?: string; sourceTableViewId?: number | null; } export interface ListRowsResponse extends PaginationParams { count: number; next: string | null; previous: string | null; results: T[]; } export interface CreateRowParams { before?: number; sendWebhookEvents?: boolean; userFieldNames?: boolean; } export interface UpdateRowParams { sendWebhookEvents?: boolean; userFieldNames?: boolean; } export interface DeleteRowParams { sendWebhookEvents?: boolean; } export interface MoveRowParams { beforeId?: number | null; userFieldNames?: boolean; } export interface BatchCreateRowsPayload> { items: T[]; } export interface BatchUpdateRowsPayload { items: T[]; } export interface BatchDeleteRowsPayload { items: number[]; } export interface GetAdjacentRowParams { viewId?: number; search?: string; userFieldNames?: boolean; } export interface RowHistoryEntry { id: number; actionType: string; user: { id: number; name: string; }; timestamp: string; before: Record; after: Record; fieldsMetadata: Record; } export interface ListRowHistoryParams extends PaginationParams { } export interface ListRowHistoryResponse extends PaginationParams { count: number; next: string | null; previous: string | null; results: RowHistoryEntry[]; } export interface ListRowNamesParams { [tableParam: `table__${number}`]: string; } export interface ListRowNamesResponse { [tableId: string]: { [rowId: string]: string; }; } export interface RowComment { id: number; userId: number | null; firstName?: string; tableId: number; rowId: number; message: any; createdOn: string; updatedOn: string; edited: boolean; trashed: boolean; } export interface ListRowCommentsParams extends PaginationParams { } export interface ListRowCommentsResponse extends PaginationParams { count: number; next: string | null; previous: string | null; results: RowComment[]; } export interface CreateRowCommentPayload { message: any; } export interface UpdateRowCommentPayload { message?: any; } export interface UpdateRowCommentNotificationModePayload { mode: 'all' | 'mentions'; } export interface PublicViewFilters { filterType: 'AND' | 'OR'; filters?: PublicViewFilter[]; } export interface PublicViewFilter { field: number; type: string; value: string; } export interface BaseField { id: number; tableId: number; name: string; order: number; type: string; primary: boolean; readOnly: boolean; immutableType: boolean | null; immutableProperties: boolean | null; description: string | null; } export type Field = BaseField & { [key: string]: any; }; export interface FieldCreateRequest { name: string; type: string; [key: string]: any; } export interface FieldUpdateRequest { name?: string; [key: string]: any; } export interface RelatedFields { relatedFields: Field[]; } export interface UniqueRowValues { values: string[]; } export interface UniqueRowValuesParams { limit?: number; splitCommaSeparated?: boolean; } export interface DuplicateFieldJobResponse extends BaserowJob { originalField: Field; duplicatedField: Field & RelatedFields; } export interface DuplicateFieldParams { duplicateData?: boolean; clientSessionId?: string; clientUndoRedoActionGroupId?: string; } export interface GenerateAIFieldValuesRequest { rowIds: number[]; } export {};