@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
76 lines (65 loc) • 1.83 kB
text/typescript
import { defineModule, defineRoute } from "../../shared/define-module"
import type {
AffectedUsersInput,
AffectedUsersResponse,
CleanRequest,
CleanResponse,
FeatureFlagListResponse,
FeatureFlagResponse,
FeatureFlagUpdateInput,
FeatureStatsInput,
FeatureStatsResponse,
MessageResponse,
MintRequest,
MintResponse,
RemoveOverrideInput,
UserOverrideInput,
} from "./types"
/**
* Admin module definition with nested routes
*/
export const adminModule = defineModule({
name: "admin",
prefix: "/admin",
routes: {
// Feature flags management (nested)
featureFlags: {
list: defineRoute<never, FeatureFlagListResponse>(
"GET",
"/feature-flags",
),
update: defineRoute<FeatureFlagUpdateInput, FeatureFlagResponse>(
"PUT",
"/feature-flags/{name}",
),
override: defineRoute<UserOverrideInput, MessageResponse>(
"POST",
"/feature-flags/{name}/overrides",
),
removeOverride: defineRoute<RemoveOverrideInput, MessageResponse>(
"DELETE",
"/feature-flags/{name}/overrides/{userId}",
),
stats: defineRoute<FeatureStatsInput, FeatureStatsResponse>(
"GET",
"/feature-flags/{name}/stats",
),
affectedUsers: defineRoute<AffectedUsersInput, AffectedUsersResponse>(
"GET",
"/feature-flags/{name}/affected-users",
),
},
// Clean operations (nested)
clean: {
execute: defineRoute<CleanRequest, CleanResponse>("POST", "/clean"),
},
// Mint operations (nested)
mint: {
execute: defineRoute<MintRequest, MintResponse>("POST", "/mintdscsafr"),
},
},
})
// Export the API type
export type AdminAPI = typeof adminModule.api
// Re-export types for external consumption
export type * from "./types"