internetarchive-sdk-js
Version:
NodeJS / Typescript SDK for Internet Archive APIs
91 lines (90 loc) • 2.42 kB
TypeScript
import { z } from 'zod';
import { ia, Mediatype, UpdateItemRequestData, UpdateItemRequestPatch, CreateItemRequestHeaders, UploadFileHeaders } from './schema.js';
export type IaOptions = z.infer<typeof ia.Options>;
export type Mediatype = z.infer<typeof Mediatype>;
export type CreateItemRequestHeaders = z.infer<typeof CreateItemRequestHeaders>;
export type UpdateItemParams = Record<string, unknown>;
export type UpdateItemRequestPatch = z.infer<typeof UpdateItemRequestPatch>;
export type UpdateItemRequestData = z.infer<typeof UpdateItemRequestData>;
export type UploadFileHeaders = z.infer<typeof UploadFileHeaders>;
export interface CreateItemParams {
identifier: string;
collection: string;
mediatype: Mediatype;
upload: FileUpload;
metadata?: Record<string, unknown>;
}
export interface CreateItemResponse {
identifier: string;
metadata: Record<string, unknown>;
upload: {
filename: string;
};
}
export interface UpdateItemResponse {
success: boolean;
error?: string;
task_id?: number;
log?: string;
}
export interface GetItemsParams {
filters?: {
collection?: string;
subject?: string;
creator?: string;
};
options?: {
fields?: string;
rows?: number;
};
}
export interface GetItemsResponse {
responseHeader: {
status: number;
QTtime: number;
params: Record<string, unknown>;
};
response: {
numFound: number;
start: 0;
docs: Record<string, unknown>[];
};
}
export interface GetItemResponse {
created: number;
d1: string;
d2: string;
dir: string;
files: Record<string, unknown>[];
files_count: number;
metadata: Record<string, unknown>;
server: string;
uniq: number;
workable_servers: string[];
}
export interface FileUpload {
filename: string;
path?: string;
data?: Buffer;
}
export interface UploadFileParams {
identifier: string;
mediatype: Mediatype;
file: FileUpload;
}
export interface GetItemTasksResponse {
succes: boolean;
value: Record<string, unknown>;
}
/**
* @see {@link https://archive.org/developers/tasks.html#criteria Archive.org - Tasks API - Criteria}
*/
export interface TaskCriteria {
task_id?: number;
server?: string;
cmd?: string;
args?: string;
submitter?: string;
priority?: number;
wait_admin?: number;
}