You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
745 lines
14 KiB
745 lines
14 KiB
import { EncryptionCipher, EntityType, PaginationResults, PolicyType } from "./explorer.ts";
|
|
import { Capacity } from "./user.ts";
|
|
import { TaskStatus, TaskSummary, TaskType } from "./workflow.ts";
|
|
|
|
export interface MetricsSummary {
|
|
dates: string[];
|
|
files: number[];
|
|
users: number[];
|
|
shares: number[];
|
|
file_total: number;
|
|
user_total: number;
|
|
share_total: number;
|
|
entities_total: number;
|
|
generated_at: string;
|
|
}
|
|
|
|
export interface Version {
|
|
version: string;
|
|
pro: boolean;
|
|
commit: string;
|
|
}
|
|
|
|
export interface HomepageSummary {
|
|
metrics_summary?: MetricsSummary;
|
|
site_urls: string[];
|
|
version: Version;
|
|
}
|
|
|
|
export interface ManualRefreshLicenseService {
|
|
license: string;
|
|
}
|
|
|
|
export interface GetSettingService {
|
|
keys: string[];
|
|
}
|
|
|
|
export interface SetSettingService {
|
|
settings: {
|
|
[key: string]: string;
|
|
};
|
|
}
|
|
|
|
export interface GroupEnt extends CommonMixin {
|
|
name: string;
|
|
max_storage?: number;
|
|
speed_limit?: number;
|
|
permissions?: string;
|
|
edges: {
|
|
storage_policies?: StoragePolicy;
|
|
allowed_policies?: StoragePolicy[];
|
|
};
|
|
total_users?: number;
|
|
settings?: GroupSetting;
|
|
}
|
|
|
|
export interface GroupSetting {
|
|
compress_size?: number;
|
|
decompress_size?: number;
|
|
remote_download_options?: Record<string, any>;
|
|
source_batch?: number;
|
|
aria2_batch?: number;
|
|
aria2_task_limit?: number;
|
|
aria2_max_file_size?: number;
|
|
max_walked_files?: number;
|
|
trash_retention?: number;
|
|
redirected_source?: boolean;
|
|
login_ip_whitelist?: string[];
|
|
default_pinned?: number[];
|
|
allowed_nodes?: number[];
|
|
allow_select_node?: boolean;
|
|
}
|
|
|
|
export interface AdminListGroupResponse {
|
|
groups: GroupEnt[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface QQConnectConfig {
|
|
app_id?: string;
|
|
app_secret?: string;
|
|
direct_sign_in?: boolean;
|
|
}
|
|
|
|
export interface LogtoConfig {
|
|
endpoint?: string;
|
|
app_id?: string;
|
|
app_secret?: string;
|
|
direct_sign_in?: boolean;
|
|
display_name?: string;
|
|
direct_sso?: string;
|
|
}
|
|
|
|
export interface FetchWOPIDiscoveryService {
|
|
endpoint: string;
|
|
}
|
|
|
|
export interface ThumbGeneratorTestService {
|
|
name: string;
|
|
executable: string;
|
|
}
|
|
|
|
export interface TestSMTPService {
|
|
to: string;
|
|
settings: {
|
|
[key: string]: string;
|
|
};
|
|
}
|
|
|
|
export enum QueueType {
|
|
IO_INTENSE = "io_intense",
|
|
MEDIA_META = "media_meta",
|
|
RECYCLE = "recycle",
|
|
THUMB = "thumb",
|
|
REMOTE_DOWNLOAD = "remote_download",
|
|
}
|
|
|
|
export interface QueueMetric {
|
|
name: QueueType;
|
|
busy_workers: number;
|
|
success_tasks: number;
|
|
failure_tasks: number;
|
|
submitted_tasks: number;
|
|
suspending_tasks: number;
|
|
}
|
|
|
|
export interface CommonMixin {
|
|
id: number;
|
|
created_at?: string;
|
|
updated_at?: string;
|
|
deleted_at?: string;
|
|
}
|
|
|
|
export enum PolicyStatus {
|
|
active = "active",
|
|
suspended = "suspended",
|
|
}
|
|
|
|
export interface StoragePolicy extends CommonMixin {
|
|
name: string;
|
|
type: PolicyType;
|
|
status?: PolicyStatus;
|
|
server?: string;
|
|
bucket_name?: string;
|
|
is_private?: boolean;
|
|
access_key?: string;
|
|
secret_key?: string;
|
|
max_size?: number;
|
|
auto_rename?: boolean;
|
|
dir_name_rule?: string;
|
|
file_name_rule?: string;
|
|
settings?: PolicySetting;
|
|
node_id?: number;
|
|
edges: {
|
|
users?: User[];
|
|
groups?: GroupEnt[];
|
|
node?: Node;
|
|
};
|
|
entities_count?: number;
|
|
entities_size?: number;
|
|
hash_id?: string;
|
|
}
|
|
|
|
export enum NodeType {
|
|
master = "master",
|
|
slave = "slave",
|
|
}
|
|
|
|
export interface ListNodeResponse {
|
|
nodes: Node[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface Node extends CommonMixin {
|
|
name?: string;
|
|
status?: NodeStatus;
|
|
type?: NodeType;
|
|
server?: string;
|
|
slave_key?: string;
|
|
capabilities?: string;
|
|
weight?: number;
|
|
settings?: NodeSetting;
|
|
edges: {
|
|
storage_policy?: StoragePolicy[];
|
|
};
|
|
}
|
|
|
|
export enum DownloaderProvider {
|
|
qbittorrent = "qbittorrent",
|
|
aria2 = "aria2",
|
|
ytdlp = "ytdlp",
|
|
}
|
|
|
|
export interface QBittorrentSetting {
|
|
server?: string;
|
|
user?: string;
|
|
password?: string;
|
|
options?: Record<string, string>;
|
|
temp_path?: string;
|
|
}
|
|
|
|
export interface Aria2Setting {
|
|
server?: string;
|
|
token?: string;
|
|
options?: Record<string, string>;
|
|
temp_path?: string;
|
|
}
|
|
|
|
export interface YtdlpSetting {
|
|
binary?: string;
|
|
options?: Record<string, string>;
|
|
temp_path?: string;
|
|
}
|
|
|
|
export interface URLValidationSetting {
|
|
disabled?: boolean;
|
|
allowed_hosts?: string[];
|
|
allowed_cidrs?: string[];
|
|
}
|
|
|
|
export interface NodeSetting {
|
|
provider?: DownloaderProvider;
|
|
qbittorrent?: QBittorrentSetting;
|
|
aria2?: Aria2Setting;
|
|
ytdlp?: YtdlpSetting;
|
|
interval?: number;
|
|
wait_for_seeding?: boolean;
|
|
url_validation?: URLValidationSetting;
|
|
}
|
|
|
|
export enum NodeStatus {
|
|
active = "active",
|
|
suspended = "suspended",
|
|
}
|
|
|
|
export interface PolicySetting {
|
|
token?: string;
|
|
file_type?: string[];
|
|
is_file_type_deny_list?: boolean;
|
|
file_regexp?: string;
|
|
is_name_regexp_deny_list?: boolean;
|
|
allow_native_name?: boolean;
|
|
od_redirect?: string;
|
|
custom_proxy?: boolean;
|
|
proxy_server?: string;
|
|
internal_proxy?: boolean;
|
|
od_driver?: string;
|
|
region?: string;
|
|
server_side_endpoint?: string;
|
|
chunk_size?: number;
|
|
tps_limit?: number;
|
|
tps_limit_burst?: number;
|
|
s3_path_style?: boolean;
|
|
thumb_exts?: string[];
|
|
thumb_support_all_exts?: boolean;
|
|
thumb_max_size?: number;
|
|
relay?: boolean;
|
|
pre_allocate?: boolean;
|
|
media_meta_exts?: string[];
|
|
media_meta_generator_proxy?: boolean;
|
|
thumb_generator_proxy?: boolean;
|
|
native_media_processing?: boolean;
|
|
s3_delete_batch_size?: number;
|
|
stream_saver?: boolean;
|
|
use_cname?: boolean;
|
|
source_auth?: boolean;
|
|
qiniu_upload_cdn?: boolean;
|
|
chunk_concurrency?: number;
|
|
encryption?: boolean;
|
|
lb_policies?: LBPolicyRef[];
|
|
}
|
|
|
|
export interface LBPolicyRef {
|
|
policy: number;
|
|
weight?: number;
|
|
}
|
|
|
|
export interface User extends CommonMixin {
|
|
email: string;
|
|
nick: string;
|
|
password?: string;
|
|
settings?: UserSetting;
|
|
status?: UserStatus;
|
|
storage?: number;
|
|
avatar?: string;
|
|
credit?: number;
|
|
group_expires?: string;
|
|
ban_expires?: string;
|
|
ban_reason?: string;
|
|
last_login?: string;
|
|
notify_date?: string;
|
|
group_users?: number;
|
|
previous_group?: number;
|
|
unmanaged_email?: boolean;
|
|
edges: {
|
|
group?: GroupEnt;
|
|
storage_policy?: StoragePolicy;
|
|
openid?: OpenID[];
|
|
passkey?: Passkey[];
|
|
};
|
|
|
|
hash_id?: string;
|
|
two_fa_enabled?: boolean;
|
|
capacity?: Capacity;
|
|
}
|
|
|
|
export interface OpenID extends CommonMixin {
|
|
provider?: number;
|
|
}
|
|
|
|
export interface Passkey extends CommonMixin {
|
|
name?: string;
|
|
}
|
|
|
|
export enum UserStatus {
|
|
active = "active",
|
|
inactive = "inactive",
|
|
manual_banned = "manual_banned",
|
|
sys_banned = "sys_banned",
|
|
}
|
|
|
|
export interface UserSetting {
|
|
profile_off?: boolean;
|
|
preferred_policy?: number;
|
|
preferred_theme?: string;
|
|
version_retention?: boolean;
|
|
version_retention_ext?: string[];
|
|
version_retention_max?: number;
|
|
pined?: PinedFile[];
|
|
language?: string;
|
|
}
|
|
|
|
export interface PinedFile {
|
|
uri: string;
|
|
name?: string;
|
|
}
|
|
|
|
export interface ListStoragePolicyResponse {
|
|
policies: StoragePolicy[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface AdminListService {
|
|
page: number;
|
|
page_size: number;
|
|
order_by: string;
|
|
order_direction: string;
|
|
conditions?: Record<string, string>;
|
|
searches?: Record<string, string>;
|
|
}
|
|
|
|
export interface UpsertStoragePolicyService {
|
|
policy: StoragePolicy;
|
|
}
|
|
|
|
export interface CreateStoragePolicyCorsService {
|
|
policy: StoragePolicy;
|
|
}
|
|
|
|
export interface OauthCredentialStatus {
|
|
last_refresh_time: string;
|
|
valid: boolean;
|
|
}
|
|
|
|
export interface GetOauthRedirectService {
|
|
id: number;
|
|
secret: string;
|
|
app_id: string;
|
|
}
|
|
|
|
export interface FinishOauthCallbackService {
|
|
code: string;
|
|
state: string;
|
|
}
|
|
|
|
export interface UpsertGroupService {
|
|
group: GroupEnt;
|
|
}
|
|
|
|
export interface TestNodeService {
|
|
node: Node;
|
|
}
|
|
|
|
export interface TestNodeDownloaderService extends TestNodeService {}
|
|
|
|
export interface UpsertNodeService extends TestNodeService {}
|
|
|
|
export interface ListUserResponse {
|
|
users: User[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface UpsertUserService {
|
|
user: User;
|
|
password?: string;
|
|
two_fa?: string;
|
|
}
|
|
|
|
export interface BatchIDService {
|
|
ids: number[];
|
|
force?: boolean;
|
|
}
|
|
|
|
/*
|
|
FilePermissions struct {
|
|
Groups map[int]*boolset.BooleanSet `json:"groups,omitempty"`
|
|
Users map[int]*boolset.BooleanSet `json:"users,omitempty"`
|
|
}
|
|
|
|
*/
|
|
|
|
export interface File extends CommonMixin {
|
|
type?: number;
|
|
name?: string;
|
|
owner_id?: number;
|
|
size?: number;
|
|
primary_entity?: number;
|
|
file_children?: number;
|
|
is_symbolic?: boolean;
|
|
storage_policy_files?: number;
|
|
edges: {
|
|
owner?: User;
|
|
storage_policies?: StoragePolicy;
|
|
metadata?: Metadata[];
|
|
entities?: Entity[];
|
|
direct_links?: DirectLink[];
|
|
shares?: Share[];
|
|
};
|
|
|
|
user_hash_id?: string;
|
|
file_hash_id?: string;
|
|
direct_link_map?: Record<number, string>;
|
|
}
|
|
|
|
export interface DirectLink extends CommonMixin {
|
|
name?: string;
|
|
downloads?: number;
|
|
speed?: number;
|
|
}
|
|
|
|
export interface Entity extends CommonMixin {
|
|
type?: EntityType;
|
|
source?: string;
|
|
size?: number;
|
|
reference_count?: number;
|
|
storage_policy_entities?: number;
|
|
upload_session_id?: string;
|
|
edges: {
|
|
user?: User;
|
|
storage_policy?: StoragePolicy;
|
|
file?: File[];
|
|
};
|
|
props?: EntityProps;
|
|
|
|
user_hash_id?: string;
|
|
user_hash_id_map?: Record<number, string>;
|
|
}
|
|
|
|
export interface EntityProps {
|
|
encrypt_metadata?: EncryptMetadata;
|
|
}
|
|
|
|
export interface EncryptMetadata {
|
|
algorithm: EncryptionCipher;
|
|
}
|
|
|
|
export interface Metadata extends CommonMixin {
|
|
name?: string;
|
|
value?: string;
|
|
is_public?: boolean;
|
|
}
|
|
|
|
export interface ListFileResponse {
|
|
files: File[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface UpsertFileService {
|
|
file: File;
|
|
}
|
|
|
|
export interface ListEntityResponse {
|
|
entities: Entity[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface LogEntry {
|
|
category: number;
|
|
failed?: boolean;
|
|
error?: string;
|
|
user_agent?: string;
|
|
is_system?: boolean;
|
|
reason?: string;
|
|
email_to?: string;
|
|
email_title?: string;
|
|
original_name?: string;
|
|
new_name?: string;
|
|
from?: string;
|
|
to?: string;
|
|
entity_create_time?: string;
|
|
storage_policy_id?: string;
|
|
storage_policy_name?: string;
|
|
account_id?: number;
|
|
account?: string;
|
|
account_uri?: string;
|
|
payment_id?: number;
|
|
points_change?: number;
|
|
sku?: string;
|
|
storage_size?: number;
|
|
expire?: string;
|
|
group_id?: number;
|
|
group_id_from?: number;
|
|
direct_link_id?: string;
|
|
openid_provider?: number;
|
|
sub?: string;
|
|
name?: string;
|
|
passkey_id?: number;
|
|
exts?: Record<string, string>;
|
|
}
|
|
|
|
export interface AuditLog extends CommonMixin {
|
|
type?: number;
|
|
correlation_id?: string;
|
|
ip?: string;
|
|
content?: LogEntry;
|
|
edges: {
|
|
user?: User;
|
|
file?: File;
|
|
entity?: Entity;
|
|
share?: Share;
|
|
};
|
|
|
|
user_hash_id?: string;
|
|
}
|
|
|
|
export interface ListAuditLogResponse {
|
|
logs: AuditLog[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface TaskPublicState {
|
|
error?: string;
|
|
error_history?: string[];
|
|
executed_duration?: number;
|
|
retry_count?: number;
|
|
resume_time?: number;
|
|
slave_task_props?: SlaveTaskProps;
|
|
}
|
|
|
|
export interface SlaveTaskProps {
|
|
node_id?: number;
|
|
master_site_url?: string;
|
|
master_site_id?: string;
|
|
master_site_version?: string;
|
|
}
|
|
|
|
export interface Task extends CommonMixin {
|
|
type?: string;
|
|
status?: TaskStatus;
|
|
public_state?: TaskPublicState;
|
|
private_state?: string;
|
|
correlation_id?: string;
|
|
creator_ip?: string;
|
|
user_tasks?: number;
|
|
edges: {
|
|
user?: User;
|
|
};
|
|
|
|
user_hash_id?: string;
|
|
task_hash_id?: string;
|
|
summary?: TaskSummary;
|
|
node?: Node;
|
|
}
|
|
|
|
export interface ListTaskResponse {
|
|
tasks: Task[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface Share extends CommonMixin {
|
|
password?: string;
|
|
views?: number;
|
|
downloads?: number;
|
|
expires?: string;
|
|
remain_downloads?: number;
|
|
edges: {
|
|
user?: User;
|
|
file?: File;
|
|
};
|
|
|
|
user_hash_id?: string;
|
|
share_link?: string;
|
|
}
|
|
|
|
export interface ListShareResponse {
|
|
shares: Share[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface CleanupTaskService {
|
|
not_after: string;
|
|
types?: TaskType[];
|
|
status?: TaskStatus[];
|
|
}
|
|
|
|
export interface OAuthClientProps {
|
|
icon?: string;
|
|
refresh_token_ttl?: number;
|
|
}
|
|
|
|
export interface OAuthClient extends CommonMixin {
|
|
guid?: string;
|
|
secret?: string;
|
|
name?: string;
|
|
homepage_url?: string; // Not used
|
|
redirect_uris?: string[];
|
|
scopes?: string[];
|
|
props?: OAuthClientProps;
|
|
is_enabled?: boolean;
|
|
}
|
|
|
|
export interface GetOAuthClientResponse extends OAuthClient {
|
|
is_system?: boolean;
|
|
total_grants?: number;
|
|
}
|
|
|
|
export interface ListOAuthClientResponse {
|
|
clients: GetOAuthClientResponse[];
|
|
pagination: PaginationResults;
|
|
}
|
|
|
|
export interface UpsertOAuthClientService {
|
|
client: OAuthClient;
|
|
}
|
|
|
|
export interface GiftCode {
|
|
id: number;
|
|
code: string;
|
|
type: "points" | "storage" | "group";
|
|
amount: number;
|
|
duration?: number;
|
|
used_by_id?: number;
|
|
used_at?: string;
|
|
des?: string;
|
|
created_at: string;
|
|
edges?: {
|
|
redeemer?: {
|
|
id: number;
|
|
email: string;
|
|
nick: string;
|
|
};
|
|
};
|
|
}
|
|
|
|
export interface GiftCodeListResponse {
|
|
codes: GiftCode[];
|
|
total: number;
|
|
}
|
|
|
|
export interface Sku {
|
|
id: number;
|
|
name: string;
|
|
type: "storage" | "group";
|
|
amount: number;
|
|
duration?: number;
|
|
price?: number;
|
|
points?: number;
|
|
label?: string;
|
|
des?: string;
|
|
enabled: boolean;
|
|
weight: number;
|
|
created_at?: string;
|
|
updated_at?: string;
|
|
}
|
|
|
|
export interface SkuUpsertService {
|
|
sku: Sku;
|
|
}
|
|
|
|
export interface ActivityEvent {
|
|
id: string;
|
|
type: number;
|
|
actor_id?: string;
|
|
actor_name?: string;
|
|
ip?: string;
|
|
cid?: string;
|
|
file_id?: string;
|
|
share_id?: string;
|
|
extra?: Record<string, unknown>;
|
|
created_at: number;
|
|
}
|
|
|
|
export interface ActivityEventListResponse {
|
|
events: ActivityEvent[];
|
|
total: number;
|
|
}
|
|
|
|
export interface CreateGiftCodeService {
|
|
type: "points" | "storage" | "group";
|
|
amount: number;
|
|
duration?: number;
|
|
qty: number;
|
|
des?: string;
|
|
}
|
|
|
|
export interface AdjustCreditService {
|
|
email: string;
|
|
delta: number;
|
|
des?: string;
|
|
}
|
|
|
|
export type AbuseTargetType = "share" | "user";
|
|
export type AbuseReportStatus = "open" | "resolved" | "dismissed";
|
|
|
|
export interface AbuseReport {
|
|
id: string;
|
|
reporter_id?: string;
|
|
reporter_email?: string;
|
|
target_type: AbuseTargetType;
|
|
target_id: string;
|
|
reason: number;
|
|
description: string;
|
|
status: AbuseReportStatus;
|
|
admin_note: string;
|
|
created_at: number;
|
|
}
|
|
|
|
export interface AbuseReportListResponse {
|
|
reports: AbuseReport[];
|
|
total: number;
|
|
}
|
|
|
|
export interface ReportAbuseService {
|
|
target_type: AbuseTargetType;
|
|
target: string;
|
|
reason: number;
|
|
description?: string;
|
|
[x: string]: unknown;
|
|
}
|
|
|
|
export interface UpdateAbuseReportService {
|
|
status: AbuseReportStatus;
|
|
admin_note?: string;
|
|
block_share?: boolean;
|
|
}
|