@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
65 lines (55 loc) • 1.55 kB
text/typescript
import { defineModule, defineRoute } from "../../shared/define-module"
import type { EmptyResponse } from "../../types"
import type {
CreateListRequest,
DiscoverListsResponse,
DiscoverQuery,
ExportInput,
ExportResponse,
GetAnalyticsInput,
ImportListRequest,
ListAnalyticsResponse,
ListResponse,
ListsQuery,
ListsResponse,
RemoveFeedInput,
TrendingListsResponse,
TrendingQuery,
} from "./types"
/**
* Lists module definition with nested routes
*/
export const listsModule = defineModule({
name: "lists",
prefix: "/lists",
routes: {
// Basic list operations
list: defineRoute<ListsQuery, ListsResponse>("GET", "/"),
create: defineRoute<CreateListRequest, ListResponse>("POST", "/"),
removeFeed: defineRoute<RemoveFeedInput, EmptyResponse>(
"DELETE",
"/{id}/feeds/{feedId}",
),
// List discovery
discover: defineRoute<DiscoverQuery, DiscoverListsResponse>(
"GET",
"/discover",
),
trending: defineRoute<TrendingQuery, TrendingListsResponse>(
"GET",
"/trending",
),
// List import/export
import: defineRoute<ImportListRequest, ListResponse>("POST", "/import"),
export: defineRoute<ExportInput, ExportResponse>("GET", "/{id}/export"),
// List analytics
getAnalytics: defineRoute<GetAnalyticsInput, ListAnalyticsResponse>(
"GET",
"/{id}/analytics",
),
},
})
// Export the API type
export type ListsAPI = typeof listsModule.api
// Re-export types for external consumption
export type * from "./types"