UNPKG

@follow-app/client-sdk

Version:

TypeScript client SDK for Follow RSS Server API

84 lines (73 loc) 2 kB
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 /** * FormData: * file: File * items: string */ import: defineRoute<FormData, SubscriptionImportResponse>( "POST", "/import", { requestType: "formData", }, ), export: defineRoute<SubscriptionExportQuery, SubscriptionExportResponse>( "GET", "/export", ), parseOpml: defineRoute<ArrayBuffer, SubscriptionParseOpmlResponse>( "POST", "/parse-opml", { requestType: "arrayBuffer", }, ), }, }) // Export the API type export type SubscriptionsAPI = typeof subscriptionsModule.api // Re-export types for external consumption export type * from "./types"