@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
73 lines (62 loc) • 1.82 kB
text/typescript
import { defineModule, defineRoute } from "../../shared/define-module"
import type {
SubscriptionBatchRequest,
SubscriptionBatchResponse,
SubscriptionCreateRequest,
SubscriptionCreateResponse,
SubscriptionDeleteRequest,
SubscriptionDeleteResponse,
SubscriptionExportQuery,
SubscriptionExportResponse,
SubscriptionGetQuery,
SubscriptionGetResponse,
SubscriptionImportResponse,
SubscriptionParseOpmlResponse,
SubscriptionUpdateRequest,
SubscriptionUpdateResponse,
} from "./types"
/**
* Subscriptions module definition with nested routes
*/
export const subscriptionsModule = defineModule({
name: "subscriptions",
prefix: "/subscriptions",
routes: {
// Basic subscription operations
get: defineRoute<SubscriptionGetQuery, SubscriptionGetResponse>("GET", "/"),
create: defineRoute<SubscriptionCreateRequest, SubscriptionCreateResponse>(
"POST",
"/",
),
update: defineRoute<SubscriptionUpdateRequest, SubscriptionUpdateResponse>(
"PATCH",
"/",
),
delete: defineRoute<SubscriptionDeleteRequest, SubscriptionDeleteResponse>(
"DELETE",
"/",
),
// Batch patch operations
batchUpdate: defineRoute<SubscriptionBatchRequest, SubscriptionBatchResponse>(
"PATCH",
"/batch",
),
// OPML operations
import: defineRoute<FormData, SubscriptionImportResponse>(
"POST",
"/import",
),
export: defineRoute<SubscriptionExportQuery, SubscriptionExportResponse>(
"GET",
"/export",
),
parseOpml: defineRoute<ArrayBuffer, SubscriptionParseOpmlResponse>(
"POST",
"/parse-opml",
),
},
})
// Export the API type
export type SubscriptionsAPI = typeof subscriptionsModule.api
// Re-export types for external consumption
export type * from "./types"