apithreads
Version:
Unofficial, Reverse-Engineered Node.js/TypeScript client for Meta's [Threads](https://threads.net).
156 lines (155 loc) • 5.14 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { Extensions, Thread, ThreadsUser } from './threads-types';
export type AndroidDevice = {
manufacturer: string;
model: string;
os_version: number;
os_release: string;
};
export type GetUserProfileResponse = {
data: {
userData: {
user: ThreadsUser;
};
};
extensions: Extensions;
};
export type GetUserProfileThreadsResponse = {
data: {
mediaData?: {
threads: Thread[];
};
};
extensions: Extensions;
};
export type GetUserProfileRepliesResponse = {
data: {
mediaData?: {
threads: Thread[];
};
};
extensions: Extensions;
};
export type GetUserProfileThreadResponse = {
data: {
data: {
containing_thread: Thread;
reply_threads?: Thread[];
};
};
extensions: Extensions;
};
export type GetThreadLikersResponse = {
data: {
likers: {
users: ThreadsUser[];
};
};
extensions: Extensions;
};
export type InstagramImageUploadResponse = {
upload_id: string;
xsharing_nonces: {};
status: 'ok';
};
export type FriendshipStatusResponse = {
friendship_status: {
following: boolean;
followed_by: boolean;
blocking: boolean;
muting: boolean;
is_private: boolean;
incoming_request: boolean;
outgoing_request: boolean;
text_post_app_pre_following: boolean;
is_bestie: boolean;
is_restricted: boolean;
is_feed_favorite: boolean;
is_eligible_to_subscribe: boolean;
};
status: 'ok';
};
export type ThreadsAPIOptions = {
verbose?: boolean;
token?: string;
fbLSDToken?: string;
noUpdateToken?: boolean;
noUpdateLSD?: boolean;
httpAgent?: AxiosRequestConfig['httpAgent'];
httpsAgent?: AxiosRequestConfig['httpsAgent'];
username?: string;
password?: string;
deviceID?: string;
device?: AndroidDevice;
};
export type ThreadsAPIPublishOptions = {
text?: string;
parentPostID?: string;
} & ({
url?: string;
} | {
image?: string;
});
export declare const DEFAULT_DEVICE: AndroidDevice;
export declare class ThreadsAPI {
verbose: boolean;
token?: string;
fbLSDToken: string;
noUpdateToken: boolean;
noUpdateLSD: boolean;
httpAgent?: AxiosRequestConfig['httpAgent'];
httpsAgent?: AxiosRequestConfig['httpsAgent'];
username?: string;
password?: string;
deviceID: string;
device?: AndroidDevice;
userID: string | undefined;
constructor(options?: ThreadsAPIOptions);
_getAppHeaders: () => {
Authorization?: string | undefined;
'User-Agent': string;
'Content-Type': string;
};
_getDefaultHeaders: (username?: string) => {
referer?: string | undefined;
authority: string;
accept: string;
'accept-language': string;
'cache-control': string;
origin: string;
pragma: string;
'Sec-Fetch-Site': string;
'x-asbd-id': string;
'x-fb-lsd': string;
'x-ig-app-id': string;
Authorization?: string | undefined;
'User-Agent': string;
'Content-Type': string;
};
getUserIDfromUsername: (username: string, options?: AxiosRequestConfig) => Promise<string | undefined>;
getCurrentUserID: (options?: AxiosRequestConfig) => Promise<string | undefined>;
getUserProfile: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<ThreadsUser>;
getUserProfileThreads: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<Thread[]>;
getUserProfileReplies: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<Thread[]>;
getPostIDfromThreadID: (threadID: string, options?: AxiosRequestConfig) => Promise<string | undefined>;
getPostIDfromURL: (postURL: string, options?: AxiosRequestConfig) => Promise<string | undefined>;
getThreads: (postID: string, options?: AxiosRequestConfig) => Promise<{
containing_thread: Thread;
reply_threads?: Thread[] | undefined;
}>;
getThreadLikers: (postID: string, options?: AxiosRequestConfig) => Promise<{
users: ThreadsUser[];
}>;
_toggleAuthPostRequest: <T extends unknown>(url: string, options?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<T, any>>;
like: (postID: string, options?: AxiosRequestConfig) => Promise<boolean>;
unlike: (postID: string, options?: AxiosRequestConfig) => Promise<boolean>;
follow: (userID: string, options?: AxiosRequestConfig) => Promise<FriendshipStatusResponse>;
unfollow: (userID: string, options?: AxiosRequestConfig) => Promise<FriendshipStatusResponse>;
getToken: () => Promise<string | undefined>;
publish: (rawOptions: ThreadsAPIPublishOptions | string) => Promise<boolean>;
/**
* @deprecated: use `publish` instead
**/
publishWithImage: (caption: string, imagePath: string) => Promise<boolean>;
uploadImage: (imagePath: string) => Promise<InstagramImageUploadResponse>;
}