diff --git a/CLAUDE.md b/CLAUDE.md index 48755cd..13ae485 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -158,15 +158,15 @@ A user's mutual connections and pending requests. All take `userId`. `fetchConnections`, `fetchConnectionsCount`, `fetchSentPendingConnections`, `fetchReceivedPendingConnections`, `acceptConnection`, `declineConnection`, `removeConnection` -### 8. Spaces Module (33 functions) +### 8. Spaces Module (31 functions) -Space lifecycle, membership, moderation, rules, and digest config — documented across three pages (`spaces`, `spaces-members`, `spaces-moderation`). +Space lifecycle, membership, moderation, and rules — documented across three pages (`spaces`, `spaces-members`, `spaces-moderation`). Lifecycle: `createSpace`, `fetchManySpaces`, `fetchSpace`, `fetchSpaceByShortId`, `fetchSpaceBySlug`, `fetchUserSpaces`, `checkSlugAvailability`, `updateSpace`, `deleteSpace`, `fetchChildSpaces`, `fetchSpaceBreadcrumb` Members: `joinSpace`, `leaveSpace`, `checkMyMembership`, `fetchSpaceMembers`, `fetchSpaceTeam`, `updateMemberRole`, `approveMembership`, `declineMembership`, `banMember`, `unbanMember` -Moderation/rules/digest: `handleEntityReport`, `handleCommentReport` (both take an `actions` array), `moderateSpaceEntity`, `moderateSpaceComment`, `fetchManyRules`, `fetchRule`, `createRule`, `updateRule`, `deleteRule`, `reorderRules`, `fetchDigestConfig`, `updateDigestConfig` +Moderation/rules: `handleEntityReport`, `handleCommentReport` (both take an `actions` array), `moderateSpaceEntity`, `moderateSpaceComment`, `fetchManyRules`, `fetchRule`, `createRule`, `updateRule`, `deleteRule`, `reorderRules` ### 9. Search Module (4 functions) diff --git a/SERVER_ENDPOINTS.md b/SERVER_ENDPOINTS.md index cc1086d..5024e4f 100644 --- a/SERVER_ENDPOINTS.md +++ b/SERVER_ENDPOINTS.md @@ -206,8 +206,6 @@ Base path: `/v7/:projectId/` | GET | `/spaces/:spaceId` | no key needed | `spaces.fetchSpace` | yes | | PATCH | `/spaces/:spaceId` | can access with a key | `spaces.updateSpace` | yes | | DELETE | `/spaces/:spaceId` | can access with a key | `spaces.deleteSpace` | yes | -| GET | `/spaces/:spaceId/digest-config` | can access with a key | `spaces.fetchDigestConfig` | yes | -| PATCH | `/spaces/:spaceId/digest-config` | can access with a key | `spaces.updateDigestConfig` | yes | | POST | `/spaces/:spaceId/join` | can access with a key | `spaces.joinSpace` | yes | | GET | `/spaces/:spaceId/members` | no key needed | `spaces.fetchSpaceMembers` | yes | | GET | `/spaces/:spaceId/team` | no key needed | `spaces.fetchSpaceTeam` | yes | diff --git a/__tests__/spaces-moderation.test.ts b/__tests__/spaces-moderation.test.ts index 3ca1eed..474ae24 100644 --- a/__tests__/spaces-moderation.test.ts +++ b/__tests__/spaces-moderation.test.ts @@ -1,7 +1,6 @@ import { createRule, deleteRule, - fetchDigestConfig, fetchManyRules, fetchRule, getSpaceConversation, @@ -12,7 +11,6 @@ import { moderateSpaceComment, moderateSpaceEntity, reorderRules, - updateDigestConfig, updateRule, } from "../src/modules/spaces"; import { makeClient } from "./helpers/mockClient"; @@ -161,20 +159,6 @@ describe("node-sdk spaces (moderation/reports) — request shaping", () => { ruleIds: ["r2", "r1"], }); }); - - it("fetchDigestConfig hits the digest-config route with no params", async () => { - const { client, projectInstance } = makeClient(); - await fetchDigestConfig(client, { spaceId: "s1" }); - expect(projectInstance.get).toHaveBeenCalledWith("/spaces/s1/digest-config"); - }); - - it("updateDigestConfig strips spaceId into the path and patches the rest", async () => { - const { client, projectInstance } = makeClient(); - await updateDigestConfig(client, { spaceId: "s1", digestEnabled: true }); - expect(projectInstance.patch).toHaveBeenCalledWith("/spaces/s1/digest-config", { - digestEnabled: true, - }); - }); }); describe("node-sdk spaces (moderation/reports) — response mapping", () => { @@ -310,20 +294,4 @@ describe("node-sdk spaces (moderation/reports) — response mapping", () => { reorderRules(client, { spaceId: "s1", ruleIds: ["r2", "r1"] }), ).resolves.toEqual(rules); }); - - it("fetchDigestConfig returns response.data", async () => { - const { client, projectInstance } = makeClient(); - const config = { digestEnabled: true }; - projectInstance.get.mockResolvedValueOnce({ data: config }); - await expect(fetchDigestConfig(client, { spaceId: "s1" })).resolves.toEqual(config); - }); - - it("updateDigestConfig returns response.data", async () => { - const { client, projectInstance } = makeClient(); - const config = { digestEnabled: false }; - projectInstance.patch.mockResolvedValueOnce({ data: config }); - await expect( - updateDigestConfig(client, { spaceId: "s1", digestEnabled: false }), - ).resolves.toEqual(config); - }); }); diff --git a/src/index.ts b/src/index.ts index bcc2efd..a5a6177 100644 --- a/src/index.ts +++ b/src/index.ts @@ -143,7 +143,7 @@ export type { } from "./interfaces/SpaceReputation"; export type { UserSearchParams } from "./interfaces/UserSearch"; export type { Collection } from "./interfaces/Collection"; -export type { Space, SpaceDetailed, SpacePreview, DigestConfig, SpaceBreadcrumb } from "./interfaces/Space"; +export type { Space, SpaceDetailed, SpacePreview, SpaceBreadcrumb } from "./interfaces/Space"; export type { SpaceMember, SpaceMemberWithUser } from "./interfaces/SpaceMember"; export type { Rule } from "./interfaces/Rule"; export type { Follow } from "./interfaces/Follow"; diff --git a/src/interfaces/Space.ts b/src/interfaces/Space.ts index 02f64aa..44ca222 100644 --- a/src/interfaces/Space.ts +++ b/src/interfaces/Space.ts @@ -150,14 +150,6 @@ export interface DeleteSpaceResponse { }; } -export interface DigestConfig { - digestEnabled: boolean; - digestWebhookUrl: string | null; - digestWebhookSecret: string | null; // Masked as "••••••••" when set - digestScheduleHour: number | null; - digestTimezone: string | null; -} - export interface SpaceBreadcrumb { breadcrumb: SpacePreview[]; depth: number; diff --git a/src/modules/spaces/fetchDigestConfig.ts b/src/modules/spaces/fetchDigestConfig.ts deleted file mode 100644 index d881202..0000000 --- a/src/modules/spaces/fetchDigestConfig.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { SublayHttpClient } from "../../core/client"; -import { DigestConfig } from "../../interfaces/Space"; - -export interface FetchDigestConfigProps { - spaceId: string; -} - -export async function fetchDigestConfig( - client: SublayHttpClient, - data: FetchDigestConfigProps -): Promise { - const { spaceId } = data; - const response = await client.projectInstance.get( - `/spaces/${spaceId}/digest-config` - ); - return response.data; -} diff --git a/src/modules/spaces/index.ts b/src/modules/spaces/index.ts index 998b896..b72a7a0 100644 --- a/src/modules/spaces/index.ts +++ b/src/modules/spaces/index.ts @@ -31,8 +31,6 @@ export { handleCommentReport } from "./handleCommentReport"; export { moderateSpaceEntity } from "./moderateSpaceEntity"; export { setSpaceEntityNsfw } from "./setSpaceEntityNsfw"; export { moderateSpaceComment } from "./moderateSpaceComment"; -export { fetchDigestConfig } from "./fetchDigestConfig"; -export { updateDigestConfig } from "./updateDigestConfig"; export { getSpaceConversation } from "./getSpaceConversation"; export { moderateSpaceChatMessage } from "./moderateSpaceChatMessage"; export { handleSpaceChatReport } from "./handleSpaceChatReport"; diff --git a/src/modules/spaces/updateDigestConfig.ts b/src/modules/spaces/updateDigestConfig.ts deleted file mode 100644 index 691e6a3..0000000 --- a/src/modules/spaces/updateDigestConfig.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { SublayHttpClient } from "../../core/client"; -import { DigestConfig } from "../../interfaces/Space"; - -export interface UpdateDigestConfigProps { - spaceId: string; - digestEnabled?: boolean; - digestWebhookUrl?: string; - digestWebhookSecret?: string; - digestScheduleHour?: number; - digestTimezone?: string; -} - -export async function updateDigestConfig( - client: SublayHttpClient, - data: UpdateDigestConfigProps -): Promise { - const { spaceId, ...body } = data; - const response = await client.projectInstance.patch( - `/spaces/${spaceId}/digest-config`, - body - ); - return response.data; -}