@productcraft/social 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/_generated/resources.ts","../src/_generated/types.ts","../src/_generated/client.ts","../src/_generated/errors.ts"],"names":["Social"],"mappings":"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","file":"index.js","sourcesContent":["// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport type { APIClient, APIPromise, PagePromise, PollOptions, RequestOptions } from \"@productcraft/core\";\nimport type * as T from \"./types.js\";\nimport type { UnwrapWebhookEvent, WebhookUnwrapParams } from \"./webhooks.js\";\n\ntype Bound = Readonly<Record<string, string | undefined>>;\n\n/** Split params into [picked, rest] by key. */\nfunction split(params: object | undefined, keys: readonly string[]): [Record<string, unknown>, Record<string, unknown>] {\n const picked: Record<string, unknown> = {};\n const rest: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(params ?? {})) (keys.includes(k) ? picked : rest)[k] = v;\n return [picked, rest];\n}\n\n/** Fill `actor_id` from a scope bound with `.as(actorId)`, unless the call passes one. */\nfunction fillActor<P>(params: P, bound: Bound): P {\n if (bound.actor_id === undefined) return params;\n const p = (params ?? {}) as Record<string, unknown>;\n return (p.actor_id === undefined ? { ...p, actor_id: bound.actor_id } : p) as P;\n}\n\nexport class APIResource {\n protected readonly _client: APIClient;\n /** Path parameters (and `actor_id`) bound by the enclosing scope. */\n protected readonly _b: Bound;\n constructor(client: APIClient, bound: Bound = {}) {\n this._client = client;\n this._b = bound;\n }\n}\n\nvoid split;\nvoid fillActor;\n/** `communities.actors.comments` */\nexport class CommunitiesActorsCommentsResource extends APIResource {\n /**\n * Every comment an actor authored, all statuses (published / hidden / removed) — the GDPR-export view. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param communityId - Community UUID (must belong to the workspace).\n * @param actorId - The data subject — social actor UUID.\n * @param params - `Social.CommunityActorCommentListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-actors-actor-id-comments\n * @example\n * ```ts\n * for await (const comment of social.communities.actors.comments.list(\"cccccccc-cccc-cccc-cccc-cccccccccccc\", \"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(comment);\n * }\n * const page = await social.communities.actors.comments.list(\"cccccccc-cccc-cccc-cccc-cccccccccccc\", \"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, actorId: string, params?: T.CommunityActorCommentListParams, options?: RequestOptions): PagePromise<T.Comment> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\", pathParams: { community_id: communityId, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `communities.actors.reactions` */\nexport class CommunitiesActorsReactionsResource extends APIResource {\n /**\n * Every reaction an actor has given — post reactions and comment reactions unified into one stream, discriminated by `target_type`. The GDPR-export view. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param communityId - Community UUID (must belong to the workspace).\n * @param actorId - The data subject — social actor UUID.\n * @param params - `Social.CommunityActorReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-actors-actor-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.communities.actors.reactions.list(\"cccccccc-cccc-cccc-cccc-cccccccccccc\", \"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(reaction);\n * }\n * const page = await social.communities.actors.reactions.list(\"cccccccc-cccc-cccc-cccc-cccccccccccc\", \"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, actorId: string, params?: T.CommunityActorReactionListParams, options?: RequestOptions): PagePromise<T.ActorReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\", pathParams: { community_id: communityId, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `communities.actors` */\nexport class CommunitiesActorsResource extends APIResource {\n #comments?: CommunitiesActorsCommentsResource;\n #reactions?: CommunitiesActorsReactionsResource;\n get comments(): CommunitiesActorsCommentsResource {\n return (this.#comments ??= new CommunitiesActorsCommentsResource(this._client, this._b));\n }\n get reactions(): CommunitiesActorsReactionsResource {\n return (this.#reactions ??= new CommunitiesActorsReactionsResource(this._client, this._b));\n }\n}\n\n/** `communities.moderation.actions` */\nexport class CommunitiesModerationActionsResource extends APIResource {\n /**\n * Apply a moderation action directly, without a preceding flag (task 017). Acts on any target — post/comment (status), direct_message (moderator soft-delete), or actor (ban=suspend / restore=reinstate). Writes a flag_id=null audit row.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationActionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid target_kind / action / notes.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or target not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-actions\n * @example\n * ```ts\n * const moderationAction = await social.communities.moderation.actions.create(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {\n * action: \"remove\",\n * target_id: \"bbbbbbbb-0000-0000-0000-000000000001\",\n * target_kind: \"direct_message\",\n * });\n * ```\n */\n create(communityId: string, params: T.CommunityModerationActionCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationAction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.moderation.actors` */\nexport class CommunitiesModerationActorsResource extends APIResource {\n /**\n * Apply a shadow ban to an actor. The actor sees their own content normally; everyone else sees nothing from them. Pass `duration_hours` for a timed ban or omit for indefinite. Pass an `Idempotency-Key` header so a retried timed ban doesn't restart the clock.\n *\n * @param communityId - Id of the community.\n * @param actorId - Id of the actor.\n * @param params - `Social.CommunityModerationActorShadowBanParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid duration_hours or reason, or malformed Idempotency-Key.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-actors-actor-id-shadow-ban\n * @example\n * ```ts\n * const moderationActor = await social.communities.moderation.actors.shadowBan(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { duration_hours: 168 });\n * ```\n */\n shadowBan(communityId: string, actorId: string, params?: T.CommunityModerationActorShadowBanParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationActor>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\", pathParams: { community_id: communityId, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a shadow ban. No-op if not currently shadow-banned.\n *\n * @param communityId - Id of the community.\n * @param actorId - Id of the actor.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-moderation-actors-actor-id-shadow-ban\n * @example\n * ```ts\n * const moderationActor = await social.communities.moderation.actors.unshadowBan(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\");\n * ```\n */\n unshadowBan(communityId: string, actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationActor>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\", pathParams: { community_id: communityId, actor_id: actorId } }, options);\n }\n}\n\n/** `communities.moderation.audit` */\nexport class CommunitiesModerationAuditResource extends APIResource {\n /**\n * Append-only audit of moderator actions in this community. 50/page (max 200), cursor-paginated. Filter by `?action=`, `?actor_id=` (the moderator), and/or the `?since=` / `?until=` window — all optional and composable. The ordering is fixed newest-first, so keep the same filters on every follow-up page.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationAuditListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid `action`, `actor_id`, `since`/`until`, or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-audit\n * @example\n * ```ts\n * for await (const audit of social.communities.moderation.audit.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(audit);\n * }\n * const page = await social.communities.moderation.audit.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationAuditListParams, options?: RequestOptions): PagePromise<T.ModerationAction> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\", pathParams: { community_id: communityId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `communities.moderation.blockedTerms` */\nexport class CommunitiesModerationBlockedTermsResource extends APIResource {\n /**\n * Add a hidden word to the community lexicon. A comment whose body contains the term is routed to `action`: `hide` → lands hidden; `pending_approval` → lands in the approve lane. Re-adding a term updates its action. Case-insensitive.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationBlockedTermCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty or over-length term.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.update`.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms\n * @example\n * ```ts\n * const blockedTerm = await social.communities.moderation.blockedTerms.create(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { term: \"spoiler\" });\n * ```\n */\n create(communityId: string, params: T.CommunityModerationBlockedTermCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BlockedTerm>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a hidden word. Idempotent — 204 whether or not it existed.\n *\n * @param communityId - Id of the community.\n * @param term - The blocked term to remove (case-insensitive).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.update`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms/{term}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms-term\n * @example\n * ```ts\n * await social.communities.moderation.blockedTerms.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"term\");\n * ```\n */\n delete(communityId: string, term: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms/{term}\", pathParams: { community_id: communityId, term } }, options);\n }\n /**\n * List the community hidden-words lexicon, newest-first. Cursor-paginated (50/page, max 200). Optional `?q=` substring search over the term, composable with the cursor.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationBlockedTermListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Over-length `q` or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.read`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms\n * @example\n * ```ts\n * for await (const blockedTerm of social.communities.moderation.blockedTerms.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(blockedTerm);\n * }\n * const page = await social.communities.moderation.blockedTerms.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationBlockedTermListParams, options?: RequestOptions): PagePromise<T.BlockedTerm> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.conversations.messages` */\nexport class CommunitiesModerationConversationsMessagesResource extends APIResource {\n /**\n * List every message in a conversation. Moderation-only.\n *\n * @param communityId - Id of the community.\n * @param conversationId - Conversation UUID.\n * @param params - `Social.CommunityModerationConversationMessageListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or conversation not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-conversations-conversation-id-messages\n * @example\n * ```ts\n * for await (const message of social.communities.moderation.conversations.messages.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"conversation\")) {\n * console.log(message);\n * }\n * const page = await social.communities.moderation.conversations.messages.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"conversation\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, conversationId: string, params?: T.CommunityModerationConversationMessageListParams, options?: RequestOptions): PagePromise<T.DirectMessageAdmin> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\", pathParams: { community_id: communityId, conversation_id: conversationId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.conversations` */\nexport class CommunitiesModerationConversationsResource extends APIResource {\n #messages?: CommunitiesModerationConversationsMessagesResource;\n get messages(): CommunitiesModerationConversationsMessagesResource {\n return (this.#messages ??= new CommunitiesModerationConversationsMessagesResource(this._client, this._b));\n }\n /**\n * List every conversation in the community, most-recent-activity first. Moderation-only.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationConversationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-conversations\n * @example\n * ```ts\n * for await (const conversation of social.communities.moderation.conversations.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(conversation);\n * }\n * const page = await social.communities.moderation.conversations.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationConversationListParams, options?: RequestOptions): PagePromise<T.ConversationAdmin> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.flags` */\nexport class CommunitiesModerationFlagsResource extends APIResource {\n /**\n * List flags in this community. Filter by ?status=open|dismissed|actioned. 50/page (max 200), cursor-paginated.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationFlagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid status filter.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderation.queue.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-flags\n * @example\n * ```ts\n * for await (const flag of social.communities.moderation.flags.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(flag);\n * }\n * const page = await social.communities.moderation.flags.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationFlagListParams, options?: RequestOptions): PagePromise<T.Flag> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\", pathParams: { community_id: communityId }, query: params }, options);\n }\n /**\n * Apply a moderation action to a flag. Records an audit entry and updates the target post/comment status. Pass an `Idempotency-Key` header so a retried request records ONE audit entry, not two.\n *\n * @param communityId - Id of the community.\n * @param flagId - Id of the flag.\n * @param params - `Social.CommunityModerationFlagResolveParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid action or notes, or malformed Idempotency-Key.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or flag not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: FLAG_ALREADY_CLOSED — the flag is already actioned/dismissed and the requested action is punitive (hide/remove/warn/ban); reversals (unhide/restore/dismiss) stay legal on a closed flag. Also `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-flags-flag-id-actions\n * @example\n * ```ts\n * const actOnFlag = await social.communities.moderation.flags.resolve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { action: \"hide\" });\n * ```\n */\n resolve(communityId: string, flagId: string, params: T.CommunityModerationFlagResolveParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActOnFlag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\", pathParams: { community_id: communityId, flag_id: flagId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.moderation.shadowBanned` */\nexport class CommunitiesModerationShadowBannedResource extends APIResource {\n /**\n * List currently shadow-banned actors in this community. 50/page (max 200), cursor-paginated newest-ban first. Optional `?q=` substring search over display name OR external id, composable with the cursor.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationShadowBannedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Over-length `q` or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-shadow-banned\n * @example\n * ```ts\n * for await (const shadowBanned of social.communities.moderation.shadowBanned.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(shadowBanned);\n * }\n * const page = await social.communities.moderation.shadowBanned.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationShadowBannedListParams, options?: RequestOptions): PagePromise<T.ModerationActor> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation` */\nexport class CommunitiesModerationResource extends APIResource {\n #actions?: CommunitiesModerationActionsResource;\n #actors?: CommunitiesModerationActorsResource;\n #audit?: CommunitiesModerationAuditResource;\n #blockedTerms?: CommunitiesModerationBlockedTermsResource;\n #conversations?: CommunitiesModerationConversationsResource;\n #flags?: CommunitiesModerationFlagsResource;\n #shadowBanned?: CommunitiesModerationShadowBannedResource;\n get actions(): CommunitiesModerationActionsResource {\n return (this.#actions ??= new CommunitiesModerationActionsResource(this._client, this._b));\n }\n get actors(): CommunitiesModerationActorsResource {\n return (this.#actors ??= new CommunitiesModerationActorsResource(this._client, this._b));\n }\n get audit(): CommunitiesModerationAuditResource {\n return (this.#audit ??= new CommunitiesModerationAuditResource(this._client, this._b));\n }\n get blockedTerms(): CommunitiesModerationBlockedTermsResource {\n return (this.#blockedTerms ??= new CommunitiesModerationBlockedTermsResource(this._client, this._b));\n }\n get conversations(): CommunitiesModerationConversationsResource {\n return (this.#conversations ??= new CommunitiesModerationConversationsResource(this._client, this._b));\n }\n get flags(): CommunitiesModerationFlagsResource {\n return (this.#flags ??= new CommunitiesModerationFlagsResource(this._client, this._b));\n }\n get shadowBanned(): CommunitiesModerationShadowBannedResource {\n return (this.#shadowBanned ??= new CommunitiesModerationShadowBannedResource(this._client, this._b));\n }\n}\n\n/** `communities.webhooks.endpoints` */\nexport class CommunitiesWebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param params - `Social.CommunityWebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.communities.webhooks.endpoints.create(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(communityId: string, params: T.CommunityWebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.communities.webhooks.endpoints.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\");\n * ```\n */\n delete(communityId: string, endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.communities.webhooks.endpoints.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(communityId: string, options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.communities.webhooks.endpoints.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\");\n * ```\n */\n retrieve(communityId: string, endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.communities.webhooks.endpoints.rotateSecret(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(communityId: string, endpointId: string, params?: T.CommunityWebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.communities.webhooks.endpoints.test(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { event_type: \"post.created\" });\n * ```\n */\n test(communityId: string, endpointId: string, params: T.CommunityWebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.communities.webhooks.endpoints.update(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { description: \"Production receiver\" });\n * ```\n */\n update(communityId: string, endpointId: string, params?: T.CommunityWebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.webhooks.eventTypes` */\nexport class CommunitiesWebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.communities.webhooks.eventTypes.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n list(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/event-types\", pathParams: { community_id: communityId } }, options);\n }\n}\n\n/** `communities.webhooks.events` */\nexport class CommunitiesWebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param params - `Social.CommunityWebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.communities.webhooks.events.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(event);\n * }\n * const page = await social.communities.webhooks.events.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityWebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\", pathParams: { community_id: communityId }, query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.CommunityWebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.communities.webhooks.events.replay(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"event\");\n * ```\n */\n replay(communityId: string, eventId: string, params?: T.CommunityWebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\", pathParams: { community_id: communityId, event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.communities.webhooks.events.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"event\");\n * ```\n */\n retrieve(communityId: string, eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}\", pathParams: { community_id: communityId, event_id: eventId } }, options);\n }\n}\n\n/** `communities.webhooks` */\nexport class CommunitiesWebhooksResource extends APIResource {\n #endpoints?: CommunitiesWebhooksEndpointsResource;\n #eventTypes?: CommunitiesWebhooksEventTypesResource;\n #events?: CommunitiesWebhooksEventsResource;\n get endpoints(): CommunitiesWebhooksEndpointsResource {\n return (this.#endpoints ??= new CommunitiesWebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): CommunitiesWebhooksEventTypesResource {\n return (this.#eventTypes ??= new CommunitiesWebhooksEventTypesResource(this._client, this._b));\n }\n get events(): CommunitiesWebhooksEventsResource {\n return (this.#events ??= new CommunitiesWebhooksEventsResource(this._client, this._b));\n }\n}\n\n/** `communities` */\nexport class CommunitiesResource extends APIResource {\n #actors?: CommunitiesActorsResource;\n #moderation?: CommunitiesModerationResource;\n #webhooks?: CommunitiesWebhooksResource;\n get actors(): CommunitiesActorsResource {\n return (this.#actors ??= new CommunitiesActorsResource(this._client, this._b));\n }\n get moderation(): CommunitiesModerationResource {\n return (this.#moderation ??= new CommunitiesModerationResource(this._client, this._b));\n }\n get webhooks(): CommunitiesWebhooksResource {\n return (this.#webhooks ??= new CommunitiesWebhooksResource(this._client, this._b));\n }\n /**\n * Community-level analytics rollup: total active actors, published posts, published comments, open flags, and last-7-day windows for each.\n *\n * @param communityId - Social community UUID owned by the workspace.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.analytics.read`, or the workspace has not enabled the `social` service.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace (opaque cross-tenant 404).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/analytics\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-analytics\n * @example\n * ```ts\n * const communityAnalytics = await social.communities.analytics(\"cccccccc-cccc-cccc-cccc-cccccccccccc\");\n * ```\n */\n analytics(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CommunityAnalytics>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/analytics\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Create an social community. `app_id` is optional — when supplied Social connects the community to an Auth app and refuses if the app belongs to a different workspace (cross-tenant gate) or is already connected. Omit `app_id` for a standalone community (no Auth integration; the customer manages actor identity). Pass an `Idempotency-Key` header to make retries safe.\n *\n * @param params - `Social.CommunityCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (slug shape, display_name length, malformed Idempotency-Key).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: `app_id` was supplied but no bearer/cookie was forwarded for the upstream Auth fetch.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.create` or workspace has not enabled the `social` service.\n * @throws {NotFoundError} 404 NOT_FOUND: `app_id` supplied but the Auth app was not found in this workspace (opaque cross-tenant 404).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Community slug already taken in this workspace, the supplied `app_id` is already connected to a community, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities\n * @example\n * ```ts\n * const community = await social.communities.create({ display_name: \"My Product Community\", slug: \"my-product-community\" });\n * ```\n */\n create(params: T.CommunityCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities\", body: params, idempotent: true }, options);\n }\n /**\n * Delete a community. Cascades to every actor, post, comment, edge, flag, and notification it owns. Not reversible.\n *\n * @param communityId - Social community UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * await social.communities.delete(\"cccccccc-cccc-cccc-cccc-cccccccccccc\");\n * ```\n */\n delete(communityId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * List communities in a workspace, newest-first. Cursor-paginated as of task 008 / G13 (previously a bare array). Optional `?q=` substring search (display name OR slug) and `?status=` filter, both composable with each other and with the cursor — the ordering is fixed, so keep the same filters on every follow-up page.\n *\n * @param params - `Social.CommunityListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid `status`, over-length `q`, or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.list`, or the workspace has not enabled the `social` service.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities\n * @example\n * ```ts\n * for await (const community of social.communities.list()) {\n * console.log(community);\n * }\n * const page = await social.communities.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.CommunityListParams, options?: RequestOptions): PagePromise<T.Community> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities\", query: params }, options);\n }\n /**\n * Get one community by id.\n *\n * @param communityId - Social community UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace (opaque cross-tenant 404).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * const community = await social.communities.retrieve(\"cccccccc-cccc-cccc-cccc-cccccccccccc\");\n * ```\n */\n retrieve(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Update community display name, description, settings, or status. Status transitions are unrestricted (active ↔ suspended; archived is terminal in v1).\n *\n * @param communityId - Social community UUID.\n * @param params - `Social.CommunityUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * const community = await social.communities.update(\"cccccccc-cccc-cccc-cccc-cccccccccccc\", { description: \"string\" });\n * ```\n */\n update(communityId: string, params?: T.CommunityUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId }, body: params }, options);\n }\n}\n\n/** `stats` */\nexport class StatsResource extends APIResource {\n /**\n * Social stats for a workspace\n *\n * Community count, published posts, active members, posts, comments and reactions in the window, the most recent activity and a daily active-members series, across every community in the workspace.\n *\n * **Active** means the member published a post, published a comment or reacted.\n *\n * Days are UTC. Counts only: no member ids, handles or author lists. Cached for up to 60 seconds (`generated_at`).\n *\n * @param params - `Social.StatsRetrieveParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `window` is not one of 1d, 7d, 30d.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.analytics.read` on the workspace, or Social is not enabled on it (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found: the id is unknown, is not a UUID, or is not visible to the caller. Same answer as the service's other workspace routes.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/stats\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-stats\n * @example\n * ```ts\n * const socialWorkspaceStats = await social.stats.retrieve();\n * ```\n */\n retrieve(params?: T.StatsRetrieveParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.SocialWorkspaceStats>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/stats\", query: params }, options);\n }\n}\n\n/** `webhooks.endpoints` */\nexport class WebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param params - `Social.WebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.webhooks.endpoints.create({ url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(params: T.WebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints\", body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.webhooks.endpoints.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n delete(endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.webhooks.endpoints.list()) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints\" }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.webhooks.endpoints.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n retrieve(endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.webhooks.endpoints.rotateSecret(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(endpointId: string, params?: T.WebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.webhooks.endpoints.test(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { event_type: \"post.created\" });\n * ```\n */\n test(endpointId: string, params: T.WebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.webhooks.endpoints.update(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { description: \"Production receiver\" });\n * ```\n */\n update(endpointId: string, params?: T.WebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `webhooks.eventTypes` */\nexport class WebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.webhooks.eventTypes.list();\n * ```\n */\n list(options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/event-types\" }, options);\n }\n}\n\n/** `webhooks.events` */\nexport class WebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param params - `Social.WebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.webhooks.events.list()) {\n * console.log(event);\n * }\n * const page = await social.webhooks.events.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/events\", query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.WebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.webhooks.events.replay(\"event\");\n * ```\n */\n replay(eventId: string, params?: T.WebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\", pathParams: { event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.webhooks.events.retrieve(\"event\");\n * ```\n */\n retrieve(eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}\", pathParams: { event_id: eventId } }, options);\n }\n}\n\n/** `webhooks` */\nexport class WebhooksResource extends APIResource {\n #endpoints?: WebhooksEndpointsResource;\n #eventTypes?: WebhooksEventTypesResource;\n #events?: WebhooksEventsResource;\n get endpoints(): WebhooksEndpointsResource {\n return (this.#endpoints ??= new WebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): WebhooksEventTypesResource {\n return (this.#eventTypes ??= new WebhooksEventTypesResource(this._client, this._b));\n }\n get events(): WebhooksEventsResource {\n return (this.#events ??= new WebhooksEventsResource(this._client, this._b));\n }\n /**\n * Verify a webhook's signature and parse it (Standard Webhooks, and the legacy `t=…,v1=…` scheme).\n *\n * @param params - The raw body, the request headers and optionally the secret.\n * @throws {WebhookVerificationError} The signature, timestamp or payload is invalid.\n * @throws {ConfigurationError} No secret was passed or configured.\n */\n unwrap(params: WebhookUnwrapParams): Promise<UnwrapWebhookEvent> {\n return this._client.unwrapWebhook<UnwrapWebhookEvent>(params, \"PRODUCTCRAFT_SOCIAL_WEBHOOK_SECRET\");\n }\n}\n\n/** `social` */\nexport class SocialResources extends APIResource {\n #communities?: CommunitiesResource;\n #stats?: StatsResource;\n #webhooks?: WebhooksResource;\n get communities(): CommunitiesResource {\n return (this.#communities ??= new CommunitiesResource(this._client, this._b));\n }\n get stats(): StatsResource {\n return (this.#stats ??= new StatsResource(this._client, this._b));\n }\n get webhooks(): WebhooksResource {\n return (this.#webhooks ??= new WebhooksResource(this._client, this._b));\n }\n}\n\n/** `actors.archived` */\nexport class CommunityActorsArchivedResource extends APIResource {\n /**\n * List the actor's archived posts (status='archived'), newest-first. Cursor-paginated.\n *\n * Archived posts keep their engagement (reaction / comment counts intact) but fall out of every public surface, and `getById` treats them as author-only. Restore one with PATCH `{ status: 'published' }`. Same end-user authorization rules as drafts: the PAK lane trusts the customer-backend to gate the caller.\n *\n * @param actorId - Social actor UUID whose archived posts to list.\n * @param params - `Social.ActorArchivedListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/archived\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-archived\n * @example\n * ```ts\n * for await (const archived of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.archived.list(\"actor\")) {\n * console.log(archived);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.archived.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorArchivedListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/archived\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.assets` */\nexport class CommunityActorsAssetsResource extends APIResource {\n /**\n * List an actor's uploaded assets — the \"your uploads\" surface + GDPR export walk. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param actorId - Owner actor UUID.\n * @param params - `Social.ActorAssetListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.read`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/assets\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-assets\n * @example\n * ```ts\n * for await (const asset of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.assets.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(asset);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.assets.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorAssetListParams, options?: RequestOptions): PagePromise<T.Asset> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/assets\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.blocks` */\nexport class CommunityActorsBlocksResource extends APIResource {\n /**\n * List actors this actor has blocked. Pass `?expand=dst_actor` to nest each blocked actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorBlockListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/blocks\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-blocks\n * @example\n * ```ts\n * for await (const block of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.blocks.list(\"actor\")) {\n * console.log(block);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.blocks.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorBlockListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/blocks\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.bookmarks` */\nexport class CommunityActorsBookmarksResource extends APIResource {\n /**\n * List the actor's bookmarks. Cursor-paginated newest-first.\n *\n * Bookmarks are private — only the bookmarker should see their own list. The PAK lane has no end-user principal; the customer's backend must scope this call to the right end-user before exposing the response. Bookmarks against posts whose visibility has narrowed since (or which have been deleted) stay in the list — we don't cross-check post visibility on read of bookmarks.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorBookmarkListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/bookmarks\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-bookmarks\n * @example\n * ```ts\n * for await (const bookmark of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.bookmarks.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(bookmark);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.bookmarks.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorBookmarkListParams, options?: RequestOptions): PagePromise<T.Bookmark> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/bookmarks\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.byExternal` */\nexport class CommunityActorsByExternalResource extends APIResource {\n /**\n * Batch-resolve external_ids to actors (max 200 per call). POST-only — external_ids are up to 256 chars and can't ride a querystring. Unknown ids come back in `missing[]` instead of failing the call.\n *\n * @param params - `Social.ActorByExternalBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `external_ids` missing, empty, over 200 items, or an entry exceeding 256 chars.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/by-external/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-by-external-batch\n * @example\n * ```ts\n * const actorsByExternalBatch = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.byExternal.batch({ external_ids: [\"user_abc123\", \"user_def456\"] });\n * ```\n */\n batch(params: T.ActorByExternalBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorsByExternalBatch>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/by-external/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Look up an actor by the customer-supplied external_id.\n *\n * @param externalId - Customer-supplied identifier for the user (the `external_id` you upserted with).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: No actor with that external_id in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/by-external/{external_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-by-external-external-id\n * @example\n * ```ts\n * const actor = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.byExternal.retrieve(\"user_abc123\");\n * ```\n */\n retrieve(externalId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/by-external/{external_id}\", pathParams: { community_id: this._b.community_id, external_id: externalId } }, options);\n }\n}\n\n/** `actors.closeFriends` */\nexport class CommunityActorsCloseFriendsResource extends APIResource {\n /**\n * List the close-friends members of an actor.\n *\n * Returns the actors on `external_id`'s close-friends list, with denormalised actor metadata. Cursor paginated.\n *\n * @param actorId - Owner social actor UUID.\n * @param params - `Social.ActorCloseFriendListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/close-friends\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-close-friends\n * @example\n * ```ts\n * for await (const closeFriend of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.closeFriends.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(closeFriend);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.closeFriends.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorCloseFriendListParams, options?: RequestOptions): PagePromise<T.CloseFriendResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/close-friends\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.dismissedSuggestions` */\nexport class CommunityActorsDismissedSuggestionsResource extends APIResource {\n /**\n * List actors this actor has dismissed from suggestions. Pass `?expand=dst_actor` to nest each actor's full row.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorDismissedSuggestionListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-dismissed-suggestions\n * @example\n * ```ts\n * for await (const dismissedSuggestion of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.dismissedSuggestions.list(\"actor\")) {\n * console.log(dismissedSuggestion);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.dismissedSuggestions.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorDismissedSuggestionListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.drafts` */\nexport class CommunityActorsDraftsResource extends APIResource {\n /**\n * List the actor's drafts (status='draft'). Cursor-paginated newest-first.\n *\n * Drafts are visible only via this endpoint — they're stripped from public feeds, lists, and `getById`. The PAK lane has no end-user principal, so the customer's backend is responsible for ensuring `actor_id` matches the end-user behind the request before exposing the response.\n *\n * @param actorId - Social actor UUID whose drafts to list.\n * @param params - `Social.ActorDraftListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/drafts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-drafts\n * @example\n * ```ts\n * for await (const draft of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.drafts.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")) {\n * console.log(draft);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.drafts.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorDraftListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/drafts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.feed` */\nexport class CommunityActorsFeedResource extends APIResource {\n /**\n * Feed for an actor: their own posts + posts from actors they follow, with blocks excluded. Default order is `ranked` (recency + engagement + follow-graph signals); pass `order=chronological` to get the time-ordered feed. 50/page (max 200). The cursor shape differs between orders — passing a chronological cursor with `order=ranked` returns 400 INVALID_CURSOR.\n *\n * @param actorId - Viewer social actor UUID — feed is candidate-pooled to their follow-graph.\n * @param params - `Social.ActorFeedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: INVALID_ORDER (unknown `order` value) or INVALID_CURSOR (cursor shape mismatch).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-feed\n * @example\n * ```ts\n * for await (const feed of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.feed.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")) {\n * console.log(feed);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.feed.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFeedListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/feed\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.followRequests` */\nexport class CommunityActorsFollowRequestsResource extends APIResource {\n /**\n * List incoming follow requests for a (private) actor, newest-first (task 014).\n *\n * @param actorId - The private actor whose incoming requests to list.\n * @param params - `Social.ActorFollowRequestListParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/follow-requests\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-follow-requests\n * @example\n * ```ts\n * for await (const followRequest of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followRequests.list(\"actor\")) {\n * console.log(followRequest);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followRequests.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowRequestListParams, options?: RequestOptions): PagePromise<T.FollowRequestEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/follow-requests\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.followers` */\nexport class CommunityActorsFollowersResource extends APIResource {\n /**\n * List the actors who follow this actor. Pass `?expand=src_actor` to nest each follower's full actor row on the edge — a followers screen renders from this one call.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorFollowerListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/followers\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-followers\n * @example\n * ```ts\n * for await (const follower of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followers.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")) {\n * console.log(follower);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followers.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowerListParams, options?: RequestOptions): PagePromise<T.FollowerEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/followers\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.following` */\nexport class CommunityActorsFollowingResource extends APIResource {\n /**\n * List the actors this actor follows. Pass `?expand=dst_actor` to nest each followee's full actor row on the edge (no N+1 hydration).\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorFollowingListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/following\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-following\n * @example\n * ```ts\n * for await (const following of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.following.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")) {\n * console.log(following);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.following.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowingListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/following\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.hashtagFollows` */\nexport class CommunityActorsHashtagFollowsResource extends APIResource {\n /**\n * Follow a hashtag on behalf of an actor. Idempotent — re-follow refreshes the followed_at timestamp but doesn't error.\n *\n * @param actorId - Social actor UUID who is following.\n * @param params - `Social.ActorHashtagFollowCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag fails the lowercase + alphanum + underscore + 1..32 rule.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or hashtag not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-hashtag-follows\n * @example\n * ```ts\n * const hashtagFollow = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.create(\"aaaaaaaa-0000-0000-0000-000000000001\", { tag: \"storymode\" });\n * ```\n */\n create(actorId: string, params: T.ActorHashtagFollowCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HashtagFollow>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Unfollow a hashtag. Idempotent — 204 either way.\n *\n * @param actorId - Social actor UUID.\n * @param tag - Lowercase tag.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag malformed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows/{tag}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id-hashtag-follows-tag\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.delete(\"aaaaaaaa-0000-0000-0000-000000000001\", \"storymode\");\n * ```\n */\n delete(actorId: string, tag: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows/{tag}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, tag } }, options);\n }\n /**\n * List the hashtags an actor follows. Cursor-paginated newest-first by followed_at.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorHashtagFollowListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-hashtag-follows\n * @example\n * ```ts\n * for await (const hashtagFollow of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(hashtagFollow);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorHashtagFollowListParams, options?: RequestOptions): PagePromise<T.HashtagFollow> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.hides` */\nexport class CommunityActorsHidesResource extends APIResource {\n /**\n * List the posts an actor has hidden, newest-first.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorHideListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/hides\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-hides\n * @example\n * ```ts\n * for await (const hide of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hides.list(\"actor\")) {\n * console.log(hide);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hides.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorHideListParams, options?: RequestOptions): PagePromise<T.HideEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hides\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.highlights` */\nexport class CommunityActorsHighlightsResource extends APIResource {\n /**\n * List the actor's pinned posts (highlights).\n *\n * Pinned posts appear here regardless of their `expires_at`. Visibility still applies — pass `actor_id` to surface non-public pinned posts the requester is allowed to see. Without that param, only `public` pinned rows are returned (legacy-safe default). Cursor-paginated on `(created_at DESC, id DESC)`.\n *\n * @param ownerActorId - Social actor UUID whose highlights to list.\n * @param params - `Social.ActorHighlightListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{owner_actor_id}/highlights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-owner-actor-id-highlights\n * @example\n * ```ts\n * for await (const highlight of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.highlights.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(highlight);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.highlights.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(ownerActorId: string, params?: T.WithOptionalActor<T.ActorHighlightListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{owner_actor_id}/highlights\", pathParams: { community_id: this._b.community_id, owner_actor_id: ownerActorId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `actors.mentions` */\nexport class CommunityActorsMentionsResource extends APIResource {\n /**\n * List every place this actor has been @-mentioned (posts + comments).\n *\n * Cursor-paginated, newest-first. Interleaves post + comment mentions in a single feed; the `source` field discriminates which surface each row came from. The `post_id` field is always set so the client can deep-link, even for comment mentions.\n *\n * @param actorId - Social actor UUID whose mentions to list.\n * @param params - `Social.ActorMentionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/mentions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-mentions\n * @example\n * ```ts\n * for await (const mention of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mentions.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(mention);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mentions.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMentionListParams, options?: RequestOptions): PagePromise<T.MentionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/mentions\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.mutedTerms` */\nexport class CommunityActorsMutedTermsResource extends APIResource {\n /**\n * Add (or refresh) a muted term for the actor. Re-posting the same `term` updates the scope + expires_at.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMutedTermCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/muted-terms\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-muted-terms\n * @example\n * ```ts\n * const mutedTerm = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.create(\"aaaaaaaa-0000-0000-0000-000000000001\", { term: \"spoiler\" });\n * ```\n */\n create(actorId: string, params: T.ActorMutedTermCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.MutedTerm>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a muted term. Idempotent — 204 either way.\n *\n * @param actorId - Social actor UUID.\n * @param term - URL-encoded term.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}/muted-terms/{term}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id-muted-terms-term\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.delete(\"aaaaaaaa-0000-0000-0000-000000000001\", \"term\");\n * ```\n */\n delete(actorId: string, term: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms/{term}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, term } }, options);\n }\n /**\n * List the actor's currently-active muted terms, newest-first. Cursor-paginated (task 008 / G13 — previously an unbounded bare array).\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMutedTermListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/muted-terms\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-muted-terms\n * @example\n * ```ts\n * for await (const mutedTerm of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(mutedTerm);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMutedTermListParams, options?: RequestOptions): PagePromise<T.MutedTerm> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.mutes` */\nexport class CommunityActorsMutesResource extends APIResource {\n /**\n * List actors this actor has muted. Pass `?expand=dst_actor` to nest each muted actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMuteListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/mutes\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-mutes\n * @example\n * ```ts\n * for await (const mute of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutes.list(\"actor\")) {\n * console.log(mute);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutes.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMuteListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/mutes\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.notificationPrefs` */\nexport class CommunityActorsNotificationPrefsResource extends APIResource {\n /**\n * List the actor's per-kind notification preferences. Synthesises `enabled=true` defaults for kinds the actor has not explicitly toggled.\n *\n * Returns one row per known NotificationKind so the client UI can render every toggle without a separate catalogue lookup. Synthesised rows carry an epoch `updated_at`; explicit rows carry the real timestamp.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notification-prefs\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notification-prefs\n * @example\n * ```ts\n * const notificationPrefList = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notificationPrefs.list(\"aaaaaaaa-0000-0000-0000-000000000001\");\n * ```\n */\n list(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.NotificationPrefList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Set a single notification-kind preference for the actor.\n *\n * Idempotent upsert. Pass `{ enabled: false }` to mute, `{ enabled: true }` to re-enable. Cache is invalidated on write so the next NotificationService.tryEmit picks up the change immediately. Returns the resulting preference row.\n *\n * @param actorId - Social actor UUID.\n * @param kind - NotificationKind label.\n * @param params - `Social.ActorNotificationPrefUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed, or `kind` is not a known NotificationKind.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id-notification-prefs-kind\n * @example\n * ```ts\n * const notificationPref = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notificationPrefs.update(\"aaaaaaaa-0000-0000-0000-000000000001\", \"kind\", { enabled: false });\n * ```\n */\n update(actorId: string, kind: string, params: T.ActorNotificationPrefUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.NotificationPref>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, kind }, body: params }, options);\n }\n}\n\n/** `actors.notifications` */\nexport class CommunityActorsNotificationsResource extends APIResource {\n /**\n * List notifications for an actor (newest first).\n *\n * Reverse-chronological inbox. Pass `unread_only=true` to filter to unread rows only. Cursor encodes `(created_at, id)` and round-trips through the response. Default page size 50, max 200. Suppression of self-actions and blocked-actor pairs happens at write time, so every row returned here has already passed those filters.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param params - `Social.ActorNotificationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (also returned for cross-workspace probes).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notifications\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notifications\n * @example\n * ```ts\n * for await (const notification of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(notification);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorNotificationListParams, options?: RequestOptions): PagePromise<T.NotificationResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n /**\n * Mark every unread notification for the actor as read.\n *\n * Single bulk write. Optional `before` ISO timestamp scopes to rows older than that — useful for \"mark all older than today as read\" UX. Returns the number of rows that flipped.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param params - `Social.ActorNotificationMarkAllReadParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `before` is not a valid ISO timestamp.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-notifications-read-all\n * @example\n * ```ts\n * const result = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.markAllRead(\"aaaaaaaa-0000-0000-0000-000000000001\", { before: \"2026-05-01T00:00:00.000Z\" });\n * ```\n */\n markAllRead(actorId: string, params?: T.ActorNotificationMarkAllReadParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.MarkAllReadResponse>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n /**\n * Count unread notifications for an actor.\n *\n * Cheap badge endpoint backed by a partial index — safe to poll at the cadence of an in-product notification bell.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notifications/unread-count\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notifications-unread-count\n * @example\n * ```ts\n * const result = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.unreadCount(\"aaaaaaaa-0000-0000-0000-000000000001\");\n * ```\n */\n unreadCount(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UnreadCountResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/unread-count\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Mark a single notification as read or unread.\n *\n * Idempotent: marking an already-read row read again is a no-op 204. Returns 404 if the notification belongs to a different actor.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param notificationId - Notification UUID returned from the list endpoint.\n * @param params - `Social.ActorNotificationUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Notification not found, or belongs to a different actor.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id-notifications-notification-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.update(\"aaaaaaaa-0000-0000-0000-000000000001\", \"11111111-1111-1111-1111-111111111111\", { read: true });\n * ```\n */\n update(actorId: string, notificationId: string, params: T.ActorNotificationUpdateParams, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, notification_id: notificationId }, body: params }, options);\n }\n}\n\n/** `actors.relationships` */\nexport class CommunityActorsRelationshipsResource extends APIResource {\n /**\n * Batched pairwise relationship lookup: does this actor follow / mute / block / restrict each of up to 100 others (and is it followed / blocked back)?\n *\n * One query resolves the seven pairwise flags for a whole profile header or member list — no paging of full edge lists, and `blocked_by` is visible without attempting a write and handling the 409. Unknown or cross-community ids resolve to all-false flags; the id list is de-duplicated preserving request order. Bounded input (max 100 ids), so the response has no pagination envelope.\n *\n * @param srcActorId - Source actor UUID — the perspective all flags are computed from.\n * @param params - `Social.ActorRelationshipListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing `with`, more than 100 ids, or a non-UUID value in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{src_actor_id}/relationships\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-src-actor-id-relationships\n * @example\n * ```ts\n * const relationshipList = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.relationships.list(\"aaaaaaaa-0000-0000-0000-000000000001\", { with: \"string\" });\n * ```\n */\n list(srcActorId: string, params: T.ActorRelationshipListParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.RelationshipList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{src_actor_id}/relationships\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId }, query: params }, options);\n }\n}\n\n/** `actors.restricts` */\nexport class CommunityActorsRestrictsResource extends APIResource {\n /**\n * List actors this actor has restricted. Pass `?expand=dst_actor` to nest each restricted actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorRestrictListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/restricts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-restricts\n * @example\n * ```ts\n * for await (const restrict of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.restricts.list(\"actor\")) {\n * console.log(restrict);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.restricts.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorRestrictListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/restricts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.scheduledPosts` */\nexport class CommunityActorsScheduledPostsResource extends APIResource {\n /**\n * List the actor's scheduled posts (status='scheduled'), ordered soonest-to-publish first. Cursor-paginated.\n *\n * Scheduled posts are invisible to everyone except the author until the per-minute PostSchedulerCron promotes them. Same end-user authorization rules as drafts: the PAK lane trusts the customer-backend to gate the caller.\n *\n * @param actorId - Social actor UUID whose scheduled posts to list.\n * @param params - `Social.ActorScheduledPostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-scheduled-posts\n * @example\n * ```ts\n * for await (const scheduledPost of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.scheduledPosts.list(\"actor\")) {\n * console.log(scheduledPost);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.scheduledPosts.list(\"actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorScheduledPostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.storyTray` */\nexport class CommunityActorsStoryTrayResource extends APIResource {\n /**\n * Story tray for an actor — one entry per author with at least one unexpired or pinned story.\n *\n * Includes the requester themselves and every actor they follow. Ordered by latest story timestamp. Capped at 200 entries (no cursor in v1; tray is bounded by follow-graph in normal usage). Returns `has_unviewed=true` when the requester has not recorded a `view` edge against the author's most recent story.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/story-tray\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-story-tray\n * @example\n * ```ts\n * for await (const storyTray of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.storyTray.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(storyTray);\n * }\n * ```\n */\n list(actorId: string, options?: RequestOptions): PagePromise<T.StoryTrayEntryResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/story-tray\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n}\n\n/** `actors.suggestedFollows` */\nexport class CommunityActorsSuggestedFollowsResource extends APIResource {\n /**\n * Suggested follows for an actor.\n *\n * Friend-of-a-friend signal first (people the requester's followees also follow), with a cold-start fallback to top actors in the community by follower count when FoF underfills the limit. Excludes self, existing follows / mutes / blocks, and actors who have blocked the requester. Cached 1h per (actor, limit).\n *\n * @param actorId - Social actor UUID for whom to compute suggestions.\n * @param params - `Social.ActorSuggestedFollowListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/suggested-follows\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-suggested-follows\n * @example\n * ```ts\n * for await (const suggestedFollow of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.suggestedFollows.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")) {\n * console.log(suggestedFollow);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.suggestedFollows.list(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorSuggestedFollowListParams, options?: RequestOptions): PagePromise<T.SuggestedFollow> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/suggested-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.tagged` */\nexport class CommunityActorsTaggedResource extends APIResource {\n /**\n * List posts an actor is tagged in.\n *\n * Approved tags only, on published + unexpired posts, newest-tag-first. Visibility- and block-aware: pass the viewer via `actor_id` to surface followers / close-friends posts they may read; without it only public posts appear. Pages may be short (post-visibility filtering) but never skip or duplicate.\n *\n * @param taggedActorId - The tagged actor UUID.\n * @param params - `Social.ActorTaggedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `actor_id` / `requester_id` is not a UUID.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-tagged-actor-id-tagged\n * @example\n * ```ts\n * for await (const tagged of social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.tagged.list(\"tagged_actor\")) {\n * console.log(tagged);\n * }\n * const page = await social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.tagged.list(\"tagged_actor\", {}, { timeout: 5_000 });\n * ```\n */\n list(taggedActorId: string, params?: T.WithOptionalActor<T.ActorTaggedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\", pathParams: { community_id: this._b.community_id, tagged_actor_id: taggedActorId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `actors` */\nexport class CommunityActorsResource extends APIResource {\n #archived?: CommunityActorsArchivedResource;\n #assets?: CommunityActorsAssetsResource;\n #blocks?: CommunityActorsBlocksResource;\n #bookmarks?: CommunityActorsBookmarksResource;\n #byExternal?: CommunityActorsByExternalResource;\n #closeFriends?: CommunityActorsCloseFriendsResource;\n #dismissedSuggestions?: CommunityActorsDismissedSuggestionsResource;\n #drafts?: CommunityActorsDraftsResource;\n #feed?: CommunityActorsFeedResource;\n #followRequests?: CommunityActorsFollowRequestsResource;\n #followers?: CommunityActorsFollowersResource;\n #following?: CommunityActorsFollowingResource;\n #hashtagFollows?: CommunityActorsHashtagFollowsResource;\n #hides?: CommunityActorsHidesResource;\n #highlights?: CommunityActorsHighlightsResource;\n #mentions?: CommunityActorsMentionsResource;\n #mutedTerms?: CommunityActorsMutedTermsResource;\n #mutes?: CommunityActorsMutesResource;\n #notificationPrefs?: CommunityActorsNotificationPrefsResource;\n #notifications?: CommunityActorsNotificationsResource;\n #relationships?: CommunityActorsRelationshipsResource;\n #restricts?: CommunityActorsRestrictsResource;\n #scheduledPosts?: CommunityActorsScheduledPostsResource;\n #storyTray?: CommunityActorsStoryTrayResource;\n #suggestedFollows?: CommunityActorsSuggestedFollowsResource;\n #tagged?: CommunityActorsTaggedResource;\n get archived(): CommunityActorsArchivedResource {\n return (this.#archived ??= new CommunityActorsArchivedResource(this._client, this._b));\n }\n get assets(): CommunityActorsAssetsResource {\n return (this.#assets ??= new CommunityActorsAssetsResource(this._client, this._b));\n }\n get blocks(): CommunityActorsBlocksResource {\n return (this.#blocks ??= new CommunityActorsBlocksResource(this._client, this._b));\n }\n get bookmarks(): CommunityActorsBookmarksResource {\n return (this.#bookmarks ??= new CommunityActorsBookmarksResource(this._client, this._b));\n }\n get byExternal(): CommunityActorsByExternalResource {\n return (this.#byExternal ??= new CommunityActorsByExternalResource(this._client, this._b));\n }\n get closeFriends(): CommunityActorsCloseFriendsResource {\n return (this.#closeFriends ??= new CommunityActorsCloseFriendsResource(this._client, this._b));\n }\n get dismissedSuggestions(): CommunityActorsDismissedSuggestionsResource {\n return (this.#dismissedSuggestions ??= new CommunityActorsDismissedSuggestionsResource(this._client, this._b));\n }\n get drafts(): CommunityActorsDraftsResource {\n return (this.#drafts ??= new CommunityActorsDraftsResource(this._client, this._b));\n }\n get feed(): CommunityActorsFeedResource {\n return (this.#feed ??= new CommunityActorsFeedResource(this._client, this._b));\n }\n get followRequests(): CommunityActorsFollowRequestsResource {\n return (this.#followRequests ??= new CommunityActorsFollowRequestsResource(this._client, this._b));\n }\n get followers(): CommunityActorsFollowersResource {\n return (this.#followers ??= new CommunityActorsFollowersResource(this._client, this._b));\n }\n get following(): CommunityActorsFollowingResource {\n return (this.#following ??= new CommunityActorsFollowingResource(this._client, this._b));\n }\n get hashtagFollows(): CommunityActorsHashtagFollowsResource {\n return (this.#hashtagFollows ??= new CommunityActorsHashtagFollowsResource(this._client, this._b));\n }\n get hides(): CommunityActorsHidesResource {\n return (this.#hides ??= new CommunityActorsHidesResource(this._client, this._b));\n }\n get highlights(): CommunityActorsHighlightsResource {\n return (this.#highlights ??= new CommunityActorsHighlightsResource(this._client, this._b));\n }\n get mentions(): CommunityActorsMentionsResource {\n return (this.#mentions ??= new CommunityActorsMentionsResource(this._client, this._b));\n }\n get mutedTerms(): CommunityActorsMutedTermsResource {\n return (this.#mutedTerms ??= new CommunityActorsMutedTermsResource(this._client, this._b));\n }\n get mutes(): CommunityActorsMutesResource {\n return (this.#mutes ??= new CommunityActorsMutesResource(this._client, this._b));\n }\n get notificationPrefs(): CommunityActorsNotificationPrefsResource {\n return (this.#notificationPrefs ??= new CommunityActorsNotificationPrefsResource(this._client, this._b));\n }\n get notifications(): CommunityActorsNotificationsResource {\n return (this.#notifications ??= new CommunityActorsNotificationsResource(this._client, this._b));\n }\n get relationships(): CommunityActorsRelationshipsResource {\n return (this.#relationships ??= new CommunityActorsRelationshipsResource(this._client, this._b));\n }\n get restricts(): CommunityActorsRestrictsResource {\n return (this.#restricts ??= new CommunityActorsRestrictsResource(this._client, this._b));\n }\n get scheduledPosts(): CommunityActorsScheduledPostsResource {\n return (this.#scheduledPosts ??= new CommunityActorsScheduledPostsResource(this._client, this._b));\n }\n get storyTray(): CommunityActorsStoryTrayResource {\n return (this.#storyTray ??= new CommunityActorsStoryTrayResource(this._client, this._b));\n }\n get suggestedFollows(): CommunityActorsSuggestedFollowsResource {\n return (this.#suggestedFollows ??= new CommunityActorsSuggestedFollowsResource(this._client, this._b));\n }\n get tagged(): CommunityActorsTaggedResource {\n return (this.#tagged ??= new CommunityActorsTaggedResource(this._client, this._b));\n }\n /**\n * Bulk actor upsert (max 200 per call) — the import lane. Each item runs the exact single-upsert path; results come back per item with partial success (`201` even when some items fail — inspect `success` / `error` per entry). No wrapping transaction.\n *\n * @param params - `Social.ActorBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Envelope validation failure: `actors` missing, empty, over 200 items, or an item shape invalid.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-batch\n * @example\n * ```ts\n * const batchActors = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.batch({ actors: [{ external_id: \"user_abc123\" }] });\n * ```\n */\n batch(params: T.ActorBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchActors>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Denormalised counters for one actor (followers, following, posts, comments, blocks).\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or belongs to a different community / workspace).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/counters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-counters\n * @example\n * ```ts\n * const actorCounters = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.counters(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\");\n * ```\n */\n counters(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorCounters>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/counters\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Upsert an actor by external_id. Creates on first call, updates on subsequent calls with the same external_id. Idempotent on `(community, external_id)`. Note: omitted fields on a follow-up call are overwritten with the new body — pass every field you want to keep on each call.\n *\n * @param params - `Social.ActorCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (external_id, display_name, avatar_url length).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors\n * @example\n * ```ts\n * const upsertActor = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.create({ external_id: \"user_abc123\" });\n * ```\n */\n create(params: T.ActorCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UpsertActor>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Delete an actor. Hard delete — cascades to every post, comment, edge, flag, and notification it owns.\n *\n * @param actorId - Social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.delete(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\");\n * ```\n */\n delete(actorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * An actor's follower time series: live follower_count plus a nightly-snapshot daily series over ?from/?to (default trailing 30 days).\n *\n * @param actorId - Id of the actor.\n * @param params - `Social.ActorInsightsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid window.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.analytics.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/insights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-insights\n * @example\n * ```ts\n * const actorInsights = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.insights(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n insights(actorId: string, params?: T.ActorInsightsParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorInsights>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/insights\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n /**\n * List actors in a community. 50 per page by default (max 200) — paginate with the cursor returned in `pagination.next_cursor` while `pagination.has_more` is true. Pass `?ids=<uuid,uuid,…>` (max 100) to batch-fetch specific actors instead — one hydration call for a screenful of ids; unknown ids are silently omitted and `pagination` is the exhausted shape (`next_cursor: null`).\n *\n * @param params - `Social.ActorListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_ID_LIST, TOO_MANY_IDS: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or invalid `ids` (`INVALID_ID_LIST` — empty / non-UUID entry; `TOO_MANY_IDS` — over 100).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors\n * @example\n * ```ts\n * for await (const actor of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.list()) {\n * console.log(actor);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.ActorListParams, options?: RequestOptions): PagePromise<T.Actor> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Batch viewer-state hydration: the actor's reactions, bookmark, repost, and poll-vote state for up to 200 posts in one call.\n *\n * Read-over-POST (the id list is too large for a query string) — no side effects, no Idempotency-Key needed. Renders a whole feed page's \"liked by you\" / saved / reposted / voted state with one request on top of the feed call.\n *\n * @param actorId - Viewer actor UUID — the perspective all state is computed from.\n * @param params - `Social.ActorPostStateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty `post_ids`, more than 200 ids, or a non-UUID in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/post-state\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-post-state\n * @example\n * ```ts\n * const postState = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.postState(\"aaaaaaaa-0000-0000-0000-000000000001\", {\n * post_ids: [\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"cccccccc-cccc-cccc-cccc-cccccccccccc\"],\n * });\n * ```\n */\n postState(actorId: string, params: T.ActorPostStateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostState>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/post-state\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n /**\n * Get an actor by its UUID.\n *\n * @param actorId - Social actor UUID (the id returned by upsert).\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * const actor = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.retrieve(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\");\n * ```\n */\n retrieve(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Update actor profile fields. Pass only the fields you want to change.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * const actor = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.update(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\", { avatar_url: \"string\" });\n * ```\n */\n update(actorId: string, params?: T.ActorUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n}\n\n/** `assets` */\nexport class CommunityAssetsResource extends APIResource {\n /**\n * Finalize a presigned-PUT video upload. Verifies the stored object (existence, size, container magic bytes) and enqueues the transcode. Replaying on a finalized asset returns its current status without re-enqueueing.\n *\n * @param assetId - Video asset UUID (status `uploading`).\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, ASSET_UPLOAD_INCOMPLETE, ASSET_TOO_LARGE, ASSET_INVALID_CONTAINER, ASSET_NOT_VIDEO: `ASSET_UPLOAD_INCOMPLETE` (no object / size mismatch — still retryable), `ASSET_TOO_LARGE` or `ASSET_INVALID_CONTAINER` (upload failed + object deleted), or `ASSET_NOT_VIDEO`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/assets/{asset_id}/complete\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-assets-asset-id-complete\n * @example\n * ```ts\n * const uploadAsset = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.complete(\"eeeeeeee-0000-0000-0000-000000000001\");\n * ```\n */\n complete(assetId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UploadAsset>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/assets/{asset_id}/complete\", pathParams: { community_id: this._b.community_id, asset_id: assetId }, idempotent: true }, options);\n }\n /**\n * Upload media. Images (multipart): processed synchronously, returns ready. Videos (JSON, kind:'video' + declared content_type/byte_size): returns an `uploading` asset with a presigned PUT — upload the bytes, then POST /assets/:id/complete.\n *\n * @param params - `Social.AssetCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/oversize/wrong-type file or declaration, or the bytes do not match the declared image type.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or owner actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The image could not be decoded/processed.\n * @throws {RateLimitError} 429 RATE_LIMITED, TOO_MANY_ACTIVE_UPLOADS: `TOO_MANY_ACTIVE_UPLOADS` — the community already has the max videos uploading/processing. Per-IP limit: more than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/assets\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-assets\n * @example\n * ```ts\n * const uploadAsset = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.create();\n * ```\n */\n create(params?: T.WithOptionalActor<T.AssetCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UploadAsset>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/assets\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete an asset — removes every stored rendition object, then the row.\n *\n * @param assetId - Id of the asset.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/assets/{asset_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-assets-asset-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n delete(assetId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/assets/{asset_id}\", pathParams: { community_id: this._b.community_id, asset_id: assetId } }, options);\n }\n /**\n * Fetch one asset with freshly-minted presigned rendition URLs.\n *\n * @param assetId - Id of the asset.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/assets/{asset_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-assets-asset-id\n * @example\n * ```ts\n * const asset = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n retrieve(assetId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Asset>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/assets/{asset_id}\", pathParams: { community_id: this._b.community_id, asset_id: assetId } }, options);\n }\n}\n\n/** `blocks` */\nexport class CommunityBlocksResource extends APIResource {\n /**\n * Block another actor. Removes any existing follows/mutes between the two in either direction (one transaction).\n *\n * @param params - `Social.BlockCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot block yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/blocks\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-blocks\n * @example\n * ```ts\n * const createEdge = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").blocks.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.BlockCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/blocks\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unblock. Idempotent — 204 either way. Does NOT restore prior follows / mutes (the block tear-down is one-way).\n *\n * @param srcActorId - Blocker actor UUID.\n * @param dstActorId - Blockee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/blocks/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-blocks-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").blocks.delete(\"src_actor\", \"dst_actor\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/blocks/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `closeFriends` */\nexport class CommunityCloseFriendsResource extends APIResource {\n /**\n * Add a member to an actor's close-friends list.\n *\n * Idempotent on `(community, owner, member)`. 422 on self-add. 409 if a block exists between the pair in either direction. Visibility-`close_friends` posts authored by `owner` become visible to `member` after this call.\n *\n * @param params - `Social.CloseFriendCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.manage`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / owner / member not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block in place between owner and member. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot add yourself as a close friend.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/close-friends\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-close-friends\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").closeFriends.create({ member_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.CloseFriendCreateParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/close-friends\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a member from an actor's close-friends list.\n *\n * Idempotent: 204 whether or not the edge exists. After removal, `close_friends`-visibility posts by `owner` no longer surface to `member`.\n *\n * @param ownerActorId - Owner social actor UUID.\n * @param memberActorId - Member social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.manage`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/close-friends/{owner_actor_id}/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-close-friends-owner-actor-id-member-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").closeFriends.delete(\"aaaaaaaa-0000-0000-0000-000000000001\", \"aaaaaaaa-0000-0000-0000-000000000002\");\n * ```\n */\n delete(ownerActorId: string, memberActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/close-friends/{owner_actor_id}/{member_actor_id}\", pathParams: { community_id: this._b.community_id, owner_actor_id: ownerActorId, member_actor_id: memberActorId } }, options);\n }\n}\n\n/** `collections.items` */\nexport class CommunityCollectionsItemsResource extends APIResource {\n /**\n * Add a post to a collection (owner only). Idempotent per (collection, post).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionItemCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Collection or post not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/collections/{collection_id}/items\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-collections-collection-id-items\n * @example\n * ```ts\n * const collectionItem = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.create(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { post_id: \"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\" });\n * ```\n */\n create(collectionId: string, params: T.WithOptionalActor<T.CollectionItemCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CollectionItem>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a post from a collection (owner only).\n *\n * @param collectionId - Id of the collection.\n * @param postId - Id of the post.\n * @param params - `Social.CollectionItemDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-collections-collection-id-items-post-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { caller_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\" });\n * ```\n */\n delete(collectionId: string, postId: string, params?: T.WithOptionalActor<T.CollectionItemDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId, post_id: postId }, query: fillActor(split(params, [\"actor_id\"])[0], this._b), body: split(params, [\"actor_id\"])[1] }, options);\n }\n /**\n * List a collection's posts in curator order. Highlight collections bypass story expiry; bookmark collections drop expired posts. 50/page (max 200).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionItemListParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or private and not the owner).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections/{collection_id}/items\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections-collection-id-items\n * @example\n * ```ts\n * for await (const item of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\")) {\n * console.log(item);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.list(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", {}, { timeout: 5_000 });\n * ```\n */\n list(collectionId: string, params?: T.WithOptionalActor<T.CollectionItemListParams>, options?: RequestOptions): PagePromise<T.CollectionItem> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Reorder a post within a collection (owner only).\n *\n * @param collectionId - Id of the collection.\n * @param postId - Id of the post.\n * @param params - `Social.CollectionItemUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Collection or item not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-collections-collection-id-items-post-id\n * @example\n * ```ts\n * const collectionItem = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.update(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\", { position: 3 });\n * ```\n */\n update(collectionId: string, postId: string, params: T.WithOptionalActor<T.CollectionItemUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CollectionItem>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `collections` */\nexport class CommunityCollectionsResource extends APIResource {\n #items?: CommunityCollectionsItemsResource;\n get items(): CommunityCollectionsItemsResource {\n return (this.#items ??= new CommunityCollectionsItemsResource(this._client, this._b));\n }\n /**\n * Create a collection. Default kind `bookmark`, visibility `private`. Pass an Idempotency-Key so retries are safe.\n *\n * @param params - `Social.CollectionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, owner suspended, or cover asset not owned.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, owner, or cover asset not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cover asset is not ready.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/collections\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-collections\n * @example\n * ```ts\n * const collection = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.create({ name: \"Travel\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.CollectionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/collections\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete a collection (owner only). Items cascade; the posts themselves are untouched.\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { caller_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\" });\n * ```\n */\n delete(collectionId: string, params?: T.WithOptionalActor<T.CollectionDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(split(params, [\"actor_id\"])[0], this._b), body: split(params, [\"actor_id\"])[1] }, options);\n }\n /**\n * List collections. Public ones are visible to anyone; private ones surface only to their owner via actor_id. Filter by owner_actor_id / kind.\n *\n * @param params - `Social.CollectionListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections\n * @example\n * ```ts\n * for await (const collection of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.list()) {\n * console.log(collection);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.CollectionListParams>, options?: RequestOptions): PagePromise<T.Collection> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/collections\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Fetch one collection. Private collections resolve only for their owner (via actor_id).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionRetrieveParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or private and not the owner).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * const collection = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n retrieve(collectionId: string, params?: T.WithOptionalActor<T.CollectionRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update a collection (owner only) — rename, cover, visibility, reorder position.\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cover asset is not ready.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * const collection = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.update(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n update(collectionId: string, params?: T.WithOptionalActor<T.CollectionUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `connections` */\nexport class CommunityConnectionsResource extends APIResource {\n /**\n * Accept `src_actor_id`'s connection request as `dst_actor_id`: approves the follow request AND creates the reverse follow edge, so both directions exist afterwards. Convergent on retry — if the request was already consumed by a partially-completed accept (src already follows dst) the reverse edge is still ensured.\n *\n * @param dstActorId - Id of the dst actor.\n * @param srcActorId - Id of the src actor.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Malformed actor id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community/actor not found, or no request to accept and src does not follow dst.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/connections/{dst_actor_id}/{src_actor_id}/accept\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-connections-dst-actor-id-src-actor-id-accept\n * @example\n * ```ts\n * const connectionResult = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.accept(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\");\n * ```\n */\n accept(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ConnectionResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/connections/{dst_actor_id}/{src_actor_id}/accept\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n /**\n * Request a connection (mutual follow). Runs the standard follow path: a private destination yields `pending` (accept via the accept route); a public destination connects immediately — the reverse edge is created in the same call. Idempotent; refused on blocks (409) and self-connection (422) exactly like a follow.\n *\n * @param params - `Social.ConnectionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot connect with yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/connections\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-connections\n * @example\n * ```ts\n * const connectionResult = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.create({\n * dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\",\n * src_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\",\n * });\n * ```\n */\n create(params: T.ConnectionCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ConnectionResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/connections\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Sever a connection COMPLETELY: deletes the follow edges in both directions and withdraws any pending requests either way. There is no one-sided removal — this is the connections invariant. 204 whether or not anything existed.\n *\n * @param actorId - Id of the actor.\n * @param otherActorId - Id of the other actor.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Malformed actor id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/connections/{actor_id}/{other_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-connections-actor-id-other-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", \"5d1e2f3a-4b5c-4d6e-8f70-8192a3b4c5d6\");\n * ```\n */\n delete(actorId: string, otherActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/connections/{actor_id}/{other_actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, other_actor_id: otherActorId } }, options);\n }\n}\n\n/** `conversations.members` */\nexport class CommunityConversationsMembersResource extends APIResource {\n /**\n * Add a member to a group conversation. Admin-only. Refuses if the new member has a block with any existing participant.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMemberCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not an admin, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already a member, group full, or block exists with an existing participant. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/members\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-members\n * @example\n * ```ts\n * const conversation = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.create(\"conversation\", {});\n * ```\n */\n create(conversationId: string, params?: T.WithOptionalActor<T.ConversationMemberCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a participant. Admin-only unless the acting `?actor_id=` equals the target (self-leave).\n *\n * @param conversationId - Conversation UUID.\n * @param memberActorId - Target participant — social actor UUID.\n * @param params - `Social.ConversationMemberDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not an admin and not the target.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or participant not found.\n * @throws {ConflictError} 409 CONFLICT: Attempting to remove the last admin (or self-leave when last admin in a non-empty group).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-members-member-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.delete(\"conversation\", \"member_actor\", {});\n * ```\n */\n delete(conversationId: string, memberActorId: string, params?: T.WithOptionalActor<T.ConversationMemberDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, member_actor_id: memberActorId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update a participant (task 025). Field-level authz: `role` is admin-only; `muted` / `muted_until` / `pinned` are self-only (the caller must be the path actor). The canonical home for participant state.\n *\n * @param conversationId - Conversation UUID.\n * @param memberActorId - Target participant — social actor UUID.\n * @param params - `Social.ConversationMemberUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Not an admin (role) or not the target (self-only fields).\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or participant not found.\n * @throws {ConflictError} 409 CONFLICT: Attempting to demote the last admin.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id-members-member-actor-id\n * @example\n * ```ts\n * const conversation = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.update(\"conversation\", \"member_actor\");\n * ```\n */\n update(conversationId: string, memberActorId: string, params?: T.WithOptionalActor<T.ConversationMemberUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, member_actor_id: memberActorId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations.messages.reactions` */\nexport class CommunityConversationsMessagesReactionsResource extends APIResource {\n /**\n * Add a reaction to a direct message. Idempotent — re-posting the same (actor, type) is a no-op.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or reactor is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, message, or actor not found, or caller not a participant.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between reactor and sender. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions\n * @example\n * ```ts\n * const directMessageReactionCreated = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.create(\"11111111-2222-3333-4444-555555555555\", \"mmmmmmmm-0000-0000-0000-000000000001\", { type: \"heart\" });\n * ```\n */\n create(conversationId: string, messageId: string, params: T.WithOptionalActor<T.ConversationMessageReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessageReactionCreated>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove the (actor, type) reaction. Idempotent — calling on a missing reaction returns the current counts.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param actorId - Reactor actor UUID.\n * @param type - Reaction type to remove.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, message, or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions-actor-id-type\n * @example\n * ```ts\n * const directMessageReactionRemoved = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.delete(\"11111111-2222-3333-4444-555555555555\", \"mmmmmmmm-0000-0000-0000-000000000001\", \"actor\", \"like\");\n * ```\n */\n delete(conversationId: string, messageId: string, actorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessageReactionRemoved>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{actor_id}/{type}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId, actor_id: actorId, type } }, options);\n }\n /**\n * List the reactions on a direct message. Cursor-paginated, newest-first.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found, or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.list(\"11111111-2222-3333-4444-555555555555\", \"mmmmmmmm-0000-0000-0000-000000000001\", {})) {\n * console.log(reaction);\n * }\n * ```\n */\n list(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageReactionListParams>, options?: RequestOptions): PagePromise<T.DirectMessageReaction> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations.messages` */\nexport class CommunityConversationsMessagesResource extends APIResource {\n #reactions?: CommunityConversationsMessagesReactionsResource;\n get reactions(): CommunityConversationsMessagesReactionsResource {\n return (this.#reactions ??= new CommunityConversationsMessagesReactionsResource(this._client, this._b));\n }\n /**\n * Send a message in the conversation. Pass an `Idempotency-Key` header to make retries safe — a retried send never delivers the message twice.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMessageCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (empty body for text, body too long, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, reply target, or sender not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the sender and another participant, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-messages\n * @example\n * ```ts\n * const directMessage = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.create(\"conversation\", {});\n * ```\n */\n create(conversationId: string, params?: T.WithOptionalActor<T.ConversationMessageCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a message. Reserved to the sender; the row stays so the conversation timeline doesn't orphan replies. Reads return body `\"(deleted)\"`. Pass the sender via `?actor_id=`.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the sender, or PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.delete(\"conversation\", \"message\", {});\n * ```\n */\n delete(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List messages in the conversation. Default newest-first cursor. Pass `since` (encoded cursor of the last-seen message) to poll for newer messages instead.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMessageListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages\n * @example\n * ```ts\n * for await (const message of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.list(\"conversation\", {})) {\n * console.log(message);\n * }\n * ```\n */\n list(conversationId: string, params?: T.WithOptionalActor<T.ConversationMessageListParams>, options?: RequestOptions): PagePromise<T.DirectMessage> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Fetch a single message (task 024) — resolves a reply target without paging the whole thread. Participant-gated.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Message UUID.\n * @param params - `Social.ConversationMessageRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation/message not found, or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * const directMessage = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.retrieve(\"conversation\", \"message\", {});\n * ```\n */\n retrieve(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Edit a message body. Allowed within 5 minutes of send and only by the sender.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (empty body, body too long).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the sender, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found.\n * @throws {ConflictError} 409 CONFLICT: Edit window expired (5 minutes after send).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * const directMessage = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.update(\"conversation\", \"message\", { body: \"edited\" });\n * ```\n */\n update(conversationId: string, messageId: string, params: T.WithOptionalActor<T.ConversationMessageUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations` */\nexport class CommunityConversationsResource extends APIResource {\n #members?: CommunityConversationsMembersResource;\n #messages?: CommunityConversationsMessagesResource;\n get members(): CommunityConversationsMembersResource {\n return (this.#members ??= new CommunityConversationsMembersResource(this._client, this._b));\n }\n get messages(): CommunityConversationsMessagesResource {\n return (this.#messages ??= new CommunityConversationsMessagesResource(this._client, this._b));\n }\n /**\n * Open a conversation. Default `kind=\"direct\"` is the naturally-idempotent 1-on-1 path (get-or-create by participant pair). Pass `kind=\"group\"` with `actor_ids` for a multi-participant chat — group creates always insert a new row, so pass an `Idempotency-Key` header to make group-create retries safe.\n *\n * @param params - `Social.ConversationCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing recipient for direct, missing actor_ids for group, two equal actor ids, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or a participant is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists, the group exceeds `community.settings.max_group_conversation_size`, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations\n * @example\n * ```ts\n * const conversation = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.create({});\n * ```\n */\n create(params?: T.WithOptionalActor<T.ConversationCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Leave the conversation. Drops the caller's participant row; the conversation is hard-deleted when the last participant leaves. Pass the actor via `?actor_id=`.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.delete(\"conversation\", {});\n * ```\n */\n delete(conversationId: string, params?: T.WithOptionalActor<T.ConversationDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List the caller's conversations in this community, most-recent-activity first.\n *\n * @param params - `Social.ConversationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations\n * @example\n * ```ts\n * for await (const conversation of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.list({})) {\n * console.log(conversation);\n * }\n * ```\n */\n list(params?: T.WithOptionalActor<T.ConversationListParams>, options?: RequestOptions): PagePromise<T.Conversation> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Mark messages as read up to a given timestamp (default: now()). Sets the caller's `last_read_at`.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMarkReadParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (read_through not ISO).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/read\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-read\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.markRead(\"conversation\", {});\n * ```\n */\n markRead(conversationId: string, params?: T.WithOptionalActor<T.ConversationMarkReadParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/read\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a single conversation by id.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * const conversation = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.retrieve(\"conversation\", {});\n * ```\n */\n retrieve(conversationId: string, params?: T.WithOptionalActor<T.ConversationRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Global unread message count for the caller across every conversation in this community.\n *\n * @param params - `Social.ConversationUnreadCountParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/unread-count\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-unread-count\n * @example\n * ```ts\n * const unreadCount = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.unreadCount({});\n * ```\n */\n unreadCount(params?: T.WithOptionalActor<T.ConversationUnreadCountParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UnreadCount>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/unread-count\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Conversation-level update (task 025). Pass `name` to rename a group (admin-only) — the canonical rename home. Participant state (muted / muted_until / pinned) lives on PATCH /:id/members/:member_actor_id.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Not an admin (rename), or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {ConflictError} 409 CONFLICT: Rename on a non-group conversation.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * const conversation = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.update(\"conversation\", {});\n * ```\n */\n update(conversationId: string, params?: T.WithOptionalActor<T.ConversationUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `counters` */\nexport class CommunityCountersResource extends APIResource {\n /**\n * Batch counters (max 100 actors per call) — render a member list with follower badges from ONE call instead of one per actor. Unknown actor_ids come back in `missing[]` instead of failing the read.\n *\n * @param params - `Social.CounterListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_ID_LIST, TOO_MANY_IDS: `actor_ids` missing or empty, a non-UUID entry (`INVALID_ID_LIST`), or over 100 ids (`TOO_MANY_IDS`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace. (Unknown actors land in `missing[]`, not a 404.)\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/counters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-counters\n * @example\n * ```ts\n * const batchCounters = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").counters.list({ actor_ids: \"string\" });\n * ```\n */\n list(params: T.CounterListParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchCounters>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/counters\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n}\n\n/** `discoverFeed` */\nexport class CommunityDiscoverFeedResource extends APIResource {\n /**\n * Discover / explore feed (task 019). Ranked surface over every public post in the community — Instagram Explore / X \"For You without follow constraint\". Optional `actor_id` filters the viewer's blocks and applies a small self-boost; without one, the result is the global discovery slice.\n *\n * @param params - `Social.DiscoverFeedListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or viewer actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/discover-feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-discover-feed\n * @example\n * ```ts\n * for await (const discoverFeed of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").discoverFeed.list()) {\n * console.log(discoverFeed);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").discoverFeed.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.DiscoverFeedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/discover-feed\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `dismissedSuggestions` */\nexport class CommunityDismissedSuggestionsResource extends APIResource {\n /**\n * Dismiss an actor from your follow suggestions (\"don't suggest\"). Idempotent. The actor never re-appears in your suggestions.\n *\n * @param params - `Social.DismissedSuggestionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot dismiss yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/dismissed-suggestions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-dismissed-suggestions\n * @example\n * ```ts\n * const createEdge = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").dismissedSuggestions.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.DismissedSuggestionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/dismissed-suggestions\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Un-dismiss a suggestion. Idempotent — 204 either way. The actor becomes eligible for suggestions again.\n *\n * @param srcActorId - The dismissing actor UUID.\n * @param dstActorId - The dismissed actor UUID.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/dismissed-suggestions/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-dismissed-suggestions-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").dismissedSuggestions.delete(\"src_actor\", \"dst_actor\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/dismissed-suggestions/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `flags` */\nexport class CommunityFlagsResource extends APIResource {\n /**\n * File a moderation report against a post or comment. Idempotent per (reporter, target) while open.\n *\n * @param params - `Social.FlagCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (bad reporter / target / reason).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.flag` for this community, or reporter actor is suspended/deleted.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, reporter actor, or target object not found (or belongs to a different community).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: The target post/comment is already removed; nothing to flag. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot flag your own content.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/flags\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-flags\n * @example\n * ```ts\n * const createFlag = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.create({ target_id: \"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", target_kind: \"post\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.FlagCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateFlag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/flags\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * List a reporter's own flags (task 017). Requires `actor_id` (the reporter) — the customer lane sees only that reporter's reports (\"was my report reviewed?\"), never other reporters' flags. Cursor-paginated newest-first.\n *\n * @param params - `Social.FlagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing actor_id or invalid status.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/flags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-flags\n * @example\n * ```ts\n * for await (const flag of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.list()) {\n * console.log(flag);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.FlagListParams>, options?: RequestOptions): PagePromise<T.Flag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/flags\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `followRequests` */\nexport class CommunityFollowRequestsResource extends APIResource {\n /**\n * Approve a pending follow request (task 014). The destination (private) actor approves the requesting actor; a follow edge is created.\n *\n * @param dstActorId - The private actor being followed (approver).\n * @param srcActorId - The requesting actor.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: No pending request for this pair.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follow-requests-dst-actor-id-src-actor-id-approve\n * @example\n * ```ts\n * const createEdge = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").followRequests.approve(\"dst_actor\", \"src_actor\");\n * ```\n */\n approve(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}/approve\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n /**\n * Decline a pending follow request (task 014). Deletes the request; no edge, no notification.\n *\n * @param dstActorId - The private actor (decliner).\n * @param srcActorId - The requesting actor.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: No pending request for this pair.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-follow-requests-dst-actor-id-src-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").followRequests.delete(\"dst_actor\", \"src_actor\");\n * ```\n */\n delete(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n}\n\n/** `follows` */\nexport class CommunityFollowsResource extends APIResource {\n /**\n * Bulk follow creation (max 200 per call) — the graph-import lane. Each item runs the exact single-follow path (block checks, counters, idempotency), so a blocked pair fails ITS item with a 409 in `error` while the rest of the batch proceeds. `201` even with failures — inspect per-item results. Set `suppress_notifications: true` when importing an existing graph.\n *\n * @param params - `Social.FollowBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Envelope validation failure: `follows` missing, empty, over 200 items, or an item shape invalid.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace. (Unknown actors fail per item, not the whole call.)\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follows/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follows-batch\n * @example\n * ```ts\n * const batchFollows = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.batch({\n * follows: [\n * {\n * actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\",\n * dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\",\n * },\n * ],\n * });\n * ```\n */\n batch(params: T.FollowBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchFollows>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follows/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Follow another actor. Idempotent. If the destination is private (task 014), a follow request is created instead and the response is `{ status: \"pending\", edge: null }`; approve/decline it via the follow-request routes. Refused if either side has a block.\n *\n * @param params - `Social.FollowCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or one of the actors not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the pair (in either direction). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot follow yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follows\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follows\n * @example\n * ```ts\n * const followResult = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.FollowCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.FollowResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follows\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unfollow. Idempotent — 204 even if the follow didn't exist.\n *\n * @param srcActorId - Follower actor UUID.\n * @param dstActorId - Followee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/follows/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-follows-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.delete(\"aaaaaaaa-0000-0000-0000-000000000001\", \"aaaaaaaa-0000-0000-0000-000000000002\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/follows/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `hashtags.posts` */\nexport class CommunityHashtagsPostsResource extends APIResource {\n /**\n * List posts using a hashtag. `order=chronological` (default) or `order=ranked` (task 023) — ranked reuses the discover recency+engagement scoring, paginated on a (score, id) cursor. Same wire shape as the regular post list.\n *\n * @param tag - Lowercase tag (without `#`).\n * @param params - `Social.HashtagPostListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid tag or order value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags/{tag}/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags-tag-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.posts.list(\"tag\")) {\n * console.log(post);\n * }\n * const page = await social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.posts.list(\"tag\", {}, { timeout: 5_000 });\n * ```\n */\n list(tag: string, params?: T.HashtagPostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags/{tag}/posts\", pathParams: { community_id: this._b.community_id, tag }, query: params }, options);\n }\n}\n\n/** `hashtags` */\nexport class CommunityHashtagsResource extends APIResource {\n #posts?: CommunityHashtagsPostsResource;\n get posts(): CommunityHashtagsPostsResource {\n return (this.#posts ??= new CommunityHashtagsPostsResource(this._client, this._b));\n }\n /**\n * List hashtags in this community. Default order is `first_used_at` desc; `order=trending` ranks by windowed post count (task 023) — pass `window=24h|7d`. `window_post_count` is populated only when trending.\n *\n * @param params - `Social.HashtagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid order / window.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags\n * @example\n * ```ts\n * for await (const hashtag of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.list()) {\n * console.log(hashtag);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.HashtagListParams, options?: RequestOptions): PagePromise<T.Hashtag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Get a single hashtag with its current published post count.\n *\n * @param tag - Lowercase tag (without `#`).\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag fails the lowercase + alphanum + underscore + 1..32 rule.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags/{tag}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags-tag\n * @example\n * ```ts\n * const hashtagDetail = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.retrieve(\"storymode\");\n * ```\n */\n retrieve(tag: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HashtagDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags/{tag}\", pathParams: { community_id: this._b.community_id, tag } }, options);\n }\n}\n\n/** `hides` */\nexport class CommunityHidesResource extends APIResource {\n /**\n * Hide a post from the actor's feeds (\"not interested\"). Idempotent. A hard filter — the post drops out of home + discover for that actor only.\n *\n * @param params - `Social.HideCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or post not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/hides\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-hides\n * @example\n * ```ts\n * const hideResult = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hides.create({ post_id: \"bbbbbbbb-0000-0000-0000-000000000001\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.HideCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HideResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/hides\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Un-hide a post. Idempotent — 204 either way.\n *\n * @param srcActorId - The actor who hid the post.\n * @param postId - The hidden post UUID.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/hides/{src_actor_id}/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-hides-src-actor-id-post-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hides.delete(\"src_actor\", \"post\");\n * ```\n */\n delete(srcActorId: string, postId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/hides/{src_actor_id}/{post_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, post_id: postId } }, options);\n }\n}\n\n/** `lists.feed` */\nexport class CommunityListsFeedResource extends APIResource {\n /**\n * List-scoped feed (task 018). Returns posts authored by members of the list, filtered by what the viewer can see. Default order is `chronological`; pass `order=ranked` for the same engagement-blended scoring used by the actor feed.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListFeedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id, INVALID_ORDER, or INVALID_CURSOR.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found, or private and viewer is not owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}/feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id-feed\n * @example\n * ```ts\n * for await (const feed of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.feed.list(\"list\", {})) {\n * console.log(feed);\n * }\n * ```\n */\n list(listId: string, params?: T.WithOptionalActor<T.ListFeedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}/feed\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `lists.members` */\nexport class CommunityListsMembersResource extends APIResource {\n /**\n * Add a member to a list. Owner-only.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListMemberCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between owner and member. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/lists/{list_id}/members\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-lists-list-id-members\n * @example\n * ```ts\n * const actorListMember = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.create(\"list\", {});\n * ```\n */\n create(listId: string, params?: T.WithOptionalActor<T.ListMemberCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorListMember>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/lists/{list_id}/members\", pathParams: { community_id: this._b.community_id, list_id: listId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a member from a list. Owner-only. Idempotent — 204 either way. Pass the caller via `?actor_id=`.\n *\n * @param listId - List UUID.\n * @param memberActorId - Member — social actor UUID.\n * @param params - `Social.ListMemberDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-lists-list-id-members-member-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.delete(\"list\", \"member_actor\", {});\n * ```\n */\n delete(listId: string, memberActorId: string, params?: T.WithOptionalActor<T.ListMemberDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, list_id: listId, member_actor_id: memberActorId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List members of a list. Public lists are visible to anyone; private lists surface only when `actor_id` is the owner.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListMemberListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}/members\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id-members\n * @example\n * ```ts\n * for await (const member of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.list(\"list\")) {\n * console.log(member);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.list(\"list\", {}, { timeout: 5_000 });\n * ```\n */\n list(listId: string, params?: T.WithOptionalActor<T.ListMemberListParams>, options?: RequestOptions): PagePromise<T.ActorListMember> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}/members\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `lists` */\nexport class CommunityListsResource extends APIResource {\n #feed?: CommunityListsFeedResource;\n #members?: CommunityListsMembersResource;\n get feed(): CommunityListsFeedResource {\n return (this.#feed ??= new CommunityListsFeedResource(this._client, this._b));\n }\n get members(): CommunityListsMembersResource {\n return (this.#members ??= new CommunityListsMembersResource(this._client, this._b));\n }\n /**\n * Create a new list. Default visibility `private`. List creation has no natural key (an owner can hold many same-named lists), so pass an `Idempotency-Key` header to make retries safe.\n *\n * @param params - `Social.ListCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (including malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or owner is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or owner not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/lists\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-lists\n * @example\n * ```ts\n * const actorList = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.create({ name: \"Tech news\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.ListCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/lists\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete a list. Owner-only. Pass the caller via `?actor_id=`.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.delete(\"list\", {});\n * ```\n */\n delete(listId: string, params?: T.WithOptionalActor<T.ListDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List discoverable lists in this community. Public lists are visible to anyone; private lists surface only when `actor_id` is their owner.\n *\n * @param params - `Social.ListListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists\n * @example\n * ```ts\n * for await (const list of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.list()) {\n * console.log(list);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.ListListParams>, options?: RequestOptions): PagePromise<T.ActorList> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Get one list by id.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found, or private and viewer is not owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * const actorList = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.retrieve(\"list\");\n * ```\n */\n retrieve(listId: string, params?: T.WithOptionalActor<T.ListRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update list name / description / visibility. Owner-only.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * const actorList = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.update(\"list\");\n * ```\n */\n update(listId: string, params?: T.WithOptionalActor<T.ListUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `mutes` */\nexport class CommunityMutesResource extends APIResource {\n /**\n * Mute another actor. One-directional and silent — the muted actor isn't notified. Hides their content from the muter's feed.\n *\n * @param params - `Social.MuteCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot mute yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/mutes\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-mutes\n * @example\n * ```ts\n * const createEdge = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").mutes.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.MuteCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/mutes\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unmute. Idempotent — 204 either way.\n *\n * @param srcActorId - Muter actor UUID.\n * @param dstActorId - Mutee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/mutes/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-mutes-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").mutes.delete(\"src_actor\", \"dst_actor\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/mutes/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `posts.comments.reactions` */\nexport class CommunityPostsCommentsReactionsResource extends APIResource {\n /**\n * React to a comment. Idempotent: re-posting the same `(actor, type)` returns the existing row with `created: false`. Multiple reactions per `(actor, comment)` are allowed (different `type` values count separately).\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param params - `Social.PostCommentReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id; empty / overlong type).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment / actor not found, or comment is invisible to the actor.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between actor and comment author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-reactions\n * @example\n * ```ts\n * const addCommentReaction = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.create(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"bbbbbbbb-0000-0000-0000-000000000001\", { type: \"like\" });\n * ```\n */\n create(postId: string, commentId: string, params: T.WithOptionalActor<T.PostCommentReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.AddCommentReaction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unreact. Idempotent: returns 200 with current `reaction_counts` even if there was nothing to remove.\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param srcActorId - Reactor actor UUID.\n * @param type - Reaction type label (matches the value passed at create time).\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing path parameter `type`.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment / actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions/{src_actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id-reactions-src-actor-id-type\n * @example\n * ```ts\n * const commentReactionCounts = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.delete(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"bbbbbbbb-0000-0000-0000-000000000001\", \"src_actor\", \"like\");\n * ```\n */\n delete(postId: string, commentId: string, srcActorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CommentReactionCounts>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions/{src_actor_id}/{type}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId, src_actor_id: srcActorId, type } }, options);\n }\n /**\n * List reactions on a comment, newest-first. Cursor encodes `(created_at, actor_id, type)` so multi-reaction-from-same-actor stays stable.\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param params - `Social.PostCommentReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments-comment-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"bbbbbbbb-0000-0000-0000-000000000001\")) {\n * console.log(reaction);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"bbbbbbbb-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, commentId: string, params?: T.PostCommentReactionListParams, options?: RequestOptions): PagePromise<T.CommentReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, query: params }, options);\n }\n}\n\n/** `posts.comments` */\nexport class CommunityPostsCommentsResource extends APIResource {\n #reactions?: CommunityPostsCommentsReactionsResource;\n get reactions(): CommunityPostsCommentsReactionsResource {\n return (this.#reactions ??= new CommunityPostsCommentsReactionsResource(this._client, this._b));\n }\n /**\n * Approve a pending_approval comment (restricted-actor pre-moderation). Reserved to the post-author. No-op if already published.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentApproveParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing or invalid approver_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {ConflictError} 409 CONFLICT: Comment is in a status that cannot be approved (hidden / removed).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-approve\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.approve(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"comment\");\n * ```\n */\n approve(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentApproveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Add a comment on a post. Pass `parent_id` to reply; the depth is computed and capped by the community config. Pass an `Idempotency-Key` header to make retries safe.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param params - `Social.PostCommentCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id, empty body, body too long, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or parent comment not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between commenter and post author, depth exceeds community.settings.max_comment_depth, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.create(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", { body: \"Looks great, shipping today.\" });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostCommentCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a comment.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.delete(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"comment\");\n * ```\n */\n delete(postId: string, commentId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId } }, options);\n }\n /**\n * List comments on a post. Default returns top-level comments newest-first; pass `parent_id` to expand a thread (oldest-first). Pass `actor_id` so DM-style `author_only` replies surface only to the post-author and the comment-author pair.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param params - `Social.PostCommentListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments\n * @example\n * ```ts\n * for await (const comment of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")) {\n * console.log(comment);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostCommentListParams>, options?: RequestOptions): PagePromise<T.Comment> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Pin a top-level comment (post-author only).\n *\n * Pins a published top-level comment so it leads the top-level listing. Reserved to the post author (403 otherwise). 409 on a reply, a non-published comment, or when the per-post pin cap (community.settings.max_pinned_comments, default 3) is reached. Idempotent.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentPinParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or comment not found.\n * @throws {ConflictError} 409 CONFLICT, PIN_CAP_REACHED: Reply / non-published comment, or pin cap reached (`PIN_CAP_REACHED`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-pin\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.pin(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"comment\", {});\n * ```\n */\n pin(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentPinParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a single comment by id.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found, removed, or not visible to the requester.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.retrieve(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"bbbbbbbb-0000-0000-0000-000000000001\");\n * ```\n */\n retrieve(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Unpin a comment (post-author only).\n *\n * Clears the pin; the comment returns to its chronological position. Reserved to the post author (403). Idempotent. Pass the acting actor via the request body.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentUnpinParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id-pin\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.unpin(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"comment\", {});\n * ```\n */\n unpin(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentUnpinParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Update a comment's body, status, or visibility.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status / visibility.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * const comment = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.update(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"comment\", { body: \"string\" });\n * ```\n */\n update(postId: string, commentId: string, params?: T.PostCommentUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: params }, options);\n }\n}\n\n/** `posts.quotes` */\nexport class CommunityPostsQuotesResource extends APIResource {\n /**\n * List the quote posts of a source post (X-style \"show quotes\" link).\n *\n * Cursor-paginated by `(created_at DESC, id DESC)`. Each entry is the full quote post row — body, attributes, the quoter's actor_id, the source_post_id back-reference. Filters to status=published.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostQuoteListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/quotes\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-quotes\n * @example\n * ```ts\n * for await (const quote of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.quotes.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")) {\n * console.log(quote);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.quotes.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostQuoteListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/quotes\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.reactions` */\nexport class CommunityPostsReactionsResource extends APIResource {\n /**\n * React to a post. Idempotent: re-posting the same (actor, type) returns the existing edge with `created: false`.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between actor and post author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-reactions\n * @example\n * ```ts\n * const reaction = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.create(\"post\", { type: \"like\" });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Reaction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unreact. Idempotent: returns 200 with current `reaction_counts` even if there was nothing to remove.\n *\n * @param postId - Social post UUID.\n * @param srcActorId - Reactor actor UUID.\n * @param type - Reaction type label.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing path parameter.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/reactions/{src_actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-reactions-src-actor-id-type\n * @example\n * ```ts\n * const reactionCounts = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.delete(\"post\", \"src_actor\", \"like\");\n * ```\n */\n delete(postId: string, srcActorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReactionCounts>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions/{src_actor_id}/{type}\", pathParams: { community_id: this._b.community_id, post_id: postId, src_actor_id: srcActorId, type } }, options);\n }\n /**\n * List reactions on a post, newest-first. Cursor encodes `(created_at, actor_id, type)` so multi-reaction-from-same-actor stays stable. Pass `type` to narrow to one reaction type.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostReactionListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Overlong `type` filter (max 64 chars).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found (or post removed).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")) {\n * console.log(reaction);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostReactionListParams, options?: RequestOptions): PagePromise<T.PostReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.reposts` */\nexport class CommunityPostsRepostsResource extends APIResource {\n /**\n * List the actors who have reposted a source post. Cursor-paginated newest-first. Useful for \"X reposted this\" UI.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostRepostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/reposts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-reposts\n * @example\n * ```ts\n * for await (const repost of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reposts.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")) {\n * console.log(repost);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reposts.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostRepostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/reposts\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.revisions` */\nexport class CommunityPostsRevisionsResource extends APIResource {\n /**\n * List a post's edit history. Cursor-paginated by revision_n desc (newest edit first).\n *\n * Each entry is a snapshot of body/title/attributes from BEFORE the edit landed. The post row itself carries the current state plus `edited_at` + `edit_count`. Drafts are not snapshotted — only published posts incur revisions.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostRevisionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/revisions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-revisions\n * @example\n * ```ts\n * for await (const revision of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.revisions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")) {\n * console.log(revision);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.revisions.list(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostRevisionListParams, options?: RequestOptions): PagePromise<T.PostRevision> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/revisions\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.tags` */\nexport class CommunityPostsTagsResource extends APIResource {\n /**\n * Approve a pending tag (tagged actor only).\n *\n * The tagged actor accepts being tagged; the tag flips `pending → approved` and the post starts surfacing on their `/tagged` listing. 403 if the acting actor is not the tagged actor. 409 if the tag was already removed.\n *\n * @param postId - Post UUID.\n * @param taggedActorId - Tagged actor UUID.\n * @param params - `Social.PostTagApproveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Acting actor is not the tagged actor.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or tag not found.\n * @throws {ConflictError} 409 CONFLICT: Tag already removed.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-tags-tagged-actor-id-approve\n * @example\n * ```ts\n * const postTag = await social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.tags.approve(\"post\", \"tagged_actor\", {});\n * ```\n */\n approve(postId: string, taggedActorId: string, params?: T.WithOptionalActor<T.PostTagApproveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostTag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\", pathParams: { community_id: this._b.community_id, post_id: postId, tagged_actor_id: taggedActorId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Remove a tag (tagged actor or post author).\n *\n * Flips the tag to `removed`. Removable by either the tagged actor or the post author (403 otherwise). Idempotent on an already-removed tag.\n *\n * @param postId - Post UUID.\n * @param taggedActorId - Tagged actor UUID.\n * @param params - `Social.PostTagDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Acting actor is neither the tagged actor nor the post author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-tags-tagged-actor-id-remove\n * @example\n * ```ts\n * const postTag = await social.community(\"community\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.tags.delete(\"post\", \"tagged_actor\", {});\n * ```\n */\n delete(postId: string, taggedActorId: string, params?: T.WithOptionalActor<T.PostTagDeleteParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostTag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\", pathParams: { community_id: this._b.community_id, post_id: postId, tagged_actor_id: taggedActorId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.viewers` */\nexport class CommunityPostsViewersResource extends APIResource {\n /**\n * List viewers of a post (author-only).\n *\n * Only the post author can list viewers. The PAK passes `actor_id`; if that resolves to an actor whose id != post.actor_id, returns 403. Viewers are ordered by view timestamp, newest-first.\n *\n * @param postId - Story (post) UUID.\n * @param params - `Social.PostViewerListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id (author-only endpoint).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list` OR requester is not the post author.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/viewers\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-viewers\n * @example\n * ```ts\n * for await (const viewer of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.viewers.list(\"bbbbbbbb-0000-0000-0000-000000000001\", {})) {\n * console.log(viewer);\n * }\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostViewerListParams>, options?: RequestOptions): PagePromise<T.StoryViewerResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/viewers\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.voters` */\nexport class CommunityPostsVotersResource extends APIResource {\n /**\n * List voters of a poll (author-only).\n *\n * Only the poll author can list voters. Pass the author via `actor_id`; a requester whose id != post.actor_id gets 403. Each entry carries the voter and their `option_index`. Optionally filter to a single option with `option`. Ordered newest-first.\n *\n * @param postId - Post UUID containing the poll.\n * @param params - `Social.PostVoterListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id (author-only endpoint).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list` OR requester is not the poll author.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/voters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-voters\n * @example\n * ```ts\n * for await (const voter of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.voters.list(\"bbbbbbbb-0000-0000-0000-000000000001\", {})) {\n * console.log(voter);\n * }\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostVoterListParams>, options?: RequestOptions): PagePromise<T.PollVoterResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/voters\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.votes` */\nexport class CommunityPostsVotesResource extends APIResource {\n /**\n * Cast or change a vote on a poll.\n *\n * Last-vote-wins: an actor changing their vote replaces the prior one. 422 if the post has no poll, if `option_index` is out of range, or on self-vote of own poll. 409 if a block exists between voter and post author. Fires a `vote` notification to the post author.\n *\n * @param postId - Post UUID containing the poll.\n * @param params - `Social.PostVoteCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.vote`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / voter not found, or post invisible.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block in place between voter and poll author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, POLL_CLOSED: Self-vote / no poll / option_index out of range / `POLL_CLOSED` (past the poll `closes_at`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/votes\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-votes\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.create(\"bbbbbbbb-0000-0000-0000-000000000001\", { option_index: 1 });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostVoteCreateParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Retract an actor's vote on a poll.\n *\n * Deletes the vote edge. Idempotent — 204 whether or not a vote existed. No tally decrement: results are computed from surviving votes.\n *\n * @param postId - Post UUID containing the poll.\n * @param actorId - Voter social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.vote`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-votes-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.delete(\"bbbbbbbb-0000-0000-0000-000000000001\", \"aaaaaaaa-0000-0000-0000-000000000002\");\n * ```\n */\n delete(postId: string, actorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, actor_id: actorId } }, options);\n }\n /**\n * Read an actor's vote on a poll.\n *\n * Returns the actor's chosen `option_index` and when it was cast. 404 when the post is gone or the actor has not voted. Naturally idempotent — no Idempotency-Key.\n *\n * @param postId - Post UUID containing the poll.\n * @param actorId - Voter social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found, or the actor has not voted.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-votes-actor-id\n * @example\n * ```ts\n * const result = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.retrieve(\"bbbbbbbb-0000-0000-0000-000000000001\", \"aaaaaaaa-0000-0000-0000-000000000002\");\n * ```\n */\n retrieve(postId: string, actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PollVoteResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, actor_id: actorId } }, options);\n }\n}\n\n/** `posts` */\nexport class CommunityPostsResource extends APIResource {\n #comments?: CommunityPostsCommentsResource;\n #quotes?: CommunityPostsQuotesResource;\n #reactions?: CommunityPostsReactionsResource;\n #reposts?: CommunityPostsRepostsResource;\n #revisions?: CommunityPostsRevisionsResource;\n #tags?: CommunityPostsTagsResource;\n #viewers?: CommunityPostsViewersResource;\n #voters?: CommunityPostsVotersResource;\n #votes?: CommunityPostsVotesResource;\n get comments(): CommunityPostsCommentsResource {\n return (this.#comments ??= new CommunityPostsCommentsResource(this._client, this._b));\n }\n get quotes(): CommunityPostsQuotesResource {\n return (this.#quotes ??= new CommunityPostsQuotesResource(this._client, this._b));\n }\n get reactions(): CommunityPostsReactionsResource {\n return (this.#reactions ??= new CommunityPostsReactionsResource(this._client, this._b));\n }\n get reposts(): CommunityPostsRepostsResource {\n return (this.#reposts ??= new CommunityPostsRepostsResource(this._client, this._b));\n }\n get revisions(): CommunityPostsRevisionsResource {\n return (this.#revisions ??= new CommunityPostsRevisionsResource(this._client, this._b));\n }\n get tags(): CommunityPostsTagsResource {\n return (this.#tags ??= new CommunityPostsTagsResource(this._client, this._b));\n }\n get viewers(): CommunityPostsViewersResource {\n return (this.#viewers ??= new CommunityPostsViewersResource(this._client, this._b));\n }\n get voters(): CommunityPostsVotersResource {\n return (this.#voters ??= new CommunityPostsVotersResource(this._client, this._b));\n }\n get votes(): CommunityPostsVotesResource {\n return (this.#votes ??= new CommunityPostsVotesResource(this._client, this._b));\n }\n /**\n * Bookmark a post on behalf of an actor. Idempotent — returns the existing row with `created: false` on retry.\n *\n * Visibility-aware: the actor must be allowed to read the post. If they can't, returns 404 (opaque), matching the read-path opacity rule used everywhere else in Social.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostBookmarkParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found, or the post is invisible to the actor.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/bookmark\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-bookmark\n * @example\n * ```ts\n * const bookmarkToggle = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.bookmark(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {});\n * ```\n */\n bookmark(postId: string, params?: T.WithOptionalActor<T.PostBookmarkParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BookmarkToggle>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/bookmark\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Create a post on behalf of an actor. Pass an `Idempotency-Key` header to make retries safe — replays return the original response with `Idempotent-Replay: true` for 24h.\n *\n * @param params - `Social.PostCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id; body/title/url all empty; bad URL; bad ISO timestamp; malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or actor is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or quote source post not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, CANNOT_QUOTE_SELF, CANNOT_QUOTE_PRIVATE: Quote rules: `CANNOT_QUOTE_SELF` (kind='quote' with your own post as source) or `CANNOT_QUOTE_PRIVATE` (source post is private).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts\n * @example\n * ```ts\n * const post = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.create({});\n * ```\n */\n create(params?: T.WithOptionalActor<T.PostCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a post. The row is marked `removed`; viewers see 404. Comments and reactions are kept for moderation audit.\n *\n * @param postId - Social post UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.delete(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\");\n * ```\n */\n delete(postId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId } }, options);\n }\n /**\n * Aggregate insights for a post: total views, unique reach, engagement counts, and a daily views/reach series over ?from/?to (default trailing 30 days).\n *\n * @param postId - Id of the post.\n * @param params - `Social.PostInsightsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid window (inverted or > 366 days).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.analytics.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/insights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-insights\n * @example\n * ```ts\n * const postInsights = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.insights(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n insights(postId: string, params?: T.PostInsightsParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostInsights>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/insights\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n /**\n * List posts. Pass `author_id` to filter to a single author. 50/page (max 200), cursor-paginated.\n *\n * @param params - `Social.PostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.list()) {\n * console.log(post);\n * }\n * const page = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.PostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Aggregate poll results for a post.\n *\n * Returns counts per option, zero-filling options that received no votes, plus `total_votes`. The `question` and option `label` strings are echoed from `post.attributes.poll`.\n *\n * @param postId - Post UUID containing the poll.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Post does not contain a poll.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/poll-results\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-poll-results\n * @example\n * ```ts\n * const result = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.pollResults(\"bbbbbbbb-0000-0000-0000-000000000001\");\n * ```\n */\n pollResults(postId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PollResultsResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/poll-results\", pathParams: { community_id: this._b.community_id, post_id: postId } }, options);\n }\n /**\n * Batch-increment impression (`view_count`) counters on a list of posts. Client-side debounced; missing post ids are silently skipped (so a deleted post mid-batch doesn’t fail the rest). Renamed from `POST /posts/views` (task 008 / G14) to disambiguate from the story-side per-post `/posts/:post_id/views` route.\n *\n * @param params - `Social.PostRecordImpressionsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty `post_ids`, more than 200 ids, or a non-UUID in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.view` on the community URN.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/impressions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-impressions\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.recordImpressions({\n * post_ids: [\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"cccccccc-cccc-cccc-cccc-cccccccccccc\"],\n * });\n * ```\n */\n recordImpressions(params: T.WithOptionalActor<T.PostRecordImpressionsParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/impressions\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Record a view of a post (idempotent).\n *\n * Idempotent on `(community, viewer, post)`. 204 on success or no-op duplicate. 422 on self-view (you cannot view your own story). 404 if the post is hidden by visibility, expired, removed, or if a block exists between viewer and author. Does NOT fire a notification — the author sees views via the viewers endpoint instead.\n *\n * @param postId - Story (post) UUID.\n * @param params - `Social.PostRecordViewParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.view`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / viewer not found, or the post is invisible to the viewer.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot view your own story.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/views\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-views\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.recordView(\"bbbbbbbb-0000-0000-0000-000000000001\", {});\n * ```\n */\n recordView(postId: string, params?: T.WithOptionalActor<T.PostRecordViewParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/views\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Repost a source post on behalf of an actor. Idempotent — returns the existing repost row with `created: false` on retry.\n *\n * Visibility is inherited from the source. The reposter must be allowed to read the source (else 404). Self-repost 422; private-source repost 422. Bumps `source.repost_count` and the reposter's `post_count`. Fires a `repost` notification to the source author (subject to per-kind preferences from task 021).\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostRepostParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / source / actor not found, or source invisible to the actor.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: CANNOT_REPOST_SELF (reposting your own post) or CANNOT_REPOST_PRIVATE (source is visibility='private').\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/repost\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-repost\n * @example\n * ```ts\n * const createRepost = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.repost(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {});\n * ```\n */\n repost(postId: string, params?: T.WithOptionalActor<T.PostRepostParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateRepost>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/repost\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a post by id. Visibility-aware: pass `actor_id` for non-public posts.\n *\n * Without `actor_id`, only `public` posts return. With one, `followers` / `close_friends` / the requester's own `private` posts surface per the visibility matrix. Returns 404 (opacity) when the requester is not allowed to read the post — never 403.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found, removed, expired, or not visible to the requester.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * const post = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.retrieve(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\");\n * ```\n */\n retrieve(postId: string, params?: T.WithOptionalActor<T.PostRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Remove a bookmark on behalf of an actor. Idempotent — 204 either way. Pass the actor via `?actor_id=`.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostUnbookmarkParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/bookmark\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-bookmark\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.unbookmark(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {});\n * ```\n */\n unbookmark(postId: string, params?: T.WithOptionalActor<T.PostUnbookmarkParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/bookmark\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Undo my repost of a source post. Idempotent — 204 either way. Pass the actor via `?actor_id=`.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostUnrepostParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / source / actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/repost\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-repost\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.unrepost(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", {});\n * ```\n */\n unrepost(postId: string, params?: T.WithOptionalActor<T.PostUnrepostParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/repost\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update post fields. `pinned` is the highlights toggle for stories; status transitions to `hidden`/`removed` should usually go through the moderation lane.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status / visibility / timestamp.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, EDIT_WINDOW_EXPIRED: `EDIT_WINDOW_EXPIRED` (content edit after the community's edit window), or `scheduled_for` passed while the post is not `status='scheduled'`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * const post = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.update(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", { attributes: {} });\n * ```\n */\n update(postId: string, params?: T.PostUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: params }, options);\n }\n}\n\n/** `restricts` */\nexport class CommunityRestrictsResource extends APIResource {\n /**\n * Restrict another actor (Instagram-style). One-directional. Restricted actors can still see content, but new comments by them are pre-moderated as `pending_approval` until the post-author approves.\n *\n * @param params - `Social.RestrictCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot restrict yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/restricts\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-restricts\n * @example\n * ```ts\n * const createEdge = await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").restricts.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.RestrictCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/restricts\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unrestrict. Idempotent — 204 either way.\n *\n * @param srcActorId - Restrictor actor UUID.\n * @param dstActorId - Restricted actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/restricts/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-restricts-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").restricts.delete(\"src_actor\", \"dst_actor\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/restricts/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `search.actors` */\nexport class CommunitySearchActorsResource extends APIResource {\n /**\n * Search actors by display name, external_id (username), and bio.\n *\n * Postgres FTS over a generated tsvector column (display_name A + external_id B + bio C, `simple` locale). Returns up to `limit` (default 20, max 50) hits ordered by `ts_rank`. Pass `actor_id` to filter out actors the requester has muted or blocked, and actors who have blocked the requester. Trigram fuzzy matching is intentionally out of scope — that's a follow-up.\n *\n * @param params - `Social.SearchActorListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q missing or out of bounds (1..120 chars).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/actors\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-actors\n * @example\n * ```ts\n * for await (const actor of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.actors.list({ q: \"string\" })) {\n * console.log(actor);\n * }\n * ```\n */\n list(params: T.WithOptionalActor<T.SearchActorListParams>, options?: RequestOptions): PagePromise<T.ActorSearchHit> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/actors\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `search.hashtags` */\nexport class CommunitySearchHashtagsResource extends APIResource {\n /**\n * Prefix-search hashtags for autocomplete.\n *\n * Backed by a `text_pattern_ops` partial index — sub-100ms for any prefix length up to communities with millions of tags. Results are alphabetically ordered.\n *\n * @param params - `Social.SearchHashtagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q is required.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/hashtags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-hashtags\n * @example\n * ```ts\n * for await (const hashtag of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.hashtags.list({ q: \"string\" })) {\n * console.log(hashtag);\n * }\n * ```\n */\n list(params: T.SearchHashtagListParams, options?: RequestOptions): PagePromise<T.Hashtag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/hashtags\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n}\n\n/** `search.posts` */\nexport class CommunitySearchPostsResource extends APIResource {\n /**\n * Search post content (title + body) by full-text.\n *\n * Postgres FTS over a generated tsvector column on the post table (title A + body B, simple locale). `order='relevance'` (default) ranks by ts_rank; `order='recent'` keeps the FTS filter but orders by created_at desc. Filters out drafts / removed / hidden / expired posts. Pass `actor_id` to drop posts authored by anyone the requester has muted / blocked, or who has blocked the requester. Without `actor_id`, only posts with `visibility='public'` surface.\n *\n * @param params - `Social.SearchPostListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q missing / overlong, or invalid `order` value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"cccccccc-cccc-cccc-cccc-cccccccccccc\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.posts.list({ q: \"string\" })) {\n * console.log(post);\n * }\n * ```\n */\n list(params: T.WithOptionalActor<T.SearchPostListParams>, options?: RequestOptions): PagePromise<T.PostSearchHit> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/posts\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `search` */\nexport class CommunitySearchResource extends APIResource {\n #actors?: CommunitySearchActorsResource;\n #hashtags?: CommunitySearchHashtagsResource;\n #posts?: CommunitySearchPostsResource;\n get actors(): CommunitySearchActorsResource {\n return (this.#actors ??= new CommunitySearchActorsResource(this._client, this._b));\n }\n get hashtags(): CommunitySearchHashtagsResource {\n return (this.#hashtags ??= new CommunitySearchHashtagsResource(this._client, this._b));\n }\n get posts(): CommunitySearchPostsResource {\n return (this.#posts ??= new CommunitySearchPostsResource(this._client, this._b));\n }\n}\n\n/** `webhooks.endpoints` */\nexport class CommunityWebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param params - `Social.CommunityScopedWebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.create({ url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(params: T.CommunityScopedWebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.delete(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n delete(endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.list()) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: this._b.community_id } }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.retrieve(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\");\n * ```\n */\n retrieve(endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.rotateSecret(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(endpointId: string, params?: T.CommunityScopedWebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.test(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { event_type: \"post.created\" });\n * ```\n */\n test(endpointId: string, params: T.CommunityScopedWebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.update(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\", { description: \"Production receiver\" });\n * ```\n */\n update(endpointId: string, params?: T.CommunityScopedWebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `webhooks.eventTypes` */\nexport class CommunityWebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.eventTypes.list();\n * ```\n */\n list(options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/event-types\", pathParams: { community_id: this._b.community_id } }, options);\n }\n}\n\n/** `webhooks.events` */\nexport class CommunityWebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param params - `Social.CommunityScopedWebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.list()) {\n * console.log(event);\n * }\n * const page = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.CommunityScopedWebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/events\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.CommunityScopedWebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.replay(\"event\");\n * ```\n */\n replay(eventId: string, params?: T.CommunityScopedWebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/events/{event_id}/replay\", pathParams: { community_id: this._b.community_id, event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.community(\"3f0c1a2b-4c5d-4e6f-8a9b-0c1d2e3f4a5b\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.retrieve(\"event\");\n * ```\n */\n retrieve(eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/events/{event_id}\", pathParams: { community_id: this._b.community_id, event_id: eventId } }, options);\n }\n}\n\n/** `webhooks` */\nexport class CommunityWebhooksResource extends APIResource {\n #endpoints?: CommunityWebhooksEndpointsResource;\n #eventTypes?: CommunityWebhooksEventTypesResource;\n #events?: CommunityWebhooksEventsResource;\n get endpoints(): CommunityWebhooksEndpointsResource {\n return (this.#endpoints ??= new CommunityWebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): CommunityWebhooksEventTypesResource {\n return (this.#eventTypes ??= new CommunityWebhooksEventTypesResource(this._client, this._b));\n }\n get events(): CommunityWebhooksEventsResource {\n return (this.#events ??= new CommunityWebhooksEventsResource(this._client, this._b));\n }\n}\n\n/** `social.community(…)`: Calls scoped to one community. Chain `.as(actorId)` to act as one of its actors: `actor_id` is filled in every body or query that declares it. */\nexport class SocialCommunity extends APIResource {\n #actors?: CommunityActorsResource;\n #assets?: CommunityAssetsResource;\n #blocks?: CommunityBlocksResource;\n #closeFriends?: CommunityCloseFriendsResource;\n #collections?: CommunityCollectionsResource;\n #connections?: CommunityConnectionsResource;\n #conversations?: CommunityConversationsResource;\n #counters?: CommunityCountersResource;\n #discoverFeed?: CommunityDiscoverFeedResource;\n #dismissedSuggestions?: CommunityDismissedSuggestionsResource;\n #flags?: CommunityFlagsResource;\n #followRequests?: CommunityFollowRequestsResource;\n #follows?: CommunityFollowsResource;\n #hashtags?: CommunityHashtagsResource;\n #hides?: CommunityHidesResource;\n #lists?: CommunityListsResource;\n #mutes?: CommunityMutesResource;\n #posts?: CommunityPostsResource;\n #restricts?: CommunityRestrictsResource;\n #search?: CommunitySearchResource;\n #webhooks?: CommunityWebhooksResource;\n /**\n * A copy of this scope that fills `actor_id` in every body or query that declares it, unless the call passes one.\n * @param actorId - The acting user.\n */\n as(actorId: string): SocialCommunity {\n return new SocialCommunity(this._client, { ...this._b, actor_id: actorId });\n }\n get actors(): CommunityActorsResource {\n return (this.#actors ??= new CommunityActorsResource(this._client, this._b));\n }\n get assets(): CommunityAssetsResource {\n return (this.#assets ??= new CommunityAssetsResource(this._client, this._b));\n }\n get blocks(): CommunityBlocksResource {\n return (this.#blocks ??= new CommunityBlocksResource(this._client, this._b));\n }\n get closeFriends(): CommunityCloseFriendsResource {\n return (this.#closeFriends ??= new CommunityCloseFriendsResource(this._client, this._b));\n }\n get collections(): CommunityCollectionsResource {\n return (this.#collections ??= new CommunityCollectionsResource(this._client, this._b));\n }\n get connections(): CommunityConnectionsResource {\n return (this.#connections ??= new CommunityConnectionsResource(this._client, this._b));\n }\n get conversations(): CommunityConversationsResource {\n return (this.#conversations ??= new CommunityConversationsResource(this._client, this._b));\n }\n get counters(): CommunityCountersResource {\n return (this.#counters ??= new CommunityCountersResource(this._client, this._b));\n }\n get discoverFeed(): CommunityDiscoverFeedResource {\n return (this.#discoverFeed ??= new CommunityDiscoverFeedResource(this._client, this._b));\n }\n get dismissedSuggestions(): CommunityDismissedSuggestionsResource {\n return (this.#dismissedSuggestions ??= new CommunityDismissedSuggestionsResource(this._client, this._b));\n }\n get flags(): CommunityFlagsResource {\n return (this.#flags ??= new CommunityFlagsResource(this._client, this._b));\n }\n get followRequests(): CommunityFollowRequestsResource {\n return (this.#followRequests ??= new CommunityFollowRequestsResource(this._client, this._b));\n }\n get follows(): CommunityFollowsResource {\n return (this.#follows ??= new CommunityFollowsResource(this._client, this._b));\n }\n get hashtags(): CommunityHashtagsResource {\n return (this.#hashtags ??= new CommunityHashtagsResource(this._client, this._b));\n }\n get hides(): CommunityHidesResource {\n return (this.#hides ??= new CommunityHidesResource(this._client, this._b));\n }\n get lists(): CommunityListsResource {\n return (this.#lists ??= new CommunityListsResource(this._client, this._b));\n }\n get mutes(): CommunityMutesResource {\n return (this.#mutes ??= new CommunityMutesResource(this._client, this._b));\n }\n get posts(): CommunityPostsResource {\n return (this.#posts ??= new CommunityPostsResource(this._client, this._b));\n }\n get restricts(): CommunityRestrictsResource {\n return (this.#restricts ??= new CommunityRestrictsResource(this._client, this._b));\n }\n get search(): CommunitySearchResource {\n return (this.#search ??= new CommunitySearchResource(this._client, this._b));\n }\n get webhooks(): CommunityWebhooksResource {\n return (this.#webhooks ??= new CommunityWebhooksResource(this._client, this._b));\n }\n}\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport type { LastResponse } from \"@productcraft/core\";\nimport type { components, paths } from \"./paths.js\";\n\ntype IsUnion<T, U = T> = T extends unknown ? ([U] extends [T] ? false : true) : never;\ntype OpenString<T extends string> = string extends T ? T : true extends IsUnion<T> ? T | (string & {}) : T;\ntype OpenValue<T> = [T] extends [string] ? OpenString<T> : T extends readonly (infer I)[] ? Open<I>[] : T extends object ? { [K in keyof T]: Open<T[K]> } : T;\n/** A response type: string-literal unions also accept values added after this SDK was built. */\nexport type Open<T> = OpenValue<Exclude<T, null | undefined>> | Extract<T, null | undefined>;\n/** What a method resolves to: the parsed body plus non-enumerable `lastResponse`. */\nexport type WithLastResponse<T> = T & { readonly lastResponse: LastResponse };\n/** Params inside a scope bound with `.as(actorId)`: `actor_id` may be left out. */\nexport type WithOptionalActor<P> = P extends { actor_id: unknown } ? Omit<P, \"actor_id\"> & { actor_id?: P[\"actor_id\"] } : P;\n/** A polled model whose free-form `K` the caller types as `R` (`createAndPoll<R>`); optional and nullable stay as declared. */\nexport type WithResult<M, K extends keyof M, R> = Omit<M, K> & { [P in keyof M as P extends K ? P : never]: R | Extract<M[P], null> };\n\nexport type ActorListVisibility = components[\"schemas\"][\"ActorListVisibility\"];\nexport const ActorListVisibility = { values: [\"public\", \"private\"] as const };\n\nexport type ActorStatus = components[\"schemas\"][\"ActorStatus\"];\nexport const ActorStatus = { values: [\"active\", \"suspended\", \"deleted\"] as const };\n\nexport type AssetKind = components[\"schemas\"][\"AssetKind\"];\nexport const AssetKind = { values: [\"image\", \"video\"] as const };\n\nexport type AssetRenditionName = components[\"schemas\"][\"AssetRenditionName\"];\nexport const AssetRenditionName = { values: [\"original\", \"medium\", \"thumb\", \"video\", \"poster\"] as const };\n\nexport type AssetStatus = components[\"schemas\"][\"AssetStatus\"];\nexport const AssetStatus = { values: [\"uploading\", \"processing\", \"ready\", \"failed\"] as const };\n\nexport type AssetUploadMethod = components[\"schemas\"][\"AssetUploadMethod\"];\nexport const AssetUploadMethod = { values: [\"PUT\"] as const };\n\nexport type BlockedTermAction = components[\"schemas\"][\"BlockedTermAction\"];\nexport const BlockedTermAction = { values: [\"hide\", \"pending_approval\"] as const };\n\nexport type CollectionKind = components[\"schemas\"][\"CollectionKind\"];\nexport const CollectionKind = { values: [\"bookmark\", \"highlight\"] as const };\n\nexport type CollectionVisibility = components[\"schemas\"][\"CollectionVisibility\"];\nexport const CollectionVisibility = { values: [\"public\", \"private\"] as const };\n\nexport type CommentPolicy = components[\"schemas\"][\"CommentPolicy\"];\nexport const CommentPolicy = { values: [\"everyone\", \"followers\", \"mentioned\", \"off\"] as const };\n\nexport type CommentStatus = components[\"schemas\"][\"CommentStatus\"];\nexport const CommentStatus = { values: [\"published\", \"hidden\", \"removed\", \"pending_approval\"] as const };\n\nexport type CommentVisibility = components[\"schemas\"][\"CommentVisibility\"];\nexport const CommentVisibility = { values: [\"public\", \"author_only\"] as const };\n\nexport type CommunityStatus = components[\"schemas\"][\"CommunityStatus\"];\nexport const CommunityStatus = { values: [\"active\", \"suspended\", \"archived\"] as const };\n\nexport type ConnectionStatus = components[\"schemas\"][\"ConnectionStatus\"];\nexport const ConnectionStatus = { values: [\"pending\", \"connected\"] as const };\n\nexport type ConversationKind = components[\"schemas\"][\"ConversationKind\"];\nexport const ConversationKind = { values: [\"direct\", \"group\"] as const };\n\nexport type ConversationRole = components[\"schemas\"][\"ConversationRole\"];\nexport const ConversationRole = { values: [\"member\", \"admin\"] as const };\n\nexport type DirectMessageKind = components[\"schemas\"][\"DirectMessageKind\"];\nexport const DirectMessageKind = { values: [\"text\", \"image\", \"video\", \"audio\", \"system\"] as const };\n\nexport type EdgeKind = components[\"schemas\"][\"EdgeKind\"];\nexport const EdgeKind = { values: [\"follow\", \"mute\", \"block\", \"restrict\"] as const };\n\nexport type FlagStatus = components[\"schemas\"][\"FlagStatus\"];\nexport const FlagStatus = { values: [\"open\", \"dismissed\", \"actioned\"] as const };\n\nexport type FollowStatus = components[\"schemas\"][\"FollowStatus\"];\nexport const FollowStatus = { values: [\"followed\", \"pending\"] as const };\n\nexport type MentionSource = components[\"schemas\"][\"MentionSource\"];\nexport const MentionSource = { values: [\"post\", \"comment\"] as const };\n\nexport type ModerationActionType = components[\"schemas\"][\"ModerationActionType\"];\nexport const ModerationActionType = { values: [\"hide\", \"remove\", \"warn\", \"ban\", \"dismiss\", \"unhide\", \"restore\"] as const };\n\nexport type ModerationTargetKind = components[\"schemas\"][\"ModerationTargetKind\"];\nexport const ModerationTargetKind = { values: [\"post\", \"comment\", \"actor\", \"direct_message\"] as const };\n\nexport type MutedTermAction = components[\"schemas\"][\"MutedTermAction\"];\nexport const MutedTermAction = { values: [\"mute\", \"pending_approval\"] as const };\n\nexport type MutedTermScope = components[\"schemas\"][\"MutedTermScope\"];\nexport const MutedTermScope = { values: [\"feed\", \"dm\", \"mention\", \"all\"] as const };\n\nexport type NotificationKind = components[\"schemas\"][\"NotificationKind\"];\nexport const NotificationKind = { values: [\"follow\", \"reaction\", \"comment_on_post\", \"reply_to_comment\", \"mention\", \"vote\", \"repost\", \"quote_post\", \"dm_new_message\", \"dm_added_to_group\", \"dm_role_changed\", \"dm_reaction\", \"tag\", \"follow_request\", \"follow_request_approved\"] as const };\n\nexport type NotificationTargetKind = components[\"schemas\"][\"NotificationTargetKind\"];\nexport const NotificationTargetKind = { values: [\"actor\", \"post\", \"comment\", \"direct_message\"] as const };\n\nexport type PostStatus = components[\"schemas\"][\"PostStatus\"];\nexport const PostStatus = { values: [\"published\", \"hidden\", \"removed\", \"draft\", \"scheduled\", \"archived\"] as const };\n\nexport type PostTagState = components[\"schemas\"][\"PostTagState\"];\nexport const PostTagState = { values: [\"pending\", \"approved\", \"removed\"] as const };\n\nexport type PostVisibility = components[\"schemas\"][\"PostVisibility\"];\nexport const PostVisibility = { values: [\"public\", \"followers\", \"close_friends\", \"private\"] as const };\n\nexport type ReactionTargetType = components[\"schemas\"][\"ReactionTargetType\"];\nexport const ReactionTargetType = { values: [\"post\", \"comment\"] as const };\n\nexport type SocialStatsMetric = components[\"schemas\"][\"SocialStatsMetric\"];\nexport const SocialStatsMetric = { values: [\"active_members\"] as const };\n\nexport type StatsGranularity = components[\"schemas\"][\"StatsGranularity\"];\nexport const StatsGranularity = { values: [\"day\"] as const };\n\nexport type StatsWindow = components[\"schemas\"][\"StatsWindow\"];\nexport const StatsWindow = { values: [\"1d\", \"7d\", \"30d\"] as const };\n\nexport type SuggestionReason = components[\"schemas\"][\"SuggestionReason\"];\nexport const SuggestionReason = { values: [\"followed_by_friends\", \"top_in_community\"] as const };\n\nexport type WebhookAttemptTrigger = components[\"schemas\"][\"WebhookAttemptTrigger\"];\nexport const WebhookAttemptTrigger = { values: [\"automatic\", \"replay\", \"test\"] as const };\n\nexport type WebhookEndpointDisabledReason = components[\"schemas\"][\"WebhookEndpointDisabledReason\"];\nexport const WebhookEndpointDisabledReason = { values: [\"manual\", \"failing\"] as const };\n\nexport type WebhookEndpointStatus = components[\"schemas\"][\"WebhookEndpointStatus\"];\nexport const WebhookEndpointStatus = { values: [\"enabled\", \"disabled\", \"auto_disabled\"] as const };\n\nexport type WebhookEventStatus = components[\"schemas\"][\"WebhookEventStatus\"];\nexport const WebhookEventStatus = { values: [\"pending\", \"delivered\", \"failed\", \"not_sent\"] as const };\n\n/**\n * Every event type this product sends; `x-webhooks` maps each to its payload schema. New types can be added, so treat it as open.\n */\nexport type WebhookEventType = components[\"schemas\"][\"WebhookEventType\"];\nexport const WebhookEventType = { values: [\"post.created\", \"post.updated\", \"post.deleted\", \"post.reaction.created\", \"repost.created\", \"comment.created\", \"comment.updated\", \"comment.deleted\", \"comment.reaction.created\", \"edge.follow.created\", \"edge.follow.deleted\", \"edge.follow.requested\", \"edge.follow.request_approved\", \"flag.created\", \"flag.updated\", \"moderation.action.applied\", \"actor.updated\", \"dm.message.created\", \"tag.created\", \"asset.ready\", \"asset.failed\"] as const };\n\nexport type ActOnFlag = Open<components[\"schemas\"][\"ActOnFlagResponseDto\"]>;\nexport type ActorComments = Open<components[\"schemas\"][\"ActorCommentsResponseDto\"]>;\nexport type ActorCounters = Open<components[\"schemas\"][\"ActorCountersResponseDto\"]>;\nexport type ActorFollowerPoint = Open<components[\"schemas\"][\"ActorFollowerPointDto\"]>;\nexport type ActorInsights = Open<components[\"schemas\"][\"ActorInsightsResponseDto\"]>;\nexport type ActorListList = Open<components[\"schemas\"][\"ActorListListResponseDto\"]>;\nexport type ActorListMemberList = Open<components[\"schemas\"][\"ActorListMemberListResponseDto\"]>;\nexport type ActorListMember = Open<components[\"schemas\"][\"ActorListMemberResponseDto\"]>;\nexport type ActorList = Open<components[\"schemas\"][\"ActorListResponseDto\"]>;\nexport type ActorPage = Open<components[\"schemas\"][\"ActorPageResponseDto\"]>;\nexport type ActorReactionEntry = Open<components[\"schemas\"][\"ActorReactionEntryDto\"]>;\nexport type ActorReactions = Open<components[\"schemas\"][\"ActorReactionsResponseDto\"]>;\nexport type Actor = Open<components[\"schemas\"][\"ActorResponseDto\"]>;\nexport type ActorSearchHit = Open<components[\"schemas\"][\"ActorSearchHitDto\"]>;\nexport type ActorSearch = Open<components[\"schemas\"][\"ActorSearchResponseDto\"]>;\nexport type ActorSummary = Open<components[\"schemas\"][\"ActorSummaryDto\"]>;\nexport type ActorUpdatedEventData = Open<components[\"schemas\"][\"ActorUpdatedEventDataDto\"]>;\nexport type ActorsByExternalBatch = Open<components[\"schemas\"][\"ActorsByExternalBatchResponseDto\"]>;\nexport type AddCommentReaction = Open<components[\"schemas\"][\"AddCommentReactionResponseDto\"]>;\nexport type AssetAttachment = Open<components[\"schemas\"][\"AssetAttachmentDto\"]>;\nexport type AssetFailedEventData = Open<components[\"schemas\"][\"AssetFailedEventDataDto\"]>;\nexport type AssetList = Open<components[\"schemas\"][\"AssetListResponseDto\"]>;\nexport type AssetReadyEventData = Open<components[\"schemas\"][\"AssetReadyEventDataDto\"]>;\nexport type AssetRendition = Open<components[\"schemas\"][\"AssetRenditionDto\"]>;\nexport type Asset = Open<components[\"schemas\"][\"AssetResponseDto\"]>;\nexport type AssetUpload = Open<components[\"schemas\"][\"AssetUploadDto\"]>;\nexport type AuditList = Open<components[\"schemas\"][\"AuditListResponseDto\"]>;\nexport type BatchActorResult = Open<components[\"schemas\"][\"BatchActorResultDto\"]>;\nexport type BatchActors = Open<components[\"schemas\"][\"BatchActorsResponseDto\"]>;\nexport type BatchCounters = Open<components[\"schemas\"][\"BatchCountersResponseDto\"]>;\nexport type BatchFollowResult = Open<components[\"schemas\"][\"BatchFollowResultDto\"]>;\nexport type BatchFollows = Open<components[\"schemas\"][\"BatchFollowsResponseDto\"]>;\nexport type BatchItemError = Open<components[\"schemas\"][\"BatchItemErrorDto\"]>;\nexport type BlockedTermList = Open<components[\"schemas\"][\"BlockedTermListResponseDto\"]>;\nexport type BlockedTerm = Open<components[\"schemas\"][\"BlockedTermResponseDto\"]>;\nexport type BookmarkList = Open<components[\"schemas\"][\"BookmarkListResponseDto\"]>;\nexport type Bookmark = Open<components[\"schemas\"][\"BookmarkResponseDto\"]>;\nexport type BookmarkToggle = Open<components[\"schemas\"][\"BookmarkToggleResponseDto\"]>;\nexport type CloseFriendResponse = Open<components[\"schemas\"][\"CloseFriendResponse\"]>;\nexport type CloseFriendsListResponse = Open<components[\"schemas\"][\"CloseFriendsListResponse\"]>;\nexport type CollectionItemList = Open<components[\"schemas\"][\"CollectionItemListResponseDto\"]>;\nexport type CollectionItem = Open<components[\"schemas\"][\"CollectionItemResponseDto\"]>;\nexport type CollectionList = Open<components[\"schemas\"][\"CollectionListResponseDto\"]>;\nexport type Collection = Open<components[\"schemas\"][\"CollectionResponseDto\"]>;\nexport type CommentCreatedEventData = Open<components[\"schemas\"][\"CommentCreatedEventDataDto\"]>;\nexport type CommentDeletedEventData = Open<components[\"schemas\"][\"CommentDeletedEventDataDto\"]>;\nexport type CommentList = Open<components[\"schemas\"][\"CommentListResponseDto\"]>;\nexport type CommentReactionCounts = Open<components[\"schemas\"][\"CommentReactionCountsResponseDto\"]>;\nexport type CommentReactionCreatedEventData = Open<components[\"schemas\"][\"CommentReactionCreatedEventDataDto\"]>;\nexport type CommentReactionEntry = Open<components[\"schemas\"][\"CommentReactionEntryDto\"]>;\nexport type CommentReactionList = Open<components[\"schemas\"][\"CommentReactionListResponseDto\"]>;\nexport type Comment = Open<components[\"schemas\"][\"CommentResponseDto\"]>;\nexport type CommentUpdatedEventData = Open<components[\"schemas\"][\"CommentUpdatedEventDataDto\"]>;\nexport type CommunityAnalytics = Open<components[\"schemas\"][\"CommunityAnalyticsResponseDto\"]>;\nexport type CommunityList = Open<components[\"schemas\"][\"CommunityListResponseDto\"]>;\nexport type CommunityRankingSettings = Open<components[\"schemas\"][\"CommunityRankingSettingsDto\"]>;\nexport type CommunityRankingWeights = Open<components[\"schemas\"][\"CommunityRankingWeightsDto\"]>;\nexport type Community = Open<components[\"schemas\"][\"CommunityResponseDto\"]>;\nexport type CommunitySettings = Open<components[\"schemas\"][\"CommunitySettingsDto\"]>;\nexport type ConnectionResult = Open<components[\"schemas\"][\"ConnectionResultDto\"]>;\nexport type ConversationAdminList = Open<components[\"schemas\"][\"ConversationAdminListResponseDto\"]>;\nexport type ConversationAdmin = Open<components[\"schemas\"][\"ConversationAdminResponseDto\"]>;\nexport type ConversationList = Open<components[\"schemas\"][\"ConversationListResponseDto\"]>;\nexport type ConversationParticipant = Open<components[\"schemas\"][\"ConversationParticipantDto\"]>;\nexport type Conversation = Open<components[\"schemas\"][\"ConversationResponseDto\"]>;\nexport type CreateEdge = Open<components[\"schemas\"][\"CreateEdgeResponseDto\"]>;\nexport type CreateFlag = Open<components[\"schemas\"][\"CreateFlagResponseDto\"]>;\nexport type CreateRepost = Open<components[\"schemas\"][\"CreateRepostResponseDto\"]>;\nexport type DirectMessageAdminList = Open<components[\"schemas\"][\"DirectMessageAdminListResponseDto\"]>;\nexport type DirectMessageAdmin = Open<components[\"schemas\"][\"DirectMessageAdminResponseDto\"]>;\nexport type DirectMessageAttachment = Open<components[\"schemas\"][\"DirectMessageAttachmentDto\"]>;\nexport type DirectMessageList = Open<components[\"schemas\"][\"DirectMessageListResponseDto\"]>;\nexport type DirectMessageReactionCreated = Open<components[\"schemas\"][\"DirectMessageReactionCreatedResponseDto\"]>;\nexport type DirectMessageReactionList = Open<components[\"schemas\"][\"DirectMessageReactionListResponseDto\"]>;\nexport type DirectMessageReactionRemoved = Open<components[\"schemas\"][\"DirectMessageReactionRemovedResponseDto\"]>;\nexport type DirectMessageReaction = Open<components[\"schemas\"][\"DirectMessageReactionResponseDto\"]>;\nexport type DirectMessage = Open<components[\"schemas\"][\"DirectMessageResponseDto\"]>;\nexport type DmMessageCreatedEventData = Open<components[\"schemas\"][\"DmMessageCreatedEventDataDto\"]>;\nexport type DraftList = Open<components[\"schemas\"][\"DraftListResponseDto\"]>;\nexport type EdgeFollowCreatedEventData = Open<components[\"schemas\"][\"EdgeFollowCreatedEventDataDto\"]>;\nexport type EdgeFollowDeletedEventData = Open<components[\"schemas\"][\"EdgeFollowDeletedEventDataDto\"]>;\nexport type EdgeFollowRequestApprovedEventData = Open<components[\"schemas\"][\"EdgeFollowRequestApprovedEventDataDto\"]>;\nexport type EdgeFollowRequestedEventData = Open<components[\"schemas\"][\"EdgeFollowRequestedEventDataDto\"]>;\nexport type Edge = Open<components[\"schemas\"][\"EdgeResponseDto\"]>;\nexport type Feed = Open<components[\"schemas\"][\"FeedResponseDto\"]>;\nexport type FlagCreatedEventData = Open<components[\"schemas\"][\"FlagCreatedEventDataDto\"]>;\nexport type FlagList = Open<components[\"schemas\"][\"FlagListResponseDto\"]>;\nexport type Flag = Open<components[\"schemas\"][\"FlagResponseDto\"]>;\nexport type FlagUpdatedEventData = Open<components[\"schemas\"][\"FlagUpdatedEventDataDto\"]>;\nexport type FollowRequestEntry = Open<components[\"schemas\"][\"FollowRequestEntryDto\"]>;\nexport type FollowRequestList = Open<components[\"schemas\"][\"FollowRequestListResponseDto\"]>;\nexport type FollowResult = Open<components[\"schemas\"][\"FollowResultDto\"]>;\nexport type FollowerEdgeList = Open<components[\"schemas\"][\"FollowerEdgeListResponseDto\"]>;\nexport type FollowerEdge = Open<components[\"schemas\"][\"FollowerEdgeResponseDto\"]>;\nexport type HashtagAutocomplete = Open<components[\"schemas\"][\"HashtagAutocompleteResponseDto\"]>;\nexport type HashtagDetail = Open<components[\"schemas\"][\"HashtagDetailResponseDto\"]>;\nexport type HashtagFollowList = Open<components[\"schemas\"][\"HashtagFollowListResponseDto\"]>;\nexport type HashtagFollow = Open<components[\"schemas\"][\"HashtagFollowResponseDto\"]>;\nexport type HashtagList = Open<components[\"schemas\"][\"HashtagListResponseDto\"]>;\nexport type HashtagPostList = Open<components[\"schemas\"][\"HashtagPostListResponseDto\"]>;\nexport type Hashtag = Open<components[\"schemas\"][\"HashtagResponseDto\"]>;\nexport type HideEntry = Open<components[\"schemas\"][\"HideEntryDto\"]>;\nexport type HideList = Open<components[\"schemas\"][\"HideListResponseDto\"]>;\nexport type HideResult = Open<components[\"schemas\"][\"HideResultDto\"]>;\nexport type HighlightsResponse = Open<components[\"schemas\"][\"HighlightsResponse\"]>;\nexport type InsightsDailyBucket = Open<components[\"schemas\"][\"InsightsDailyBucketDto\"]>;\nexport type ListWebhookEndpoints = Open<components[\"schemas\"][\"ListWebhookEndpointsResponseDto\"]>;\nexport type ListWebhookEventTypes = Open<components[\"schemas\"][\"ListWebhookEventTypesResponseDto\"]>;\nexport type ListWebhookEvents = Open<components[\"schemas\"][\"ListWebhookEventsResponseDto\"]>;\nexport type MarkAllReadResponse = Open<components[\"schemas\"][\"MarkAllReadResponse\"]>;\nexport type MentionEntry = Open<components[\"schemas\"][\"MentionEntryResponseDto\"]>;\nexport type MentionList = Open<components[\"schemas\"][\"MentionListResponseDto\"]>;\nexport type ModerationActionAppliedEventData = Open<components[\"schemas\"][\"ModerationActionAppliedEventDataDto\"]>;\nexport type ModerationAction = Open<components[\"schemas\"][\"ModerationActionResponseDto\"]>;\nexport type ModerationActorList = Open<components[\"schemas\"][\"ModerationActorListResponseDto\"]>;\nexport type ModerationActor = Open<components[\"schemas\"][\"ModerationActorResponseDto\"]>;\nexport type MutedTermList = Open<components[\"schemas\"][\"MutedTermListResponseDto\"]>;\nexport type MutedTerm = Open<components[\"schemas\"][\"MutedTermResponseDto\"]>;\nexport type NotificationListResponse = Open<components[\"schemas\"][\"NotificationListResponse\"]>;\nexport type NotificationPrefList = Open<components[\"schemas\"][\"NotificationPrefListResponseDto\"]>;\nexport type NotificationPref = Open<components[\"schemas\"][\"NotificationPrefResponseDto\"]>;\nexport type NotificationResponse = Open<components[\"schemas\"][\"NotificationResponse\"]>;\nexport type OutboundEdgeList = Open<components[\"schemas\"][\"OutboundEdgeListResponseDto\"]>;\nexport type OutboundEdge = Open<components[\"schemas\"][\"OutboundEdgeResponseDto\"]>;\nexport type Pagination = Open<components[\"schemas\"][\"PaginationResponseDto\"]>;\nexport type ParticipantSummary = Open<components[\"schemas\"][\"ParticipantSummaryDto\"]>;\nexport type PollResultOptionResponse = Open<components[\"schemas\"][\"PollResultOptionResponse\"]>;\nexport type PollResultsResponse = Open<components[\"schemas\"][\"PollResultsResponse\"]>;\nexport type PollVoteResponse = Open<components[\"schemas\"][\"PollVoteResponse\"]>;\nexport type PollVoterResponse = Open<components[\"schemas\"][\"PollVoterResponse\"]>;\nexport type PollVotersResponse = Open<components[\"schemas\"][\"PollVotersResponse\"]>;\nexport type PostCreatedEventData = Open<components[\"schemas\"][\"PostCreatedEventDataDto\"]>;\nexport type PostDeletedEventData = Open<components[\"schemas\"][\"PostDeletedEventDataDto\"]>;\nexport type PostInsights = Open<components[\"schemas\"][\"PostInsightsResponseDto\"]>;\nexport type PostList = Open<components[\"schemas\"][\"PostListResponseDto\"]>;\nexport type PostReactionCreatedEventData = Open<components[\"schemas\"][\"PostReactionCreatedEventDataDto\"]>;\nexport type PostReactionEntry = Open<components[\"schemas\"][\"PostReactionEntryDto\"]>;\nexport type PostReactionList = Open<components[\"schemas\"][\"PostReactionListResponseDto\"]>;\nexport type Post = Open<components[\"schemas\"][\"PostResponseDto\"]>;\nexport type PostRevisionList = Open<components[\"schemas\"][\"PostRevisionListResponseDto\"]>;\nexport type PostRevision = Open<components[\"schemas\"][\"PostRevisionResponseDto\"]>;\nexport type PostSearchHit = Open<components[\"schemas\"][\"PostSearchHitDto\"]>;\nexport type PostSearch = Open<components[\"schemas\"][\"PostSearchResponseDto\"]>;\nexport type PostSettings = Open<components[\"schemas\"][\"PostSettingsDto\"]>;\nexport type PostState = Open<components[\"schemas\"][\"PostStateResponseDto\"]>;\nexport type PostTag = Open<components[\"schemas\"][\"PostTagResponseDto\"]>;\nexport type PostUpdatedEventData = Open<components[\"schemas\"][\"PostUpdatedEventDataDto\"]>;\nexport type PostViewerStateEntry = Open<components[\"schemas\"][\"PostViewerStateEntryDto\"]>;\nexport type ReactionCounts = Open<components[\"schemas\"][\"ReactionCountsResponseDto\"]>;\nexport type ReactionEdge = Open<components[\"schemas\"][\"ReactionEdgeResponseDto\"]>;\nexport type Reaction = Open<components[\"schemas\"][\"ReactionResponseDto\"]>;\nexport type RelationshipEntry = Open<components[\"schemas\"][\"RelationshipEntryDto\"]>;\nexport type RelationshipList = Open<components[\"schemas\"][\"RelationshipListResponseDto\"]>;\nexport type ReplayWebhookEvent = Open<components[\"schemas\"][\"ReplayWebhookEventResponseDto\"]>;\nexport type RepostCreatedEventData = Open<components[\"schemas\"][\"RepostCreatedEventDataDto\"]>;\nexport type RepostList = Open<components[\"schemas\"][\"RepostListResponseDto\"]>;\nexport type SocialStatsInWindow = Open<components[\"schemas\"][\"SocialStatsInWindowDto\"]>;\nexport type SocialStatsSeries = Open<components[\"schemas\"][\"SocialStatsSeriesDto\"]>;\nexport type SocialStatsSeriesPoint = Open<components[\"schemas\"][\"SocialStatsSeriesPointDto\"]>;\nexport type SocialStatsTotals = Open<components[\"schemas\"][\"SocialStatsTotalsDto\"]>;\nexport type SocialWorkspaceStats = Open<components[\"schemas\"][\"SocialWorkspaceStatsDto\"]>;\nexport type StoryTrayEntryResponse = Open<components[\"schemas\"][\"StoryTrayEntryResponse\"]>;\nexport type StoryTrayResponse = Open<components[\"schemas\"][\"StoryTrayResponse\"]>;\nexport type StoryViewerResponse = Open<components[\"schemas\"][\"StoryViewerResponse\"]>;\nexport type StoryViewersResponse = Open<components[\"schemas\"][\"StoryViewersResponse\"]>;\nexport type SuggestedFollow = Open<components[\"schemas\"][\"SuggestedFollowResponseDto\"]>;\nexport type SuggestedFollowsList = Open<components[\"schemas\"][\"SuggestedFollowsListResponseDto\"]>;\nexport type TagCreatedEventData = Open<components[\"schemas\"][\"TagCreatedEventDataDto\"]>;\nexport type TaggedPostsResponse = Open<components[\"schemas\"][\"TaggedPostsResponse\"]>;\nexport type UnreadCountResponse = Open<components[\"schemas\"][\"UnreadCountResponse\"]>;\nexport type UnreadCount = Open<components[\"schemas\"][\"UnreadCountResponseDto\"]>;\nexport type UploadAsset = Open<components[\"schemas\"][\"UploadAssetResponseDto\"]>;\nexport type UpsertActor = Open<components[\"schemas\"][\"UpsertActorResponseDto\"]>;\nexport type WebhookDeliveryAttempt = Open<components[\"schemas\"][\"WebhookDeliveryAttemptDto\"]>;\nexport type WebhookEndpoint = Open<components[\"schemas\"][\"WebhookEndpointDto\"]>;\nexport type WebhookEndpointWithSecret = Open<components[\"schemas\"][\"WebhookEndpointWithSecretDto\"]>;\nexport type WebhookEventDelivery = Open<components[\"schemas\"][\"WebhookEventDeliveryDto\"]>;\nexport type WebhookEventDetail = Open<components[\"schemas\"][\"WebhookEventDetailDto\"]>;\nexport type WebhookEvent = Open<components[\"schemas\"][\"WebhookEventDto\"]>;\nexport type WebhookEventTypeInfo = Open<components[\"schemas\"][\"WebhookEventTypeDto\"]>;\nexport type WebhookPagination = Open<components[\"schemas\"][\"WebhookPaginationDto\"]>;\n\n/** Params for `actors.list` (GET /v1/communities/{community_id}/actors). */\nexport type ActorListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.create` (POST /v1/communities/{community_id}/actors). */\nexport type ActorCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.batch` (POST /v1/communities/{community_id}/actors/batch). */\nexport type ActorBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.byExternal.batch` (POST /v1/communities/{community_id}/actors/by-external/batch). */\nexport type ActorByExternalBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/by-external/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}). */\nexport type ActorUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.archived.list` (GET /v1/communities/{community_id}/actors/{actor_id}/archived). */\nexport type ActorArchivedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/archived\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.assets.list` (GET /v1/communities/{community_id}/actors/{actor_id}/assets). */\nexport type ActorAssetListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/assets\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.blocks.list` (GET /v1/communities/{community_id}/actors/{actor_id}/blocks). */\nexport type ActorBlockListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/blocks\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.bookmarks.list` (GET /v1/communities/{community_id}/actors/{actor_id}/bookmarks). */\nexport type ActorBookmarkListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/bookmarks\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.closeFriends.list` (GET /v1/communities/{community_id}/actors/{actor_id}/close-friends). */\nexport type ActorCloseFriendListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/close-friends\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.dismissedSuggestions.list` (GET /v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions). */\nexport type ActorDismissedSuggestionListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.drafts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/drafts). */\nexport type ActorDraftListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/drafts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.feed.list` (GET /v1/communities/{community_id}/actors/{actor_id}/feed). */\nexport type ActorFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.followRequests.list` (GET /v1/communities/{community_id}/actors/{actor_id}/follow-requests). */\nexport type ActorFollowRequestListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/follow-requests\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.followers.list` (GET /v1/communities/{community_id}/actors/{actor_id}/followers). */\nexport type ActorFollowerListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/followers\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.following.list` (GET /v1/communities/{community_id}/actors/{actor_id}/following). */\nexport type ActorFollowingListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/following\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.hashtagFollows.list` (GET /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows). */\nexport type ActorHashtagFollowListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.hashtagFollows.create` (POST /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows). */\nexport type ActorHashtagFollowCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.hides.list` (GET /v1/communities/{community_id}/actors/{actor_id}/hides). */\nexport type ActorHideListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hides\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.insights` (GET /v1/communities/{community_id}/actors/{actor_id}/insights). */\nexport type ActorInsightsParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/insights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mentions.list` (GET /v1/communities/{community_id}/actors/{actor_id}/mentions). */\nexport type ActorMentionListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/mentions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mutedTerms.list` (GET /v1/communities/{community_id}/actors/{actor_id}/muted-terms). */\nexport type ActorMutedTermListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mutedTerms.create` (POST /v1/communities/{community_id}/actors/{actor_id}/muted-terms). */\nexport type ActorMutedTermCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.mutes.list` (GET /v1/communities/{community_id}/actors/{actor_id}/mutes). */\nexport type ActorMuteListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/mutes\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.notificationPrefs.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}). */\nexport type ActorNotificationPrefUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.notifications.list` (GET /v1/communities/{community_id}/actors/{actor_id}/notifications). */\nexport type ActorNotificationListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.notifications.markAllRead` (POST /v1/communities/{community_id}/actors/{actor_id}/notifications/read-all). */\nexport type ActorNotificationMarkAllReadParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.notifications.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}). */\nexport type ActorNotificationUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.postState` (POST /v1/communities/{community_id}/actors/{actor_id}/post-state). */\nexport type ActorPostStateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/post-state\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.restricts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/restricts). */\nexport type ActorRestrictListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/restricts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.scheduledPosts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/scheduled-posts). */\nexport type ActorScheduledPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.suggestedFollows.list` (GET /v1/communities/{community_id}/actors/{actor_id}/suggested-follows). */\nexport type ActorSuggestedFollowListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/suggested-follows\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.highlights.list` (GET /v1/communities/{community_id}/actors/{owner_actor_id}/highlights). */\nexport type ActorHighlightListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{owner_actor_id}/highlights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.relationships.list` (GET /v1/communities/{community_id}/actors/{src_actor_id}/relationships). */\nexport type ActorRelationshipListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{src_actor_id}/relationships\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.tagged.list` (GET /v1/communities/{community_id}/actors/{tagged_actor_id}/tagged). */\nexport type ActorTaggedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `assets.create` (POST /v1/communities/{community_id}/assets). */\nexport type AssetCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/assets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `blocks.create` (POST /v1/communities/{community_id}/blocks). */\nexport type BlockCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/blocks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `closeFriends.create` (POST /v1/communities/{community_id}/close-friends). */\nexport type CloseFriendCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/close-friends\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.list` (GET /v1/communities/{community_id}/collections). */\nexport type CollectionListParams = NonNullable<paths[\"/v1/communities/{community_id}/collections\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.create` (POST /v1/communities/{community_id}/collections). */\nexport type CollectionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.retrieve` (GET /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.update` (PATCH /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.delete` (DELETE /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"delete\"][\"parameters\"][\"query\"]> & NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.list` (GET /v1/communities/{community_id}/collections/{collection_id}/items). */\nexport type CollectionItemListParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.items.create` (POST /v1/communities/{community_id}/collections/{collection_id}/items). */\nexport type CollectionItemCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.update` (PATCH /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}). */\nexport type CollectionItemUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.delete` (DELETE /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}). */\nexport type CollectionItemDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"delete\"][\"parameters\"][\"query\"]> & NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `connections.create` (POST /v1/communities/{community_id}/connections). */\nexport type ConnectionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/connections\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.list` (GET /v1/communities/{community_id}/conversations). */\nexport type ConversationListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.create` (POST /v1/communities/{community_id}/conversations). */\nexport type ConversationCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.unreadCount` (GET /v1/communities/{community_id}/conversations/unread-count). */\nexport type ConversationUnreadCountParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/unread-count\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.retrieve` (GET /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.members.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/members). */\nexport type ConversationMemberCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.members.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}). */\nexport type ConversationMemberUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.members.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}). */\nexport type ConversationMemberDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.list` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages). */\nexport type ConversationMessageListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/messages). */\nexport type ConversationMessageCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.messages.retrieve` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.messages.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.reactions.list` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions). */\nexport type ConversationMessageReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.reactions.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions). */\nexport type ConversationMessageReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.markRead` (POST /v1/communities/{community_id}/conversations/{conversation_id}/read). */\nexport type ConversationMarkReadParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/read\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `counters.list` (GET /v1/communities/{community_id}/counters). */\nexport type CounterListParams = NonNullable<paths[\"/v1/communities/{community_id}/counters\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `discoverFeed.list` (GET /v1/communities/{community_id}/discover-feed). */\nexport type DiscoverFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/discover-feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `dismissedSuggestions.create` (POST /v1/communities/{community_id}/dismissed-suggestions). */\nexport type DismissedSuggestionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/dismissed-suggestions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `flags.list` (GET /v1/communities/{community_id}/flags). */\nexport type FlagListParams = NonNullable<paths[\"/v1/communities/{community_id}/flags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `flags.create` (POST /v1/communities/{community_id}/flags). */\nexport type FlagCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/flags\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `follows.create` (POST /v1/communities/{community_id}/follows). */\nexport type FollowCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/follows\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `follows.batch` (POST /v1/communities/{community_id}/follows/batch). */\nexport type FollowBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/follows/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `hashtags.list` (GET /v1/communities/{community_id}/hashtags). */\nexport type HashtagListParams = NonNullable<paths[\"/v1/communities/{community_id}/hashtags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `hashtags.posts.list` (GET /v1/communities/{community_id}/hashtags/{tag}/posts). */\nexport type HashtagPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/hashtags/{tag}/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `hides.create` (POST /v1/communities/{community_id}/hides). */\nexport type HideCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/hides\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.list` (GET /v1/communities/{community_id}/lists). */\nexport type ListListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.create` (POST /v1/communities/{community_id}/lists). */\nexport type ListCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.retrieve` (GET /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.update` (PATCH /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.delete` (DELETE /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.feed.list` (GET /v1/communities/{community_id}/lists/{list_id}/feed). */\nexport type ListFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.members.list` (GET /v1/communities/{community_id}/lists/{list_id}/members). */\nexport type ListMemberListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.members.create` (POST /v1/communities/{community_id}/lists/{list_id}/members). */\nexport type ListMemberCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.members.delete` (DELETE /v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}). */\nexport type ListMemberDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `mutes.create` (POST /v1/communities/{community_id}/mutes). */\nexport type MuteCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/mutes\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.list` (GET /v1/communities/{community_id}/posts). */\nexport type PostListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.create` (POST /v1/communities/{community_id}/posts). */\nexport type PostCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.recordImpressions` (POST /v1/communities/{community_id}/posts/impressions). */\nexport type PostRecordImpressionsParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/impressions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.retrieve` (GET /v1/communities/{community_id}/posts/{post_id}). */\nexport type PostRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.update` (PATCH /v1/communities/{community_id}/posts/{post_id}). */\nexport type PostUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.bookmark` (POST /v1/communities/{community_id}/posts/{post_id}/bookmark). */\nexport type PostBookmarkParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/bookmark\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.unbookmark` (DELETE /v1/communities/{community_id}/posts/{post_id}/bookmark). */\nexport type PostUnbookmarkParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/bookmark\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.list` (GET /v1/communities/{community_id}/posts/{post_id}/comments). */\nexport type PostCommentListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.create` (POST /v1/communities/{community_id}/posts/{post_id}/comments). */\nexport type PostCommentCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.retrieve` (GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}). */\nexport type PostCommentRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.update` (PATCH /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}). */\nexport type PostCommentUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.approve` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve). */\nexport type PostCommentApproveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.pin` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin). */\nexport type PostCommentPinParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.unpin` (DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin). */\nexport type PostCommentUnpinParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.reactions.list` (GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions). */\nexport type PostCommentReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.reactions.create` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions). */\nexport type PostCommentReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.insights` (GET /v1/communities/{community_id}/posts/{post_id}/insights). */\nexport type PostInsightsParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/insights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.quotes.list` (GET /v1/communities/{community_id}/posts/{post_id}/quotes). */\nexport type PostQuoteListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/quotes\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reactions.list` (GET /v1/communities/{community_id}/posts/{post_id}/reactions). */\nexport type PostReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reactions.create` (POST /v1/communities/{community_id}/posts/{post_id}/reactions). */\nexport type PostReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.repost` (POST /v1/communities/{community_id}/posts/{post_id}/repost). */\nexport type PostRepostParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/repost\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.unrepost` (DELETE /v1/communities/{community_id}/posts/{post_id}/repost). */\nexport type PostUnrepostParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/repost\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reposts.list` (GET /v1/communities/{community_id}/posts/{post_id}/reposts). */\nexport type PostRepostListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reposts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.revisions.list` (GET /v1/communities/{community_id}/posts/{post_id}/revisions). */\nexport type PostRevisionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/revisions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.tags.approve` (POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve). */\nexport type PostTagApproveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.tags.delete` (POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove). */\nexport type PostTagDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.viewers.list` (GET /v1/communities/{community_id}/posts/{post_id}/viewers). */\nexport type PostViewerListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/viewers\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.recordView` (POST /v1/communities/{community_id}/posts/{post_id}/views). */\nexport type PostRecordViewParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/views\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.voters.list` (GET /v1/communities/{community_id}/posts/{post_id}/voters). */\nexport type PostVoterListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/voters\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.votes.create` (POST /v1/communities/{community_id}/posts/{post_id}/votes). */\nexport type PostVoteCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/votes\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `restricts.create` (POST /v1/communities/{community_id}/restricts). */\nexport type RestrictCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/restricts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `search.actors.list` (GET /v1/communities/{community_id}/search/actors). */\nexport type SearchActorListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/actors\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `search.hashtags.list` (GET /v1/communities/{community_id}/search/hashtags). */\nexport type SearchHashtagListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/hashtags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `search.posts.list` (GET /v1/communities/{community_id}/search/posts). */\nexport type SearchPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.endpoints.create` (POST /v1/communities/{community_id}/webhooks/endpoints). */\nexport type CommunityScopedWebhookEndpointCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.update` (PATCH /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}). */\nexport type CommunityScopedWebhookEndpointUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.rotateSecret` (POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type CommunityScopedWebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.test` (POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type CommunityScopedWebhookEndpointTestParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.events.list` (GET /v1/communities/{community_id}/webhooks/events). */\nexport type CommunityScopedWebhookEventListParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.events.replay` (POST /v1/communities/{community_id}/webhooks/events/{event_id}/replay). */\nexport type CommunityScopedWebhookEventReplayParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.list` (GET /v1/workspaces/{workspace_id}/communities). */\nexport type CommunityListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.create` (POST /v1/workspaces/{workspace_id}/communities). */\nexport type CommunityCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.update` (PATCH /v1/workspaces/{workspace_id}/communities/{community_id}). */\nexport type CommunityUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.actors.comments.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments). */\nexport type CommunityActorCommentListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.actors.reactions.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions). */\nexport type CommunityActorReactionListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.actions.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions). */\nexport type CommunityModerationActionCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.actors.shadowBan` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban). */\nexport type CommunityModerationActorShadowBanParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.audit.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit). */\nexport type CommunityModerationAuditListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.blockedTerms.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms). */\nexport type CommunityModerationBlockedTermListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.blockedTerms.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms). */\nexport type CommunityModerationBlockedTermCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.conversations.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations). */\nexport type CommunityModerationConversationListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.conversations.messages.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages). */\nexport type CommunityModerationConversationMessageListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.flags.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags). */\nexport type CommunityModerationFlagListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.flags.resolve` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions). */\nexport type CommunityModerationFlagResolveParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.shadowBanned.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned). */\nexport type CommunityModerationShadowBannedListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.webhooks.endpoints.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints). */\nexport type CommunityWebhookEndpointCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.update` (PATCH /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}). */\nexport type CommunityWebhookEndpointUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.rotateSecret` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type CommunityWebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.test` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type CommunityWebhookEndpointTestParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.events.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events). */\nexport type CommunityWebhookEventListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.webhooks.events.replay` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay). */\nexport type CommunityWebhookEventReplayParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n/** Params for `stats.retrieve` (GET /v1/workspaces/{workspace_id}/stats). */\nexport type StatsRetrieveParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/stats\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.endpoints.create` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints). */\nexport type WebhookEndpointCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.update` (PATCH /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}). */\nexport type WebhookEndpointUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.rotateSecret` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type WebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.test` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type WebhookEndpointTestParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.events.list` (GET /v1/workspaces/{workspace_id}/webhooks/events). */\nexport type WebhookEventListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.events.replay` (POST /v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay). */\nexport type WebhookEventReplayParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport { APIClient, createOpenAPIClient, PC_BASE_URL, type ClientOptions, type PollOptions as CorePollOptions, type RequestOptions as CoreRequestOptions } from \"@productcraft/core\";\nimport type { Client } from \"openapi-fetch\";\nimport type * as E from \"./errors.js\";\nimport type { paths } from \"./paths.js\";\nimport { SocialCommunity, SocialResources } from \"./resources.js\";\nimport * as T from \"./types.js\";\nimport type * as W from \"./webhooks.js\";\n\ndeclare const __PC_SDK_VERSION__: string | undefined;\nconst VERSION = typeof __PC_SDK_VERSION__ === \"string\" ? __PC_SDK_VERSION__ : \"0.0.0-dev\";\n\n/**\n * ProductCraft Social API client (communities, actors, posts, feeds, conversations, notifications and moderation). Every method is generated from the API's OpenAPI document.\n *\n * @example\n * ```ts\n * import { Social } from \"@productcraft/social\";\n * const social = new Social({ apiKey: process.env.PRODUCTCRAFT_API_KEY });\n * ```\n */\n\nexport class Social extends SocialResources {\n #openapi?: Client<paths>;\n constructor(options: ClientOptions = {}) {\n super(new APIClient(options, PC_BASE_URL.social, { name: \"social\", version: VERSION }));\n }\n /** The typed `openapi-fetch` escape hatch over the same credential and base URL. It does not retry. */\n get client(): Client<paths> {\n return (this.#openapi ??= createOpenAPIClient<paths>(this._client));\n }\n /**\n * Calls scoped to one community. Chain `.as(actorId)` to act as one of its actors: `actor_id` is filled in every body or query that declares it.\n * @param communityId - `{community_id}`\n */\n community(communityId: string): SocialCommunity {\n return new SocialCommunity(this._client, { community_id: communityId });\n }\n}\n\ntype __RequestOptions = CoreRequestOptions;\ntype __PollOptions = CorePollOptions;\ntype __ActorListVisibility = T.ActorListVisibility;\ntype __ActorStatus = T.ActorStatus;\ntype __AssetKind = T.AssetKind;\ntype __AssetRenditionName = T.AssetRenditionName;\ntype __AssetStatus = T.AssetStatus;\ntype __AssetUploadMethod = T.AssetUploadMethod;\ntype __BlockedTermAction = T.BlockedTermAction;\ntype __CollectionKind = T.CollectionKind;\ntype __CollectionVisibility = T.CollectionVisibility;\ntype __CommentPolicy = T.CommentPolicy;\ntype __CommentStatus = T.CommentStatus;\ntype __CommentVisibility = T.CommentVisibility;\ntype __CommunityStatus = T.CommunityStatus;\ntype __ConnectionStatus = T.ConnectionStatus;\ntype __ConversationKind = T.ConversationKind;\ntype __ConversationRole = T.ConversationRole;\ntype __DirectMessageKind = T.DirectMessageKind;\ntype __EdgeKind = T.EdgeKind;\ntype __FlagStatus = T.FlagStatus;\ntype __FollowStatus = T.FollowStatus;\ntype __MentionSource = T.MentionSource;\ntype __ModerationActionType = T.ModerationActionType;\ntype __ModerationTargetKind = T.ModerationTargetKind;\ntype __MutedTermAction = T.MutedTermAction;\ntype __MutedTermScope = T.MutedTermScope;\ntype __NotificationKind = T.NotificationKind;\ntype __NotificationTargetKind = T.NotificationTargetKind;\ntype __PostStatus = T.PostStatus;\ntype __PostTagState = T.PostTagState;\ntype __PostVisibility = T.PostVisibility;\ntype __ReactionTargetType = T.ReactionTargetType;\ntype __SocialStatsMetric = T.SocialStatsMetric;\ntype __StatsGranularity = T.StatsGranularity;\ntype __StatsWindow = T.StatsWindow;\ntype __SuggestionReason = T.SuggestionReason;\ntype __WebhookAttemptTrigger = T.WebhookAttemptTrigger;\ntype __WebhookEndpointDisabledReason = T.WebhookEndpointDisabledReason;\ntype __WebhookEndpointStatus = T.WebhookEndpointStatus;\ntype __WebhookEventStatus = T.WebhookEventStatus;\ntype __WebhookEventType = T.WebhookEventType;\ntype __ActOnFlag = T.ActOnFlag;\ntype __ActorComments = T.ActorComments;\ntype __ActorCounters = T.ActorCounters;\ntype __ActorFollowerPoint = T.ActorFollowerPoint;\ntype __ActorInsights = T.ActorInsights;\ntype __ActorListList = T.ActorListList;\ntype __ActorListMemberList = T.ActorListMemberList;\ntype __ActorListMember = T.ActorListMember;\ntype __ActorList = T.ActorList;\ntype __ActorPage = T.ActorPage;\ntype __ActorReactionEntry = T.ActorReactionEntry;\ntype __ActorReactions = T.ActorReactions;\ntype __Actor = T.Actor;\ntype __ActorSearchHit = T.ActorSearchHit;\ntype __ActorSearch = T.ActorSearch;\ntype __ActorSummary = T.ActorSummary;\ntype __ActorUpdatedEventData = T.ActorUpdatedEventData;\ntype __ActorsByExternalBatch = T.ActorsByExternalBatch;\ntype __AddCommentReaction = T.AddCommentReaction;\ntype __AssetAttachment = T.AssetAttachment;\ntype __AssetFailedEventData = T.AssetFailedEventData;\ntype __AssetList = T.AssetList;\ntype __AssetReadyEventData = T.AssetReadyEventData;\ntype __AssetRendition = T.AssetRendition;\ntype __Asset = T.Asset;\ntype __AssetUpload = T.AssetUpload;\ntype __AuditList = T.AuditList;\ntype __BatchActorResult = T.BatchActorResult;\ntype __BatchActors = T.BatchActors;\ntype __BatchCounters = T.BatchCounters;\ntype __BatchFollowResult = T.BatchFollowResult;\ntype __BatchFollows = T.BatchFollows;\ntype __BatchItemError = T.BatchItemError;\ntype __BlockedTermList = T.BlockedTermList;\ntype __BlockedTerm = T.BlockedTerm;\ntype __BookmarkList = T.BookmarkList;\ntype __Bookmark = T.Bookmark;\ntype __BookmarkToggle = T.BookmarkToggle;\ntype __CloseFriendResponse = T.CloseFriendResponse;\ntype __CloseFriendsListResponse = T.CloseFriendsListResponse;\ntype __CollectionItemList = T.CollectionItemList;\ntype __CollectionItem = T.CollectionItem;\ntype __CollectionList = T.CollectionList;\ntype __Collection = T.Collection;\ntype __CommentCreatedEventData = T.CommentCreatedEventData;\ntype __CommentDeletedEventData = T.CommentDeletedEventData;\ntype __CommentList = T.CommentList;\ntype __CommentReactionCounts = T.CommentReactionCounts;\ntype __CommentReactionCreatedEventData = T.CommentReactionCreatedEventData;\ntype __CommentReactionEntry = T.CommentReactionEntry;\ntype __CommentReactionList = T.CommentReactionList;\ntype __Comment = T.Comment;\ntype __CommentUpdatedEventData = T.CommentUpdatedEventData;\ntype __CommunityAnalytics = T.CommunityAnalytics;\ntype __CommunityList = T.CommunityList;\ntype __CommunityRankingSettings = T.CommunityRankingSettings;\ntype __CommunityRankingWeights = T.CommunityRankingWeights;\ntype __Community = T.Community;\ntype __CommunitySettings = T.CommunitySettings;\ntype __ConnectionResult = T.ConnectionResult;\ntype __ConversationAdminList = T.ConversationAdminList;\ntype __ConversationAdmin = T.ConversationAdmin;\ntype __ConversationList = T.ConversationList;\ntype __ConversationParticipant = T.ConversationParticipant;\ntype __Conversation = T.Conversation;\ntype __CreateEdge = T.CreateEdge;\ntype __CreateFlag = T.CreateFlag;\ntype __CreateRepost = T.CreateRepost;\ntype __DirectMessageAdminList = T.DirectMessageAdminList;\ntype __DirectMessageAdmin = T.DirectMessageAdmin;\ntype __DirectMessageAttachment = T.DirectMessageAttachment;\ntype __DirectMessageList = T.DirectMessageList;\ntype __DirectMessageReactionCreated = T.DirectMessageReactionCreated;\ntype __DirectMessageReactionList = T.DirectMessageReactionList;\ntype __DirectMessageReactionRemoved = T.DirectMessageReactionRemoved;\ntype __DirectMessageReaction = T.DirectMessageReaction;\ntype __DirectMessage = T.DirectMessage;\ntype __DmMessageCreatedEventData = T.DmMessageCreatedEventData;\ntype __DraftList = T.DraftList;\ntype __EdgeFollowCreatedEventData = T.EdgeFollowCreatedEventData;\ntype __EdgeFollowDeletedEventData = T.EdgeFollowDeletedEventData;\ntype __EdgeFollowRequestApprovedEventData = T.EdgeFollowRequestApprovedEventData;\ntype __EdgeFollowRequestedEventData = T.EdgeFollowRequestedEventData;\ntype __Edge = T.Edge;\ntype __Feed = T.Feed;\ntype __FlagCreatedEventData = T.FlagCreatedEventData;\ntype __FlagList = T.FlagList;\ntype __Flag = T.Flag;\ntype __FlagUpdatedEventData = T.FlagUpdatedEventData;\ntype __FollowRequestEntry = T.FollowRequestEntry;\ntype __FollowRequestList = T.FollowRequestList;\ntype __FollowResult = T.FollowResult;\ntype __FollowerEdgeList = T.FollowerEdgeList;\ntype __FollowerEdge = T.FollowerEdge;\ntype __HashtagAutocomplete = T.HashtagAutocomplete;\ntype __HashtagDetail = T.HashtagDetail;\ntype __HashtagFollowList = T.HashtagFollowList;\ntype __HashtagFollow = T.HashtagFollow;\ntype __HashtagList = T.HashtagList;\ntype __HashtagPostList = T.HashtagPostList;\ntype __Hashtag = T.Hashtag;\ntype __HideEntry = T.HideEntry;\ntype __HideList = T.HideList;\ntype __HideResult = T.HideResult;\ntype __HighlightsResponse = T.HighlightsResponse;\ntype __InsightsDailyBucket = T.InsightsDailyBucket;\ntype __ListWebhookEndpoints = T.ListWebhookEndpoints;\ntype __ListWebhookEventTypes = T.ListWebhookEventTypes;\ntype __ListWebhookEvents = T.ListWebhookEvents;\ntype __MarkAllReadResponse = T.MarkAllReadResponse;\ntype __MentionEntry = T.MentionEntry;\ntype __MentionList = T.MentionList;\ntype __ModerationActionAppliedEventData = T.ModerationActionAppliedEventData;\ntype __ModerationAction = T.ModerationAction;\ntype __ModerationActorList = T.ModerationActorList;\ntype __ModerationActor = T.ModerationActor;\ntype __MutedTermList = T.MutedTermList;\ntype __MutedTerm = T.MutedTerm;\ntype __NotificationListResponse = T.NotificationListResponse;\ntype __NotificationPrefList = T.NotificationPrefList;\ntype __NotificationPref = T.NotificationPref;\ntype __NotificationResponse = T.NotificationResponse;\ntype __OutboundEdgeList = T.OutboundEdgeList;\ntype __OutboundEdge = T.OutboundEdge;\ntype __Pagination = T.Pagination;\ntype __ParticipantSummary = T.ParticipantSummary;\ntype __PollResultOptionResponse = T.PollResultOptionResponse;\ntype __PollResultsResponse = T.PollResultsResponse;\ntype __PollVoteResponse = T.PollVoteResponse;\ntype __PollVoterResponse = T.PollVoterResponse;\ntype __PollVotersResponse = T.PollVotersResponse;\ntype __PostCreatedEventData = T.PostCreatedEventData;\ntype __PostDeletedEventData = T.PostDeletedEventData;\ntype __PostInsights = T.PostInsights;\ntype __PostList = T.PostList;\ntype __PostReactionCreatedEventData = T.PostReactionCreatedEventData;\ntype __PostReactionEntry = T.PostReactionEntry;\ntype __PostReactionList = T.PostReactionList;\ntype __Post = T.Post;\ntype __PostRevisionList = T.PostRevisionList;\ntype __PostRevision = T.PostRevision;\ntype __PostSearchHit = T.PostSearchHit;\ntype __PostSearch = T.PostSearch;\ntype __PostSettings = T.PostSettings;\ntype __PostState = T.PostState;\ntype __PostTag = T.PostTag;\ntype __PostUpdatedEventData = T.PostUpdatedEventData;\ntype __PostViewerStateEntry = T.PostViewerStateEntry;\ntype __ReactionCounts = T.ReactionCounts;\ntype __ReactionEdge = T.ReactionEdge;\ntype __Reaction = T.Reaction;\ntype __RelationshipEntry = T.RelationshipEntry;\ntype __RelationshipList = T.RelationshipList;\ntype __ReplayWebhookEvent = T.ReplayWebhookEvent;\ntype __RepostCreatedEventData = T.RepostCreatedEventData;\ntype __RepostList = T.RepostList;\ntype __SocialStatsInWindow = T.SocialStatsInWindow;\ntype __SocialStatsSeries = T.SocialStatsSeries;\ntype __SocialStatsSeriesPoint = T.SocialStatsSeriesPoint;\ntype __SocialStatsTotals = T.SocialStatsTotals;\ntype __SocialWorkspaceStats = T.SocialWorkspaceStats;\ntype __StoryTrayEntryResponse = T.StoryTrayEntryResponse;\ntype __StoryTrayResponse = T.StoryTrayResponse;\ntype __StoryViewerResponse = T.StoryViewerResponse;\ntype __StoryViewersResponse = T.StoryViewersResponse;\ntype __SuggestedFollow = T.SuggestedFollow;\ntype __SuggestedFollowsList = T.SuggestedFollowsList;\ntype __TagCreatedEventData = T.TagCreatedEventData;\ntype __TaggedPostsResponse = T.TaggedPostsResponse;\ntype __UnreadCountResponse = T.UnreadCountResponse;\ntype __UnreadCount = T.UnreadCount;\ntype __UploadAsset = T.UploadAsset;\ntype __UpsertActor = T.UpsertActor;\ntype __WebhookDeliveryAttempt = T.WebhookDeliveryAttempt;\ntype __WebhookEndpoint = T.WebhookEndpoint;\ntype __WebhookEndpointWithSecret = T.WebhookEndpointWithSecret;\ntype __WebhookEventDelivery = T.WebhookEventDelivery;\ntype __WebhookEventDetail = T.WebhookEventDetail;\ntype __WebhookEvent = T.WebhookEvent;\ntype __WebhookEventTypeInfo = T.WebhookEventTypeInfo;\ntype __WebhookPagination = T.WebhookPagination;\ntype __ActorListParams = T.ActorListParams;\ntype __ActorCreateParams = T.ActorCreateParams;\ntype __ActorBatchParams = T.ActorBatchParams;\ntype __ActorByExternalBatchParams = T.ActorByExternalBatchParams;\ntype __ActorUpdateParams = T.ActorUpdateParams;\ntype __ActorArchivedListParams = T.ActorArchivedListParams;\ntype __ActorAssetListParams = T.ActorAssetListParams;\ntype __ActorBlockListParams = T.ActorBlockListParams;\ntype __ActorBookmarkListParams = T.ActorBookmarkListParams;\ntype __ActorCloseFriendListParams = T.ActorCloseFriendListParams;\ntype __ActorDismissedSuggestionListParams = T.ActorDismissedSuggestionListParams;\ntype __ActorDraftListParams = T.ActorDraftListParams;\ntype __ActorFeedListParams = T.ActorFeedListParams;\ntype __ActorFollowRequestListParams = T.ActorFollowRequestListParams;\ntype __ActorFollowerListParams = T.ActorFollowerListParams;\ntype __ActorFollowingListParams = T.ActorFollowingListParams;\ntype __ActorHashtagFollowListParams = T.ActorHashtagFollowListParams;\ntype __ActorHashtagFollowCreateParams = T.ActorHashtagFollowCreateParams;\ntype __ActorHideListParams = T.ActorHideListParams;\ntype __ActorInsightsParams = T.ActorInsightsParams;\ntype __ActorMentionListParams = T.ActorMentionListParams;\ntype __ActorMutedTermListParams = T.ActorMutedTermListParams;\ntype __ActorMutedTermCreateParams = T.ActorMutedTermCreateParams;\ntype __ActorMuteListParams = T.ActorMuteListParams;\ntype __ActorNotificationPrefUpdateParams = T.ActorNotificationPrefUpdateParams;\ntype __ActorNotificationListParams = T.ActorNotificationListParams;\ntype __ActorNotificationMarkAllReadParams = T.ActorNotificationMarkAllReadParams;\ntype __ActorNotificationUpdateParams = T.ActorNotificationUpdateParams;\ntype __ActorPostStateParams = T.ActorPostStateParams;\ntype __ActorRestrictListParams = T.ActorRestrictListParams;\ntype __ActorScheduledPostListParams = T.ActorScheduledPostListParams;\ntype __ActorSuggestedFollowListParams = T.ActorSuggestedFollowListParams;\ntype __ActorHighlightListParams = T.ActorHighlightListParams;\ntype __ActorRelationshipListParams = T.ActorRelationshipListParams;\ntype __ActorTaggedListParams = T.ActorTaggedListParams;\ntype __AssetCreateParams = T.AssetCreateParams;\ntype __BlockCreateParams = T.BlockCreateParams;\ntype __CloseFriendCreateParams = T.CloseFriendCreateParams;\ntype __CollectionListParams = T.CollectionListParams;\ntype __CollectionCreateParams = T.CollectionCreateParams;\ntype __CollectionRetrieveParams = T.CollectionRetrieveParams;\ntype __CollectionUpdateParams = T.CollectionUpdateParams;\ntype __CollectionDeleteParams = T.CollectionDeleteParams;\ntype __CollectionItemListParams = T.CollectionItemListParams;\ntype __CollectionItemCreateParams = T.CollectionItemCreateParams;\ntype __CollectionItemUpdateParams = T.CollectionItemUpdateParams;\ntype __CollectionItemDeleteParams = T.CollectionItemDeleteParams;\ntype __ConnectionCreateParams = T.ConnectionCreateParams;\ntype __ConversationListParams = T.ConversationListParams;\ntype __ConversationCreateParams = T.ConversationCreateParams;\ntype __ConversationUnreadCountParams = T.ConversationUnreadCountParams;\ntype __ConversationRetrieveParams = T.ConversationRetrieveParams;\ntype __ConversationUpdateParams = T.ConversationUpdateParams;\ntype __ConversationDeleteParams = T.ConversationDeleteParams;\ntype __ConversationMemberCreateParams = T.ConversationMemberCreateParams;\ntype __ConversationMemberUpdateParams = T.ConversationMemberUpdateParams;\ntype __ConversationMemberDeleteParams = T.ConversationMemberDeleteParams;\ntype __ConversationMessageListParams = T.ConversationMessageListParams;\ntype __ConversationMessageCreateParams = T.ConversationMessageCreateParams;\ntype __ConversationMessageRetrieveParams = T.ConversationMessageRetrieveParams;\ntype __ConversationMessageUpdateParams = T.ConversationMessageUpdateParams;\ntype __ConversationMessageDeleteParams = T.ConversationMessageDeleteParams;\ntype __ConversationMessageReactionListParams = T.ConversationMessageReactionListParams;\ntype __ConversationMessageReactionCreateParams = T.ConversationMessageReactionCreateParams;\ntype __ConversationMarkReadParams = T.ConversationMarkReadParams;\ntype __CounterListParams = T.CounterListParams;\ntype __DiscoverFeedListParams = T.DiscoverFeedListParams;\ntype __DismissedSuggestionCreateParams = T.DismissedSuggestionCreateParams;\ntype __FlagListParams = T.FlagListParams;\ntype __FlagCreateParams = T.FlagCreateParams;\ntype __FollowCreateParams = T.FollowCreateParams;\ntype __FollowBatchParams = T.FollowBatchParams;\ntype __HashtagListParams = T.HashtagListParams;\ntype __HashtagPostListParams = T.HashtagPostListParams;\ntype __HideCreateParams = T.HideCreateParams;\ntype __ListListParams = T.ListListParams;\ntype __ListCreateParams = T.ListCreateParams;\ntype __ListRetrieveParams = T.ListRetrieveParams;\ntype __ListUpdateParams = T.ListUpdateParams;\ntype __ListDeleteParams = T.ListDeleteParams;\ntype __ListFeedListParams = T.ListFeedListParams;\ntype __ListMemberListParams = T.ListMemberListParams;\ntype __ListMemberCreateParams = T.ListMemberCreateParams;\ntype __ListMemberDeleteParams = T.ListMemberDeleteParams;\ntype __MuteCreateParams = T.MuteCreateParams;\ntype __PostListParams = T.PostListParams;\ntype __PostCreateParams = T.PostCreateParams;\ntype __PostRecordImpressionsParams = T.PostRecordImpressionsParams;\ntype __PostRetrieveParams = T.PostRetrieveParams;\ntype __PostUpdateParams = T.PostUpdateParams;\ntype __PostBookmarkParams = T.PostBookmarkParams;\ntype __PostUnbookmarkParams = T.PostUnbookmarkParams;\ntype __PostCommentListParams = T.PostCommentListParams;\ntype __PostCommentCreateParams = T.PostCommentCreateParams;\ntype __PostCommentRetrieveParams = T.PostCommentRetrieveParams;\ntype __PostCommentUpdateParams = T.PostCommentUpdateParams;\ntype __PostCommentApproveParams = T.PostCommentApproveParams;\ntype __PostCommentPinParams = T.PostCommentPinParams;\ntype __PostCommentUnpinParams = T.PostCommentUnpinParams;\ntype __PostCommentReactionListParams = T.PostCommentReactionListParams;\ntype __PostCommentReactionCreateParams = T.PostCommentReactionCreateParams;\ntype __PostInsightsParams = T.PostInsightsParams;\ntype __PostQuoteListParams = T.PostQuoteListParams;\ntype __PostReactionListParams = T.PostReactionListParams;\ntype __PostReactionCreateParams = T.PostReactionCreateParams;\ntype __PostRepostParams = T.PostRepostParams;\ntype __PostUnrepostParams = T.PostUnrepostParams;\ntype __PostRepostListParams = T.PostRepostListParams;\ntype __PostRevisionListParams = T.PostRevisionListParams;\ntype __PostTagApproveParams = T.PostTagApproveParams;\ntype __PostTagDeleteParams = T.PostTagDeleteParams;\ntype __PostViewerListParams = T.PostViewerListParams;\ntype __PostRecordViewParams = T.PostRecordViewParams;\ntype __PostVoterListParams = T.PostVoterListParams;\ntype __PostVoteCreateParams = T.PostVoteCreateParams;\ntype __RestrictCreateParams = T.RestrictCreateParams;\ntype __SearchActorListParams = T.SearchActorListParams;\ntype __SearchHashtagListParams = T.SearchHashtagListParams;\ntype __SearchPostListParams = T.SearchPostListParams;\ntype __CommunityScopedWebhookEndpointCreateParams = T.CommunityScopedWebhookEndpointCreateParams;\ntype __CommunityScopedWebhookEndpointUpdateParams = T.CommunityScopedWebhookEndpointUpdateParams;\ntype __CommunityScopedWebhookEndpointRotateSecretParams = T.CommunityScopedWebhookEndpointRotateSecretParams;\ntype __CommunityScopedWebhookEndpointTestParams = T.CommunityScopedWebhookEndpointTestParams;\ntype __CommunityScopedWebhookEventListParams = T.CommunityScopedWebhookEventListParams;\ntype __CommunityScopedWebhookEventReplayParams = T.CommunityScopedWebhookEventReplayParams;\ntype __CommunityListParams = T.CommunityListParams;\ntype __CommunityCreateParams = T.CommunityCreateParams;\ntype __CommunityUpdateParams = T.CommunityUpdateParams;\ntype __CommunityActorCommentListParams = T.CommunityActorCommentListParams;\ntype __CommunityActorReactionListParams = T.CommunityActorReactionListParams;\ntype __CommunityModerationActionCreateParams = T.CommunityModerationActionCreateParams;\ntype __CommunityModerationActorShadowBanParams = T.CommunityModerationActorShadowBanParams;\ntype __CommunityModerationAuditListParams = T.CommunityModerationAuditListParams;\ntype __CommunityModerationBlockedTermListParams = T.CommunityModerationBlockedTermListParams;\ntype __CommunityModerationBlockedTermCreateParams = T.CommunityModerationBlockedTermCreateParams;\ntype __CommunityModerationConversationListParams = T.CommunityModerationConversationListParams;\ntype __CommunityModerationConversationMessageListParams = T.CommunityModerationConversationMessageListParams;\ntype __CommunityModerationFlagListParams = T.CommunityModerationFlagListParams;\ntype __CommunityModerationFlagResolveParams = T.CommunityModerationFlagResolveParams;\ntype __CommunityModerationShadowBannedListParams = T.CommunityModerationShadowBannedListParams;\ntype __CommunityWebhookEndpointCreateParams = T.CommunityWebhookEndpointCreateParams;\ntype __CommunityWebhookEndpointUpdateParams = T.CommunityWebhookEndpointUpdateParams;\ntype __CommunityWebhookEndpointRotateSecretParams = T.CommunityWebhookEndpointRotateSecretParams;\ntype __CommunityWebhookEndpointTestParams = T.CommunityWebhookEndpointTestParams;\ntype __CommunityWebhookEventListParams = T.CommunityWebhookEventListParams;\ntype __CommunityWebhookEventReplayParams = T.CommunityWebhookEventReplayParams;\ntype __StatsRetrieveParams = T.StatsRetrieveParams;\ntype __WebhookEndpointCreateParams = T.WebhookEndpointCreateParams;\ntype __WebhookEndpointUpdateParams = T.WebhookEndpointUpdateParams;\ntype __WebhookEndpointRotateSecretParams = T.WebhookEndpointRotateSecretParams;\ntype __WebhookEndpointTestParams = T.WebhookEndpointTestParams;\ntype __WebhookEventListParams = T.WebhookEventListParams;\ntype __WebhookEventReplayParams = T.WebhookEventReplayParams;\ntype __ErrorCode = E.SocialErrorCode;\ntype __ActorUpdatedEvent = W.ActorUpdatedEvent;\ntype __AssetFailedEvent = W.AssetFailedEvent;\ntype __AssetReadyEvent = W.AssetReadyEvent;\ntype __CommentCreatedEvent = W.CommentCreatedEvent;\ntype __CommentDeletedEvent = W.CommentDeletedEvent;\ntype __CommentReactionCreatedEvent = W.CommentReactionCreatedEvent;\ntype __CommentUpdatedEvent = W.CommentUpdatedEvent;\ntype __DmMessageCreatedEvent = W.DmMessageCreatedEvent;\ntype __EdgeFollowCreatedEvent = W.EdgeFollowCreatedEvent;\ntype __EdgeFollowDeletedEvent = W.EdgeFollowDeletedEvent;\ntype __EdgeFollowRequestApprovedEvent = W.EdgeFollowRequestApprovedEvent;\ntype __EdgeFollowRequestedEvent = W.EdgeFollowRequestedEvent;\ntype __FlagCreatedEvent = W.FlagCreatedEvent;\ntype __FlagUpdatedEvent = W.FlagUpdatedEvent;\ntype __ModerationActionAppliedEvent = W.ModerationActionAppliedEvent;\ntype __PostCreatedEvent = W.PostCreatedEvent;\ntype __PostDeletedEvent = W.PostDeletedEvent;\ntype __PostReactionCreatedEvent = W.PostReactionCreatedEvent;\ntype __PostUpdatedEvent = W.PostUpdatedEvent;\ntype __RepostCreatedEvent = W.RepostCreatedEvent;\ntype __TagCreatedEvent = W.TagCreatedEvent;\ntype __UnknownWebhookEvent = W.UnknownWebhookEvent;\ntype __UnwrapWebhookEvent = W.UnwrapWebhookEvent;\ntype __WebhookUnwrapParams = W.WebhookUnwrapParams;\n/** Public types: `Social.ActOnFlag`, `Social.ActorListParams`, … */\nexport namespace Social {\n export type RequestOptions = __RequestOptions;\n export type PollOptions = __PollOptions;\n export type ActorListVisibility = __ActorListVisibility;\n export const ActorListVisibility = T.ActorListVisibility;\n export type ActorStatus = __ActorStatus;\n export const ActorStatus = T.ActorStatus;\n export type AssetKind = __AssetKind;\n export const AssetKind = T.AssetKind;\n export type AssetRenditionName = __AssetRenditionName;\n export const AssetRenditionName = T.AssetRenditionName;\n export type AssetStatus = __AssetStatus;\n export const AssetStatus = T.AssetStatus;\n export type AssetUploadMethod = __AssetUploadMethod;\n export const AssetUploadMethod = T.AssetUploadMethod;\n export type BlockedTermAction = __BlockedTermAction;\n export const BlockedTermAction = T.BlockedTermAction;\n export type CollectionKind = __CollectionKind;\n export const CollectionKind = T.CollectionKind;\n export type CollectionVisibility = __CollectionVisibility;\n export const CollectionVisibility = T.CollectionVisibility;\n export type CommentPolicy = __CommentPolicy;\n export const CommentPolicy = T.CommentPolicy;\n export type CommentStatus = __CommentStatus;\n export const CommentStatus = T.CommentStatus;\n export type CommentVisibility = __CommentVisibility;\n export const CommentVisibility = T.CommentVisibility;\n export type CommunityStatus = __CommunityStatus;\n export const CommunityStatus = T.CommunityStatus;\n export type ConnectionStatus = __ConnectionStatus;\n export const ConnectionStatus = T.ConnectionStatus;\n export type ConversationKind = __ConversationKind;\n export const ConversationKind = T.ConversationKind;\n export type ConversationRole = __ConversationRole;\n export const ConversationRole = T.ConversationRole;\n export type DirectMessageKind = __DirectMessageKind;\n export const DirectMessageKind = T.DirectMessageKind;\n export type EdgeKind = __EdgeKind;\n export const EdgeKind = T.EdgeKind;\n export type FlagStatus = __FlagStatus;\n export const FlagStatus = T.FlagStatus;\n export type FollowStatus = __FollowStatus;\n export const FollowStatus = T.FollowStatus;\n export type MentionSource = __MentionSource;\n export const MentionSource = T.MentionSource;\n export type ModerationActionType = __ModerationActionType;\n export const ModerationActionType = T.ModerationActionType;\n export type ModerationTargetKind = __ModerationTargetKind;\n export const ModerationTargetKind = T.ModerationTargetKind;\n export type MutedTermAction = __MutedTermAction;\n export const MutedTermAction = T.MutedTermAction;\n export type MutedTermScope = __MutedTermScope;\n export const MutedTermScope = T.MutedTermScope;\n export type NotificationKind = __NotificationKind;\n export const NotificationKind = T.NotificationKind;\n export type NotificationTargetKind = __NotificationTargetKind;\n export const NotificationTargetKind = T.NotificationTargetKind;\n export type PostStatus = __PostStatus;\n export const PostStatus = T.PostStatus;\n export type PostTagState = __PostTagState;\n export const PostTagState = T.PostTagState;\n export type PostVisibility = __PostVisibility;\n export const PostVisibility = T.PostVisibility;\n export type ReactionTargetType = __ReactionTargetType;\n export const ReactionTargetType = T.ReactionTargetType;\n export type SocialStatsMetric = __SocialStatsMetric;\n export const SocialStatsMetric = T.SocialStatsMetric;\n export type StatsGranularity = __StatsGranularity;\n export const StatsGranularity = T.StatsGranularity;\n export type StatsWindow = __StatsWindow;\n export const StatsWindow = T.StatsWindow;\n export type SuggestionReason = __SuggestionReason;\n export const SuggestionReason = T.SuggestionReason;\n export type WebhookAttemptTrigger = __WebhookAttemptTrigger;\n export const WebhookAttemptTrigger = T.WebhookAttemptTrigger;\n export type WebhookEndpointDisabledReason = __WebhookEndpointDisabledReason;\n export const WebhookEndpointDisabledReason = T.WebhookEndpointDisabledReason;\n export type WebhookEndpointStatus = __WebhookEndpointStatus;\n export const WebhookEndpointStatus = T.WebhookEndpointStatus;\n export type WebhookEventStatus = __WebhookEventStatus;\n export const WebhookEventStatus = T.WebhookEventStatus;\n export type WebhookEventType = __WebhookEventType;\n export const WebhookEventType = T.WebhookEventType;\n export type ActOnFlag = __ActOnFlag;\n export type ActorComments = __ActorComments;\n export type ActorCounters = __ActorCounters;\n export type ActorFollowerPoint = __ActorFollowerPoint;\n export type ActorInsights = __ActorInsights;\n export type ActorListList = __ActorListList;\n export type ActorListMemberList = __ActorListMemberList;\n export type ActorListMember = __ActorListMember;\n export type ActorList = __ActorList;\n export type ActorPage = __ActorPage;\n export type ActorReactionEntry = __ActorReactionEntry;\n export type ActorReactions = __ActorReactions;\n export type Actor = __Actor;\n export type ActorSearchHit = __ActorSearchHit;\n export type ActorSearch = __ActorSearch;\n export type ActorSummary = __ActorSummary;\n export type ActorUpdatedEventData = __ActorUpdatedEventData;\n export type ActorsByExternalBatch = __ActorsByExternalBatch;\n export type AddCommentReaction = __AddCommentReaction;\n export type AssetAttachment = __AssetAttachment;\n export type AssetFailedEventData = __AssetFailedEventData;\n export type AssetList = __AssetList;\n export type AssetReadyEventData = __AssetReadyEventData;\n export type AssetRendition = __AssetRendition;\n export type Asset = __Asset;\n export type AssetUpload = __AssetUpload;\n export type AuditList = __AuditList;\n export type BatchActorResult = __BatchActorResult;\n export type BatchActors = __BatchActors;\n export type BatchCounters = __BatchCounters;\n export type BatchFollowResult = __BatchFollowResult;\n export type BatchFollows = __BatchFollows;\n export type BatchItemError = __BatchItemError;\n export type BlockedTermList = __BlockedTermList;\n export type BlockedTerm = __BlockedTerm;\n export type BookmarkList = __BookmarkList;\n export type Bookmark = __Bookmark;\n export type BookmarkToggle = __BookmarkToggle;\n export type CloseFriendResponse = __CloseFriendResponse;\n export type CloseFriendsListResponse = __CloseFriendsListResponse;\n export type CollectionItemList = __CollectionItemList;\n export type CollectionItem = __CollectionItem;\n export type CollectionList = __CollectionList;\n export type Collection = __Collection;\n export type CommentCreatedEventData = __CommentCreatedEventData;\n export type CommentDeletedEventData = __CommentDeletedEventData;\n export type CommentList = __CommentList;\n export type CommentReactionCounts = __CommentReactionCounts;\n export type CommentReactionCreatedEventData = __CommentReactionCreatedEventData;\n export type CommentReactionEntry = __CommentReactionEntry;\n export type CommentReactionList = __CommentReactionList;\n export type Comment = __Comment;\n export type CommentUpdatedEventData = __CommentUpdatedEventData;\n export type CommunityAnalytics = __CommunityAnalytics;\n export type CommunityList = __CommunityList;\n export type CommunityRankingSettings = __CommunityRankingSettings;\n export type CommunityRankingWeights = __CommunityRankingWeights;\n export type Community = __Community;\n export type CommunitySettings = __CommunitySettings;\n export type ConnectionResult = __ConnectionResult;\n export type ConversationAdminList = __ConversationAdminList;\n export type ConversationAdmin = __ConversationAdmin;\n export type ConversationList = __ConversationList;\n export type ConversationParticipant = __ConversationParticipant;\n export type Conversation = __Conversation;\n export type CreateEdge = __CreateEdge;\n export type CreateFlag = __CreateFlag;\n export type CreateRepost = __CreateRepost;\n export type DirectMessageAdminList = __DirectMessageAdminList;\n export type DirectMessageAdmin = __DirectMessageAdmin;\n export type DirectMessageAttachment = __DirectMessageAttachment;\n export type DirectMessageList = __DirectMessageList;\n export type DirectMessageReactionCreated = __DirectMessageReactionCreated;\n export type DirectMessageReactionList = __DirectMessageReactionList;\n export type DirectMessageReactionRemoved = __DirectMessageReactionRemoved;\n export type DirectMessageReaction = __DirectMessageReaction;\n export type DirectMessage = __DirectMessage;\n export type DmMessageCreatedEventData = __DmMessageCreatedEventData;\n export type DraftList = __DraftList;\n export type EdgeFollowCreatedEventData = __EdgeFollowCreatedEventData;\n export type EdgeFollowDeletedEventData = __EdgeFollowDeletedEventData;\n export type EdgeFollowRequestApprovedEventData = __EdgeFollowRequestApprovedEventData;\n export type EdgeFollowRequestedEventData = __EdgeFollowRequestedEventData;\n export type Edge = __Edge;\n export type Feed = __Feed;\n export type FlagCreatedEventData = __FlagCreatedEventData;\n export type FlagList = __FlagList;\n export type Flag = __Flag;\n export type FlagUpdatedEventData = __FlagUpdatedEventData;\n export type FollowRequestEntry = __FollowRequestEntry;\n export type FollowRequestList = __FollowRequestList;\n export type FollowResult = __FollowResult;\n export type FollowerEdgeList = __FollowerEdgeList;\n export type FollowerEdge = __FollowerEdge;\n export type HashtagAutocomplete = __HashtagAutocomplete;\n export type HashtagDetail = __HashtagDetail;\n export type HashtagFollowList = __HashtagFollowList;\n export type HashtagFollow = __HashtagFollow;\n export type HashtagList = __HashtagList;\n export type HashtagPostList = __HashtagPostList;\n export type Hashtag = __Hashtag;\n export type HideEntry = __HideEntry;\n export type HideList = __HideList;\n export type HideResult = __HideResult;\n export type HighlightsResponse = __HighlightsResponse;\n export type InsightsDailyBucket = __InsightsDailyBucket;\n export type ListWebhookEndpoints = __ListWebhookEndpoints;\n export type ListWebhookEventTypes = __ListWebhookEventTypes;\n export type ListWebhookEvents = __ListWebhookEvents;\n export type MarkAllReadResponse = __MarkAllReadResponse;\n export type MentionEntry = __MentionEntry;\n export type MentionList = __MentionList;\n export type ModerationActionAppliedEventData = __ModerationActionAppliedEventData;\n export type ModerationAction = __ModerationAction;\n export type ModerationActorList = __ModerationActorList;\n export type ModerationActor = __ModerationActor;\n export type MutedTermList = __MutedTermList;\n export type MutedTerm = __MutedTerm;\n export type NotificationListResponse = __NotificationListResponse;\n export type NotificationPrefList = __NotificationPrefList;\n export type NotificationPref = __NotificationPref;\n export type NotificationResponse = __NotificationResponse;\n export type OutboundEdgeList = __OutboundEdgeList;\n export type OutboundEdge = __OutboundEdge;\n export type Pagination = __Pagination;\n export type ParticipantSummary = __ParticipantSummary;\n export type PollResultOptionResponse = __PollResultOptionResponse;\n export type PollResultsResponse = __PollResultsResponse;\n export type PollVoteResponse = __PollVoteResponse;\n export type PollVoterResponse = __PollVoterResponse;\n export type PollVotersResponse = __PollVotersResponse;\n export type PostCreatedEventData = __PostCreatedEventData;\n export type PostDeletedEventData = __PostDeletedEventData;\n export type PostInsights = __PostInsights;\n export type PostList = __PostList;\n export type PostReactionCreatedEventData = __PostReactionCreatedEventData;\n export type PostReactionEntry = __PostReactionEntry;\n export type PostReactionList = __PostReactionList;\n export type Post = __Post;\n export type PostRevisionList = __PostRevisionList;\n export type PostRevision = __PostRevision;\n export type PostSearchHit = __PostSearchHit;\n export type PostSearch = __PostSearch;\n export type PostSettings = __PostSettings;\n export type PostState = __PostState;\n export type PostTag = __PostTag;\n export type PostUpdatedEventData = __PostUpdatedEventData;\n export type PostViewerStateEntry = __PostViewerStateEntry;\n export type ReactionCounts = __ReactionCounts;\n export type ReactionEdge = __ReactionEdge;\n export type Reaction = __Reaction;\n export type RelationshipEntry = __RelationshipEntry;\n export type RelationshipList = __RelationshipList;\n export type ReplayWebhookEvent = __ReplayWebhookEvent;\n export type RepostCreatedEventData = __RepostCreatedEventData;\n export type RepostList = __RepostList;\n export type SocialStatsInWindow = __SocialStatsInWindow;\n export type SocialStatsSeries = __SocialStatsSeries;\n export type SocialStatsSeriesPoint = __SocialStatsSeriesPoint;\n export type SocialStatsTotals = __SocialStatsTotals;\n export type SocialWorkspaceStats = __SocialWorkspaceStats;\n export type StoryTrayEntryResponse = __StoryTrayEntryResponse;\n export type StoryTrayResponse = __StoryTrayResponse;\n export type StoryViewerResponse = __StoryViewerResponse;\n export type StoryViewersResponse = __StoryViewersResponse;\n export type SuggestedFollow = __SuggestedFollow;\n export type SuggestedFollowsList = __SuggestedFollowsList;\n export type TagCreatedEventData = __TagCreatedEventData;\n export type TaggedPostsResponse = __TaggedPostsResponse;\n export type UnreadCountResponse = __UnreadCountResponse;\n export type UnreadCount = __UnreadCount;\n export type UploadAsset = __UploadAsset;\n export type UpsertActor = __UpsertActor;\n export type WebhookDeliveryAttempt = __WebhookDeliveryAttempt;\n export type WebhookEndpoint = __WebhookEndpoint;\n export type WebhookEndpointWithSecret = __WebhookEndpointWithSecret;\n export type WebhookEventDelivery = __WebhookEventDelivery;\n export type WebhookEventDetail = __WebhookEventDetail;\n export type WebhookEvent = __WebhookEvent;\n export type WebhookEventTypeInfo = __WebhookEventTypeInfo;\n export type WebhookPagination = __WebhookPagination;\n export type ActorListParams = __ActorListParams;\n export type ActorCreateParams = __ActorCreateParams;\n export type ActorBatchParams = __ActorBatchParams;\n export type ActorByExternalBatchParams = __ActorByExternalBatchParams;\n export type ActorUpdateParams = __ActorUpdateParams;\n export type ActorArchivedListParams = __ActorArchivedListParams;\n export type ActorAssetListParams = __ActorAssetListParams;\n export type ActorBlockListParams = __ActorBlockListParams;\n export type ActorBookmarkListParams = __ActorBookmarkListParams;\n export type ActorCloseFriendListParams = __ActorCloseFriendListParams;\n export type ActorDismissedSuggestionListParams = __ActorDismissedSuggestionListParams;\n export type ActorDraftListParams = __ActorDraftListParams;\n export type ActorFeedListParams = __ActorFeedListParams;\n export type ActorFollowRequestListParams = __ActorFollowRequestListParams;\n export type ActorFollowerListParams = __ActorFollowerListParams;\n export type ActorFollowingListParams = __ActorFollowingListParams;\n export type ActorHashtagFollowListParams = __ActorHashtagFollowListParams;\n export type ActorHashtagFollowCreateParams = __ActorHashtagFollowCreateParams;\n export type ActorHideListParams = __ActorHideListParams;\n export type ActorInsightsParams = __ActorInsightsParams;\n export type ActorMentionListParams = __ActorMentionListParams;\n export type ActorMutedTermListParams = __ActorMutedTermListParams;\n export type ActorMutedTermCreateParams = __ActorMutedTermCreateParams;\n export type ActorMuteListParams = __ActorMuteListParams;\n export type ActorNotificationPrefUpdateParams = __ActorNotificationPrefUpdateParams;\n export type ActorNotificationListParams = __ActorNotificationListParams;\n export type ActorNotificationMarkAllReadParams = __ActorNotificationMarkAllReadParams;\n export type ActorNotificationUpdateParams = __ActorNotificationUpdateParams;\n export type ActorPostStateParams = __ActorPostStateParams;\n export type ActorRestrictListParams = __ActorRestrictListParams;\n export type ActorScheduledPostListParams = __ActorScheduledPostListParams;\n export type ActorSuggestedFollowListParams = __ActorSuggestedFollowListParams;\n export type ActorHighlightListParams = __ActorHighlightListParams;\n export type ActorRelationshipListParams = __ActorRelationshipListParams;\n export type ActorTaggedListParams = __ActorTaggedListParams;\n export type AssetCreateParams = __AssetCreateParams;\n export type BlockCreateParams = __BlockCreateParams;\n export type CloseFriendCreateParams = __CloseFriendCreateParams;\n export type CollectionListParams = __CollectionListParams;\n export type CollectionCreateParams = __CollectionCreateParams;\n export type CollectionRetrieveParams = __CollectionRetrieveParams;\n export type CollectionUpdateParams = __CollectionUpdateParams;\n export type CollectionDeleteParams = __CollectionDeleteParams;\n export type CollectionItemListParams = __CollectionItemListParams;\n export type CollectionItemCreateParams = __CollectionItemCreateParams;\n export type CollectionItemUpdateParams = __CollectionItemUpdateParams;\n export type CollectionItemDeleteParams = __CollectionItemDeleteParams;\n export type ConnectionCreateParams = __ConnectionCreateParams;\n export type ConversationListParams = __ConversationListParams;\n export type ConversationCreateParams = __ConversationCreateParams;\n export type ConversationUnreadCountParams = __ConversationUnreadCountParams;\n export type ConversationRetrieveParams = __ConversationRetrieveParams;\n export type ConversationUpdateParams = __ConversationUpdateParams;\n export type ConversationDeleteParams = __ConversationDeleteParams;\n export type ConversationMemberCreateParams = __ConversationMemberCreateParams;\n export type ConversationMemberUpdateParams = __ConversationMemberUpdateParams;\n export type ConversationMemberDeleteParams = __ConversationMemberDeleteParams;\n export type ConversationMessageListParams = __ConversationMessageListParams;\n export type ConversationMessageCreateParams = __ConversationMessageCreateParams;\n export type ConversationMessageRetrieveParams = __ConversationMessageRetrieveParams;\n export type ConversationMessageUpdateParams = __ConversationMessageUpdateParams;\n export type ConversationMessageDeleteParams = __ConversationMessageDeleteParams;\n export type ConversationMessageReactionListParams = __ConversationMessageReactionListParams;\n export type ConversationMessageReactionCreateParams = __ConversationMessageReactionCreateParams;\n export type ConversationMarkReadParams = __ConversationMarkReadParams;\n export type CounterListParams = __CounterListParams;\n export type DiscoverFeedListParams = __DiscoverFeedListParams;\n export type DismissedSuggestionCreateParams = __DismissedSuggestionCreateParams;\n export type FlagListParams = __FlagListParams;\n export type FlagCreateParams = __FlagCreateParams;\n export type FollowCreateParams = __FollowCreateParams;\n export type FollowBatchParams = __FollowBatchParams;\n export type HashtagListParams = __HashtagListParams;\n export type HashtagPostListParams = __HashtagPostListParams;\n export type HideCreateParams = __HideCreateParams;\n export type ListListParams = __ListListParams;\n export type ListCreateParams = __ListCreateParams;\n export type ListRetrieveParams = __ListRetrieveParams;\n export type ListUpdateParams = __ListUpdateParams;\n export type ListDeleteParams = __ListDeleteParams;\n export type ListFeedListParams = __ListFeedListParams;\n export type ListMemberListParams = __ListMemberListParams;\n export type ListMemberCreateParams = __ListMemberCreateParams;\n export type ListMemberDeleteParams = __ListMemberDeleteParams;\n export type MuteCreateParams = __MuteCreateParams;\n export type PostListParams = __PostListParams;\n export type PostCreateParams = __PostCreateParams;\n export type PostRecordImpressionsParams = __PostRecordImpressionsParams;\n export type PostRetrieveParams = __PostRetrieveParams;\n export type PostUpdateParams = __PostUpdateParams;\n export type PostBookmarkParams = __PostBookmarkParams;\n export type PostUnbookmarkParams = __PostUnbookmarkParams;\n export type PostCommentListParams = __PostCommentListParams;\n export type PostCommentCreateParams = __PostCommentCreateParams;\n export type PostCommentRetrieveParams = __PostCommentRetrieveParams;\n export type PostCommentUpdateParams = __PostCommentUpdateParams;\n export type PostCommentApproveParams = __PostCommentApproveParams;\n export type PostCommentPinParams = __PostCommentPinParams;\n export type PostCommentUnpinParams = __PostCommentUnpinParams;\n export type PostCommentReactionListParams = __PostCommentReactionListParams;\n export type PostCommentReactionCreateParams = __PostCommentReactionCreateParams;\n export type PostInsightsParams = __PostInsightsParams;\n export type PostQuoteListParams = __PostQuoteListParams;\n export type PostReactionListParams = __PostReactionListParams;\n export type PostReactionCreateParams = __PostReactionCreateParams;\n export type PostRepostParams = __PostRepostParams;\n export type PostUnrepostParams = __PostUnrepostParams;\n export type PostRepostListParams = __PostRepostListParams;\n export type PostRevisionListParams = __PostRevisionListParams;\n export type PostTagApproveParams = __PostTagApproveParams;\n export type PostTagDeleteParams = __PostTagDeleteParams;\n export type PostViewerListParams = __PostViewerListParams;\n export type PostRecordViewParams = __PostRecordViewParams;\n export type PostVoterListParams = __PostVoterListParams;\n export type PostVoteCreateParams = __PostVoteCreateParams;\n export type RestrictCreateParams = __RestrictCreateParams;\n export type SearchActorListParams = __SearchActorListParams;\n export type SearchHashtagListParams = __SearchHashtagListParams;\n export type SearchPostListParams = __SearchPostListParams;\n export type CommunityScopedWebhookEndpointCreateParams = __CommunityScopedWebhookEndpointCreateParams;\n export type CommunityScopedWebhookEndpointUpdateParams = __CommunityScopedWebhookEndpointUpdateParams;\n export type CommunityScopedWebhookEndpointRotateSecretParams = __CommunityScopedWebhookEndpointRotateSecretParams;\n export type CommunityScopedWebhookEndpointTestParams = __CommunityScopedWebhookEndpointTestParams;\n export type CommunityScopedWebhookEventListParams = __CommunityScopedWebhookEventListParams;\n export type CommunityScopedWebhookEventReplayParams = __CommunityScopedWebhookEventReplayParams;\n export type CommunityListParams = __CommunityListParams;\n export type CommunityCreateParams = __CommunityCreateParams;\n export type CommunityUpdateParams = __CommunityUpdateParams;\n export type CommunityActorCommentListParams = __CommunityActorCommentListParams;\n export type CommunityActorReactionListParams = __CommunityActorReactionListParams;\n export type CommunityModerationActionCreateParams = __CommunityModerationActionCreateParams;\n export type CommunityModerationActorShadowBanParams = __CommunityModerationActorShadowBanParams;\n export type CommunityModerationAuditListParams = __CommunityModerationAuditListParams;\n export type CommunityModerationBlockedTermListParams = __CommunityModerationBlockedTermListParams;\n export type CommunityModerationBlockedTermCreateParams = __CommunityModerationBlockedTermCreateParams;\n export type CommunityModerationConversationListParams = __CommunityModerationConversationListParams;\n export type CommunityModerationConversationMessageListParams = __CommunityModerationConversationMessageListParams;\n export type CommunityModerationFlagListParams = __CommunityModerationFlagListParams;\n export type CommunityModerationFlagResolveParams = __CommunityModerationFlagResolveParams;\n export type CommunityModerationShadowBannedListParams = __CommunityModerationShadowBannedListParams;\n export type CommunityWebhookEndpointCreateParams = __CommunityWebhookEndpointCreateParams;\n export type CommunityWebhookEndpointUpdateParams = __CommunityWebhookEndpointUpdateParams;\n export type CommunityWebhookEndpointRotateSecretParams = __CommunityWebhookEndpointRotateSecretParams;\n export type CommunityWebhookEndpointTestParams = __CommunityWebhookEndpointTestParams;\n export type CommunityWebhookEventListParams = __CommunityWebhookEventListParams;\n export type CommunityWebhookEventReplayParams = __CommunityWebhookEventReplayParams;\n export type StatsRetrieveParams = __StatsRetrieveParams;\n export type WebhookEndpointCreateParams = __WebhookEndpointCreateParams;\n export type WebhookEndpointUpdateParams = __WebhookEndpointUpdateParams;\n export type WebhookEndpointRotateSecretParams = __WebhookEndpointRotateSecretParams;\n export type WebhookEndpointTestParams = __WebhookEndpointTestParams;\n export type WebhookEventListParams = __WebhookEventListParams;\n export type WebhookEventReplayParams = __WebhookEventReplayParams;\n export type ErrorCode = __ErrorCode;\n export type ActorUpdatedEvent = __ActorUpdatedEvent;\n export type AssetFailedEvent = __AssetFailedEvent;\n export type AssetReadyEvent = __AssetReadyEvent;\n export type CommentCreatedEvent = __CommentCreatedEvent;\n export type CommentDeletedEvent = __CommentDeletedEvent;\n export type CommentReactionCreatedEvent = __CommentReactionCreatedEvent;\n export type CommentUpdatedEvent = __CommentUpdatedEvent;\n export type DmMessageCreatedEvent = __DmMessageCreatedEvent;\n export type EdgeFollowCreatedEvent = __EdgeFollowCreatedEvent;\n export type EdgeFollowDeletedEvent = __EdgeFollowDeletedEvent;\n export type EdgeFollowRequestApprovedEvent = __EdgeFollowRequestApprovedEvent;\n export type EdgeFollowRequestedEvent = __EdgeFollowRequestedEvent;\n export type FlagCreatedEvent = __FlagCreatedEvent;\n export type FlagUpdatedEvent = __FlagUpdatedEvent;\n export type ModerationActionAppliedEvent = __ModerationActionAppliedEvent;\n export type PostCreatedEvent = __PostCreatedEvent;\n export type PostDeletedEvent = __PostDeletedEvent;\n export type PostReactionCreatedEvent = __PostReactionCreatedEvent;\n export type PostUpdatedEvent = __PostUpdatedEvent;\n export type RepostCreatedEvent = __RepostCreatedEvent;\n export type TagCreatedEvent = __TagCreatedEvent;\n export type UnknownWebhookEvent = __UnknownWebhookEvent;\n export type UnwrapWebhookEvent = __UnwrapWebhookEvent;\n export type WebhookUnwrapParams = __WebhookUnwrapParams;\n}\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nexport { APIConnectionError, APIError, APITimeoutError, APIUserAbortError, AuthenticationError, BadRequestError, ConfigurationError, ConflictError, IdempotencyKeyReuseError, InternalServerError, NotFoundError, PermissionDeniedError, ProductCraftError, RateLimitError, UnprocessableEntityError, WebhookVerificationError } from \"@productcraft/core\";\n\n/** Error codes this API documents. Open: codes added later still type-check. See https://productcraft.co/docs/errors. */\nexport type SocialErrorCode = \"BAD_REQUEST\" | \"VALIDATION_ERROR\" | \"UNAUTHORIZED\" | \"PAYMENT_REQUIRED\" | \"FORBIDDEN\" | \"NOT_FOUND\" | \"METHOD_NOT_ALLOWED\" | \"NOT_ACCEPTABLE\" | \"REQUEST_TIMEOUT\" | \"CONFLICT\" | \"GONE\" | \"PRECONDITION_FAILED\" | \"PAYLOAD_TOO_LARGE\" | \"UNSUPPORTED_MEDIA_TYPE\" | \"UNPROCESSABLE_ENTITY\" | \"PRECONDITION_REQUIRED\" | \"RATE_LIMITED\" | \"INTERNAL_SERVER_ERROR\" | \"NOT_IMPLEMENTED\" | \"BAD_GATEWAY\" | \"SERVICE_UNAVAILABLE\" | \"GATEWAY_TIMEOUT\" | \"SERVICE_NOT_ENABLED\" | \"INVALID_CREDENTIALS\" | \"SESSION_REVOKED\" | \"MCP_NOT_PERMITTED\" | \"MCP_WORKSPACE_MISMATCH\" | \"PAK_NOT_PERMITTED\" | \"ACTIONS_NOT_GRANTABLE\" | \"IDEMPOTENCY_KEY_REUSE\" | \"IDEMPOTENCY_KEY_REQUIRED\" | \"IDEMPOTENCY_IN_PROGRESS\" | \"WEBHOOK_ENDPOINT_LIMIT\" | \"WEBHOOK_ENDPOINT_NOT_FOUND\" | \"WEBHOOK_ENDPOINT_NOT_SUBSCRIBED\" | \"WEBHOOK_EVENT_NOT_FOUND\" | \"WEBHOOK_EVENT_TYPE_UNKNOWN\" | \"ASSET_INVALID_CONTAINER\" | \"ASSET_INVALID_SIZE\" | \"ASSET_INVALID_TYPE\" | \"ASSET_MAGIC_MISMATCH\" | \"ASSET_NOT_OWNED\" | \"ASSET_NOT_READY\" | \"ASSET_NOT_VIDEO\" | \"ASSET_PROCESSING_FAILED\" | \"ASSET_TOO_LARGE\" | \"ASSET_TRANSCODE_FAILED\" | \"ASSET_UPLOAD_INCOMPLETE\" | \"CANNOT_QUOTE_PRIVATE\" | \"CANNOT_QUOTE_SELF\" | \"CANNOT_REPOST_PRIVATE\" | \"CANNOT_REPOST_SELF\" | \"COMMENTS_DISABLED\" | \"COMMENTS_FOLLOWERS_ONLY\" | \"COMMENTS_MENTIONED_ONLY\" | \"EDIT_WINDOW_EXPIRED\" | \"INVALID_CURSOR\" | \"INVALID_DATE_FILTER\" | \"INVALID_EXPAND\" | \"INVALID_IDENTIFIER\" | \"INVALID_ID_LIST\" | \"INVALID_NOTIFICATION_KIND\" | \"INVALID_ORDER\" | \"INVALID_SEARCH_QUERY\" | \"PIN_CAP_REACHED\" | \"POLL_CLOSED\" | \"QUOTE_NOT_ALLOWED\" | \"QUOTE_REQUIRES_BODY\" | \"QUOTE_REQUIRES_SOURCE\" | \"REPOST_NOT_ALLOWED\" | \"SOURCE_POST_ID_REQUIRES_QUOTE\" | \"TOO_MANY_ACTIVE_UPLOADS\" | \"TOO_MANY_ATTACHMENTS\" | \"TOO_MANY_IDS\" | (string & {});\nexport const SocialErrorCode = { values: [\"BAD_REQUEST\", \"VALIDATION_ERROR\", \"UNAUTHORIZED\", \"PAYMENT_REQUIRED\", \"FORBIDDEN\", \"NOT_FOUND\", \"METHOD_NOT_ALLOWED\", \"NOT_ACCEPTABLE\", \"REQUEST_TIMEOUT\", \"CONFLICT\", \"GONE\", \"PRECONDITION_FAILED\", \"PAYLOAD_TOO_LARGE\", \"UNSUPPORTED_MEDIA_TYPE\", \"UNPROCESSABLE_ENTITY\", \"PRECONDITION_REQUIRED\", \"RATE_LIMITED\", \"INTERNAL_SERVER_ERROR\", \"NOT_IMPLEMENTED\", \"BAD_GATEWAY\", \"SERVICE_UNAVAILABLE\", \"GATEWAY_TIMEOUT\", \"SERVICE_NOT_ENABLED\", \"INVALID_CREDENTIALS\", \"SESSION_REVOKED\", \"MCP_NOT_PERMITTED\", \"MCP_WORKSPACE_MISMATCH\", \"PAK_NOT_PERMITTED\", \"ACTIONS_NOT_GRANTABLE\", \"IDEMPOTENCY_KEY_REUSE\", \"IDEMPOTENCY_KEY_REQUIRED\", \"IDEMPOTENCY_IN_PROGRESS\", \"WEBHOOK_ENDPOINT_LIMIT\", \"WEBHOOK_ENDPOINT_NOT_FOUND\", \"WEBHOOK_ENDPOINT_NOT_SUBSCRIBED\", \"WEBHOOK_EVENT_NOT_FOUND\", \"WEBHOOK_EVENT_TYPE_UNKNOWN\", \"ASSET_INVALID_CONTAINER\", \"ASSET_INVALID_SIZE\", \"ASSET_INVALID_TYPE\", \"ASSET_MAGIC_MISMATCH\", \"ASSET_NOT_OWNED\", \"ASSET_NOT_READY\", \"ASSET_NOT_VIDEO\", \"ASSET_PROCESSING_FAILED\", \"ASSET_TOO_LARGE\", \"ASSET_TRANSCODE_FAILED\", \"ASSET_UPLOAD_INCOMPLETE\", \"CANNOT_QUOTE_PRIVATE\", \"CANNOT_QUOTE_SELF\", \"CANNOT_REPOST_PRIVATE\", \"CANNOT_REPOST_SELF\", \"COMMENTS_DISABLED\", \"COMMENTS_FOLLOWERS_ONLY\", \"COMMENTS_MENTIONED_ONLY\", \"EDIT_WINDOW_EXPIRED\", \"INVALID_CURSOR\", \"INVALID_DATE_FILTER\", \"INVALID_EXPAND\", \"INVALID_IDENTIFIER\", \"INVALID_ID_LIST\", \"INVALID_NOTIFICATION_KIND\", \"INVALID_ORDER\", \"INVALID_SEARCH_QUERY\", \"PIN_CAP_REACHED\", \"POLL_CLOSED\", \"QUOTE_NOT_ALLOWED\", \"QUOTE_REQUIRES_BODY\", \"QUOTE_REQUIRES_SOURCE\", \"REPOST_NOT_ALLOWED\", \"SOURCE_POST_ID_REQUIRES_QUOTE\", \"TOO_MANY_ACTIVE_UPLOADS\", \"TOO_MANY_ATTACHMENTS\", \"TOO_MANY_IDS\"] as const };\n"]}
1
+ {"version":3,"sources":["../src/_generated/resources.ts","../src/_generated/types.ts","../src/_generated/client.ts","../src/_generated/errors.ts"],"names":["Social"],"mappings":"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","file":"index.js","sourcesContent":["// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport type { APIClient, APIPromise, PagePromise, PollOptions, RequestOptions } from \"@productcraft/core\";\nimport type * as T from \"./types.js\";\nimport type { UnwrapWebhookEvent, WebhookSignParams, WebhookUnwrapParams } from \"./webhooks.js\";\nimport type { SignedWebhook } from \"@productcraft/core\";\n\ntype Bound = Readonly<Record<string, string | undefined>>;\n\n/** Split params into [picked, rest] by key. */\nfunction split(params: object | undefined, keys: readonly string[]): [Record<string, unknown>, Record<string, unknown>] {\n const picked: Record<string, unknown> = {};\n const rest: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(params ?? {})) (keys.includes(k) ? picked : rest)[k] = v;\n return [picked, rest];\n}\n\n/** Fill `actor_id` from a scope bound with `.as(actorId)`, unless the call passes one. */\nfunction fillActor<P>(params: P, bound: Bound): P {\n if (bound.actor_id === undefined) return params;\n const p = (params ?? {}) as Record<string, unknown>;\n return (p.actor_id === undefined ? { ...p, actor_id: bound.actor_id } : p) as P;\n}\n\nexport class APIResource {\n protected readonly _client: APIClient;\n /** Path parameters (and `actor_id`) bound by the enclosing scope. */\n protected readonly _b: Bound;\n constructor(client: APIClient, bound: Bound = {}) {\n this._client = client;\n this._b = bound;\n }\n}\n\nvoid split;\nvoid fillActor;\n/** `communities.actors.comments` */\nexport class CommunitiesActorsCommentsResource extends APIResource {\n /**\n * Every comment an actor authored, all statuses (published / hidden / removed) — the GDPR-export view. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param communityId - Community UUID (must belong to the workspace).\n * @param actorId - The data subject — social actor UUID.\n * @param params - `Social.CommunityActorCommentListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-actors-actor-id-comments\n * @example\n * ```ts\n * for await (const comment of social.communities.actors.comments.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(comment);\n * }\n * const page = await social.communities.actors.comments.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, actorId: string, params?: T.CommunityActorCommentListParams, options?: RequestOptions): PagePromise<T.Comment> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\", pathParams: { community_id: communityId, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `communities.actors.reactions` */\nexport class CommunitiesActorsReactionsResource extends APIResource {\n /**\n * Every reaction an actor has given — post reactions and comment reactions unified into one stream, discriminated by `target_type`. The GDPR-export view. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param communityId - Community UUID (must belong to the workspace).\n * @param actorId - The data subject — social actor UUID.\n * @param params - `Social.CommunityActorReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-actors-actor-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.communities.actors.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(reaction);\n * }\n * const page = await social.communities.actors.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, actorId: string, params?: T.CommunityActorReactionListParams, options?: RequestOptions): PagePromise<T.ActorReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\", pathParams: { community_id: communityId, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `communities.actors` */\nexport class CommunitiesActorsResource extends APIResource {\n #comments?: CommunitiesActorsCommentsResource;\n #reactions?: CommunitiesActorsReactionsResource;\n get comments(): CommunitiesActorsCommentsResource {\n return (this.#comments ??= new CommunitiesActorsCommentsResource(this._client, this._b));\n }\n get reactions(): CommunitiesActorsReactionsResource {\n return (this.#reactions ??= new CommunitiesActorsReactionsResource(this._client, this._b));\n }\n}\n\n/** `communities.moderation.actions` */\nexport class CommunitiesModerationActionsResource extends APIResource {\n /**\n * Apply a moderation action directly, without a preceding flag (task 017). Acts on any target — post/comment (status), direct_message (moderator soft-delete), or actor (ban=suspend / restore=reinstate). Writes a flag_id=null audit row.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationActionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid target_kind / action / notes.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or target not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-actions\n * @example\n * ```ts\n * const moderationAction = await social.communities.moderation.actions.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {\n * action: \"remove\",\n * target_id: \"bbbbbbbb-0000-0000-0000-000000000001\",\n * target_kind: \"direct_message\",\n * });\n * ```\n */\n create(communityId: string, params: T.CommunityModerationActionCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationAction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.moderation.actors` */\nexport class CommunitiesModerationActorsResource extends APIResource {\n /**\n * Apply a shadow ban to an actor. The actor sees their own content normally; everyone else sees nothing from them. Pass `duration_hours` for a timed ban or omit for indefinite. Pass an `Idempotency-Key` header so a retried timed ban doesn't restart the clock.\n *\n * @param communityId - Id of the community.\n * @param actorId - Id of the actor.\n * @param params - `Social.CommunityModerationActorShadowBanParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid duration_hours or reason, or malformed Idempotency-Key.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-actors-actor-id-shadow-ban\n * @example\n * ```ts\n * const moderationActor = await social.communities.moderation.actors.shadowBan(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { duration_hours: 168 });\n * ```\n */\n shadowBan(communityId: string, actorId: string, params?: T.CommunityModerationActorShadowBanParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationActor>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\", pathParams: { community_id: communityId, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a shadow ban. No-op if not currently shadow-banned.\n *\n * @param communityId - Id of the community.\n * @param actorId - Id of the actor.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-moderation-actors-actor-id-shadow-ban\n * @example\n * ```ts\n * const moderationActor = await social.communities.moderation.actors.unshadowBan(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n unshadowBan(communityId: string, actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ModerationActor>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\", pathParams: { community_id: communityId, actor_id: actorId } }, options);\n }\n}\n\n/** `communities.moderation.audit` */\nexport class CommunitiesModerationAuditResource extends APIResource {\n /**\n * Append-only audit of moderator actions in this community. 50/page (max 200), cursor-paginated. Filter by `?action=`, `?actor_id=` (the moderator), and/or the `?since=` / `?until=` window — all optional and composable. The ordering is fixed newest-first, so keep the same filters on every follow-up page.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationAuditListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid `action`, `actor_id`, `since`/`until`, or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-audit\n * @example\n * ```ts\n * for await (const audit of social.communities.moderation.audit.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(audit);\n * }\n * const page = await social.communities.moderation.audit.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationAuditListParams, options?: RequestOptions): PagePromise<T.ModerationAction> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\", pathParams: { community_id: communityId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `communities.moderation.blockedTerms` */\nexport class CommunitiesModerationBlockedTermsResource extends APIResource {\n /**\n * Add a hidden word to the community lexicon. A comment whose body contains the term is routed to `action`: `hide` → lands hidden; `pending_approval` → lands in the approve lane. Re-adding a term updates its action. Case-insensitive.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationBlockedTermCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty or over-length term.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.update`.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms\n * @example\n * ```ts\n * const blockedTerm = await social.communities.moderation.blockedTerms.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { term: \"spoiler\" });\n * ```\n */\n create(communityId: string, params: T.CommunityModerationBlockedTermCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BlockedTerm>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a hidden word. Idempotent — 204 whether or not it existed.\n *\n * @param communityId - Id of the community.\n * @param term - The blocked term to remove (case-insensitive).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.update`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms/{term}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms-term\n * @example\n * ```ts\n * await social.communities.moderation.blockedTerms.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"spoiler\");\n * ```\n */\n delete(communityId: string, term: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms/{term}\", pathParams: { community_id: communityId, term } }, options);\n }\n /**\n * List the community hidden-words lexicon, newest-first. Cursor-paginated (50/page, max 200). Optional `?q=` substring search over the term, composable with the cursor.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationBlockedTermListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Over-length `q` or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.config.read`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-blocked-terms\n * @example\n * ```ts\n * for await (const blockedTerm of social.communities.moderation.blockedTerms.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(blockedTerm);\n * }\n * const page = await social.communities.moderation.blockedTerms.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationBlockedTermListParams, options?: RequestOptions): PagePromise<T.BlockedTerm> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.conversations.messages` */\nexport class CommunitiesModerationConversationsMessagesResource extends APIResource {\n /**\n * List every message in a conversation. Moderation-only.\n *\n * @param communityId - Id of the community.\n * @param conversationId - Conversation UUID.\n * @param params - `Social.CommunityModerationConversationMessageListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or conversation not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-conversations-conversation-id-messages\n * @example\n * ```ts\n * for await (const message of social.communities.moderation.conversations.messages.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(message);\n * }\n * const page = await social.communities.moderation.conversations.messages.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, conversationId: string, params?: T.CommunityModerationConversationMessageListParams, options?: RequestOptions): PagePromise<T.DirectMessageAdmin> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\", pathParams: { community_id: communityId, conversation_id: conversationId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.conversations` */\nexport class CommunitiesModerationConversationsResource extends APIResource {\n #messages?: CommunitiesModerationConversationsMessagesResource;\n get messages(): CommunitiesModerationConversationsMessagesResource {\n return (this.#messages ??= new CommunitiesModerationConversationsMessagesResource(this._client, this._b));\n }\n /**\n * List every conversation in the community, most-recent-activity first. Moderation-only.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationConversationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-conversations\n * @example\n * ```ts\n * for await (const conversation of social.communities.moderation.conversations.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(conversation);\n * }\n * const page = await social.communities.moderation.conversations.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationConversationListParams, options?: RequestOptions): PagePromise<T.ConversationAdmin> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation.flags` */\nexport class CommunitiesModerationFlagsResource extends APIResource {\n /**\n * List flags in this community. Filter by ?status=open|dismissed|actioned. 50/page (max 200), cursor-paginated.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationFlagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid status filter.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderation.queue.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-flags\n * @example\n * ```ts\n * for await (const flag of social.communities.moderation.flags.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(flag);\n * }\n * const page = await social.communities.moderation.flags.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationFlagListParams, options?: RequestOptions): PagePromise<T.Flag> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\", pathParams: { community_id: communityId }, query: params }, options);\n }\n /**\n * Apply a moderation action to a flag. Records an audit entry and updates the target post/comment status. Pass an `Idempotency-Key` header so a retried request records ONE audit entry, not two.\n *\n * @param communityId - Id of the community.\n * @param flagId - Id of the flag.\n * @param params - `Social.CommunityModerationFlagResolveParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid action or notes, or malformed Idempotency-Key.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.moderate`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or flag not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: FLAG_ALREADY_CLOSED — the flag is already actioned/dismissed and the requested action is punitive (hide/remove/warn/ban); reversals (unhide/restore/dismiss) stay legal on a closed flag. Also `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-moderation-flags-flag-id-actions\n * @example\n * ```ts\n * const actOnFlag = await social.communities.moderation.flags.resolve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { action: \"hide\" });\n * ```\n */\n resolve(communityId: string, flagId: string, params: T.CommunityModerationFlagResolveParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActOnFlag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\", pathParams: { community_id: communityId, flag_id: flagId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.moderation.shadowBanned` */\nexport class CommunitiesModerationShadowBannedResource extends APIResource {\n /**\n * List currently shadow-banned actors in this community. 50/page (max 200), cursor-paginated newest-ban first. Optional `?q=` substring search over display name OR external id, composable with the cursor.\n *\n * @param communityId - Id of the community.\n * @param params - `Social.CommunityModerationShadowBannedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Over-length `q` or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.audit.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-moderation-shadow-banned\n * @example\n * ```ts\n * for await (const shadowBanned of social.communities.moderation.shadowBanned.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(shadowBanned);\n * }\n * const page = await social.communities.moderation.shadowBanned.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityModerationShadowBannedListParams, options?: RequestOptions): PagePromise<T.ModerationActor> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\", pathParams: { community_id: communityId }, query: params }, options);\n }\n}\n\n/** `communities.moderation` */\nexport class CommunitiesModerationResource extends APIResource {\n #actions?: CommunitiesModerationActionsResource;\n #actors?: CommunitiesModerationActorsResource;\n #audit?: CommunitiesModerationAuditResource;\n #blockedTerms?: CommunitiesModerationBlockedTermsResource;\n #conversations?: CommunitiesModerationConversationsResource;\n #flags?: CommunitiesModerationFlagsResource;\n #shadowBanned?: CommunitiesModerationShadowBannedResource;\n get actions(): CommunitiesModerationActionsResource {\n return (this.#actions ??= new CommunitiesModerationActionsResource(this._client, this._b));\n }\n get actors(): CommunitiesModerationActorsResource {\n return (this.#actors ??= new CommunitiesModerationActorsResource(this._client, this._b));\n }\n get audit(): CommunitiesModerationAuditResource {\n return (this.#audit ??= new CommunitiesModerationAuditResource(this._client, this._b));\n }\n get blockedTerms(): CommunitiesModerationBlockedTermsResource {\n return (this.#blockedTerms ??= new CommunitiesModerationBlockedTermsResource(this._client, this._b));\n }\n get conversations(): CommunitiesModerationConversationsResource {\n return (this.#conversations ??= new CommunitiesModerationConversationsResource(this._client, this._b));\n }\n get flags(): CommunitiesModerationFlagsResource {\n return (this.#flags ??= new CommunitiesModerationFlagsResource(this._client, this._b));\n }\n get shadowBanned(): CommunitiesModerationShadowBannedResource {\n return (this.#shadowBanned ??= new CommunitiesModerationShadowBannedResource(this._client, this._b));\n }\n}\n\n/** `communities.webhooks.endpoints` */\nexport class CommunitiesWebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param params - `Social.CommunityWebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.communities.webhooks.endpoints.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(communityId: string, params: T.CommunityWebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: communityId }, body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.communities.webhooks.endpoints.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(communityId: string, endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.communities.webhooks.endpoints.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(communityId: string, options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.communities.webhooks.endpoints.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(communityId: string, endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.communities.webhooks.endpoints.rotateSecret(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(communityId: string, endpointId: string, params?: T.CommunityWebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.communities.webhooks.endpoints.test(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { event_type: \"post.created\" });\n * ```\n */\n test(communityId: string, endpointId: string, params: T.CommunityWebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityWebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.communities.webhooks.endpoints.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { description: \"Production receiver\" });\n * ```\n */\n update(communityId: string, endpointId: string, params?: T.CommunityWebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: communityId, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `communities.webhooks.eventTypes` */\nexport class CommunitiesWebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.communities.webhooks.eventTypes.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n list(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/event-types\", pathParams: { community_id: communityId } }, options);\n }\n}\n\n/** `communities.webhooks.events` */\nexport class CommunitiesWebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param params - `Social.CommunityWebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.communities.webhooks.events.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(event);\n * }\n * const page = await social.communities.webhooks.events.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(communityId: string, params?: T.CommunityWebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\", pathParams: { community_id: communityId }, query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.CommunityWebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities-community-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.communities.webhooks.events.replay(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n replay(communityId: string, eventId: string, params?: T.CommunityWebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\", pathParams: { community_id: communityId, event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param communityId - Social community UUID. The same endpoints as `/v1/communities/{community_id}/webhooks`; this path also accepts a console session.\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.communities.webhooks.events.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(communityId: string, eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}\", pathParams: { community_id: communityId, event_id: eventId } }, options);\n }\n}\n\n/** `communities.webhooks` */\nexport class CommunitiesWebhooksResource extends APIResource {\n #endpoints?: CommunitiesWebhooksEndpointsResource;\n #eventTypes?: CommunitiesWebhooksEventTypesResource;\n #events?: CommunitiesWebhooksEventsResource;\n get endpoints(): CommunitiesWebhooksEndpointsResource {\n return (this.#endpoints ??= new CommunitiesWebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): CommunitiesWebhooksEventTypesResource {\n return (this.#eventTypes ??= new CommunitiesWebhooksEventTypesResource(this._client, this._b));\n }\n get events(): CommunitiesWebhooksEventsResource {\n return (this.#events ??= new CommunitiesWebhooksEventsResource(this._client, this._b));\n }\n}\n\n/** `communities` */\nexport class CommunitiesResource extends APIResource {\n #actors?: CommunitiesActorsResource;\n #moderation?: CommunitiesModerationResource;\n #webhooks?: CommunitiesWebhooksResource;\n get actors(): CommunitiesActorsResource {\n return (this.#actors ??= new CommunitiesActorsResource(this._client, this._b));\n }\n get moderation(): CommunitiesModerationResource {\n return (this.#moderation ??= new CommunitiesModerationResource(this._client, this._b));\n }\n get webhooks(): CommunitiesWebhooksResource {\n return (this.#webhooks ??= new CommunitiesWebhooksResource(this._client, this._b));\n }\n /**\n * Community-level analytics rollup: total active actors, published posts, published comments, open flags, and last-7-day windows for each.\n *\n * @param communityId - Social community UUID owned by the workspace.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.analytics.read`, or the workspace has not enabled the `social` service.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace (opaque cross-tenant 404).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}/analytics\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id-analytics\n * @example\n * ```ts\n * const communityAnalytics = await social.communities.analytics(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n analytics(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CommunityAnalytics>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}/analytics\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Create an social community. `app_id` is optional — when supplied Social connects the community to an Auth app and refuses if the app belongs to a different workspace (cross-tenant gate) or is already connected. Omit `app_id` for a standalone community (no Auth integration; the customer manages actor identity). Pass an `Idempotency-Key` header to make retries safe.\n *\n * @param params - `Social.CommunityCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (slug shape, display_name length, malformed Idempotency-Key).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: `app_id` was supplied but no bearer/cookie was forwarded for the upstream Auth fetch.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.create` or workspace has not enabled the `social` service.\n * @throws {NotFoundError} 404 NOT_FOUND: `app_id` supplied but the Auth app was not found in this workspace (opaque cross-tenant 404).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Community slug already taken in this workspace, the supplied `app_id` is already connected to a community, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/communities\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-communities\n * @example\n * ```ts\n * const community = await social.communities.create({ display_name: \"My Product Community\", slug: \"my-product-community\" });\n * ```\n */\n create(params: T.CommunityCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/communities\", body: params, idempotent: true }, options);\n }\n /**\n * Delete a community. Cascades to every actor, post, comment, edge, flag, and notification it owns. Not reversible.\n *\n * @param communityId - Social community UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * await social.communities.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(communityId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * List communities in a workspace, newest-first. Cursor-paginated as of task 008 / G13 (previously a bare array). Optional `?q=` substring search (display name OR slug) and `?status=` filter, both composable with each other and with the cursor — the ordering is fixed, so keep the same filters on every follow-up page.\n *\n * @param params - `Social.CommunityListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid `status`, over-length `q`, or a malformed cursor.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.list`, or the workspace has not enabled the `social` service.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities\n * @example\n * ```ts\n * for await (const community of social.communities.list()) {\n * console.log(community);\n * }\n * const page = await social.communities.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.CommunityListParams, options?: RequestOptions): PagePromise<T.Community> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities\", query: params }, options);\n }\n /**\n * Get one community by id.\n *\n * @param communityId - Social community UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace (opaque cross-tenant 404).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * const community = await social.communities.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(communityId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId } }, options);\n }\n /**\n * Update community display name, description, settings, or status. Status transitions are unrestricted (active ↔ suspended; archived is terminal in v1).\n *\n * @param communityId - Social community UUID.\n * @param params - `Social.CommunityUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in this workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/communities/{community_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-communities-community-id\n * @example\n * ```ts\n * const community = await social.communities.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { description: \"string\" });\n * ```\n */\n update(communityId: string, params?: T.CommunityUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Community>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/communities/{community_id}\", pathParams: { community_id: communityId }, body: params }, options);\n }\n}\n\n/** `stats` */\nexport class StatsResource extends APIResource {\n /**\n * Social stats for a workspace\n *\n * Community count, published posts, active members, posts, comments and reactions in the window, the most recent activity and a daily active-members series, across every community in the workspace.\n *\n * **Active** means the member published a post, published a comment or reacted.\n *\n * Days are UTC. Counts only: no member ids, handles or author lists. Cached for up to 60 seconds (`generated_at`).\n *\n * @param params - `Social.StatsRetrieveParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `window` is not one of 1d, 7d, 30d.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.analytics.read` on the workspace, or Social is not enabled on it (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found: the id is unknown, is not a UUID, or is not visible to the caller. Same answer as the service's other workspace routes.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/stats\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-stats\n * @example\n * ```ts\n * const socialWorkspaceStats = await social.stats.retrieve();\n * ```\n */\n retrieve(params?: T.StatsRetrieveParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.SocialWorkspaceStats>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/stats\", query: params }, options);\n }\n}\n\n/** `webhooks.endpoints` */\nexport class WebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param params - `Social.WebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.webhooks.endpoints.create({ url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(params: T.WebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints\", body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.webhooks.endpoints.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.webhooks.endpoints.list()) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints\" }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.webhooks.endpoints.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.webhooks.endpoints.rotateSecret(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(endpointId: string, params?: T.WebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.webhooks.endpoints.test(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { event_type: \"post.created\" });\n * ```\n */\n test(endpointId: string, params: T.WebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.WebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-workspaces-workspace-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.webhooks.endpoints.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { description: \"Production receiver\" });\n * ```\n */\n update(endpointId: string, params?: T.WebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `webhooks.eventTypes` */\nexport class WebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.webhooks.eventTypes.list();\n * ```\n */\n list(options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/event-types\" }, options);\n }\n}\n\n/** `webhooks.events` */\nexport class WebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param params - `Social.WebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND: Workspace not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.webhooks.events.list()) {\n * console.log(event);\n * }\n * const page = await social.webhooks.events.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/events\", query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.WebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-workspaces-workspace-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.webhooks.events.replay(\"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n replay(eventId: string, params?: T.WebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\", pathParams: { event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN, SERVICE_NOT_ENABLED: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay), or Social is not enabled for the workspace (`SERVICE_NOT_ENABLED`).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/workspaces/{workspace_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-workspaces-workspace-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.webhooks.events.retrieve(\"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}\", pathParams: { event_id: eventId } }, options);\n }\n}\n\n/** `webhooks` */\nexport class WebhooksResource extends APIResource {\n #endpoints?: WebhooksEndpointsResource;\n #eventTypes?: WebhooksEventTypesResource;\n #events?: WebhooksEventsResource;\n get endpoints(): WebhooksEndpointsResource {\n return (this.#endpoints ??= new WebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): WebhooksEventTypesResource {\n return (this.#eventTypes ??= new WebhooksEventTypesResource(this._client, this._b));\n }\n get events(): WebhooksEventsResource {\n return (this.#events ??= new WebhooksEventsResource(this._client, this._b));\n }\n /**\n * Verify a webhook's signature and parse it (Standard Webhooks, and the legacy `t=…,v1=…` scheme).\n *\n * @param params - The raw body, the request headers and optionally the secret.\n * @throws {WebhookVerificationError} The signature, timestamp or payload is invalid.\n * @throws {ConfigurationError} No secret was passed or configured.\n */\n unwrap(params: WebhookUnwrapParams): Promise<UnwrapWebhookEvent> {\n return this._client.unwrapWebhook<UnwrapWebhookEvent>(params, \"PRODUCTCRAFT_SOCIAL_WEBHOOK_SECRET\");\n }\n /**\n * Sign a test event the way ProductCraft signs deliveries (Standard Webhooks), so a handler\n * test can call `unwrap` without a live delivery. Returns the exact body and the headers.\n *\n * @param params - The event (an object is JSON-encoded), and optionally the secret, `id` and `timestamp`.\n * @throws {ConfigurationError} No secret was passed or configured.\n */\n sign(params: WebhookSignParams): Promise<SignedWebhook> {\n return this._client.signWebhook(params, \"PRODUCTCRAFT_SOCIAL_WEBHOOK_SECRET\");\n }\n}\n\n/** `social` */\nexport class SocialResources extends APIResource {\n #communities?: CommunitiesResource;\n #stats?: StatsResource;\n #webhooks?: WebhooksResource;\n get communities(): CommunitiesResource {\n return (this.#communities ??= new CommunitiesResource(this._client, this._b));\n }\n get stats(): StatsResource {\n return (this.#stats ??= new StatsResource(this._client, this._b));\n }\n get webhooks(): WebhooksResource {\n return (this.#webhooks ??= new WebhooksResource(this._client, this._b));\n }\n}\n\n/** `actors.archived` */\nexport class CommunityActorsArchivedResource extends APIResource {\n /**\n * List the actor's archived posts (status='archived'), newest-first. Cursor-paginated.\n *\n * Archived posts keep their engagement (reaction / comment counts intact) but fall out of every public surface, and `getById` treats them as author-only. Restore one with PATCH `{ status: 'published' }`. Same end-user authorization rules as drafts: the PAK lane trusts the customer-backend to gate the caller.\n *\n * @param actorId - Social actor UUID whose archived posts to list.\n * @param params - `Social.ActorArchivedListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/archived\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-archived\n * @example\n * ```ts\n * for await (const archived of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.archived.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(archived);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.archived.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorArchivedListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/archived\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.assets` */\nexport class CommunityActorsAssetsResource extends APIResource {\n /**\n * List an actor's uploaded assets — the \"your uploads\" surface + GDPR export walk. 50/page (max 200), cursor-paginated newest-first.\n *\n * @param actorId - Owner actor UUID.\n * @param params - `Social.ActorAssetListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.read`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/assets\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-assets\n * @example\n * ```ts\n * for await (const asset of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.assets.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(asset);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.assets.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorAssetListParams, options?: RequestOptions): PagePromise<T.Asset> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/assets\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.blocks` */\nexport class CommunityActorsBlocksResource extends APIResource {\n /**\n * List actors this actor has blocked. Pass `?expand=dst_actor` to nest each blocked actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorBlockListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/blocks\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-blocks\n * @example\n * ```ts\n * for await (const block of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.blocks.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(block);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.blocks.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorBlockListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/blocks\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.bookmarks` */\nexport class CommunityActorsBookmarksResource extends APIResource {\n /**\n * List the actor's bookmarks. Cursor-paginated newest-first.\n *\n * Bookmarks are private — only the bookmarker should see their own list. The PAK lane has no end-user principal; the customer's backend must scope this call to the right end-user before exposing the response. Bookmarks against posts whose visibility has narrowed since (or which have been deleted) stay in the list — we don't cross-check post visibility on read of bookmarks.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorBookmarkListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/bookmarks\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-bookmarks\n * @example\n * ```ts\n * for await (const bookmark of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.bookmarks.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(bookmark);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.bookmarks.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorBookmarkListParams, options?: RequestOptions): PagePromise<T.Bookmark> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/bookmarks\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.byExternal` */\nexport class CommunityActorsByExternalResource extends APIResource {\n /**\n * Batch-resolve external_ids to actors (max 200 per call). POST-only — external_ids are up to 256 chars and can't ride a querystring. Unknown ids come back in `missing[]` instead of failing the call.\n *\n * @param params - `Social.ActorByExternalBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `external_ids` missing, empty, over 200 items, or an entry exceeding 256 chars.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/by-external/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-by-external-batch\n * @example\n * ```ts\n * const actorsByExternalBatch = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.byExternal.batch({ external_ids: [\"user_abc123\", \"user_def456\"] });\n * ```\n */\n batch(params: T.ActorByExternalBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorsByExternalBatch>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/by-external/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Look up an actor by the customer-supplied external_id.\n *\n * @param externalId - Customer-supplied identifier for the user (the `external_id` you upserted with).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: No actor with that external_id in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/by-external/{external_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-by-external-external-id\n * @example\n * ```ts\n * const actor = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.byExternal.retrieve(\"user_42\");\n * ```\n */\n retrieve(externalId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/by-external/{external_id}\", pathParams: { community_id: this._b.community_id, external_id: externalId } }, options);\n }\n}\n\n/** `actors.closeFriends` */\nexport class CommunityActorsCloseFriendsResource extends APIResource {\n /**\n * List the close-friends members of an actor.\n *\n * Returns the actors on `external_id`'s close-friends list, with denormalised actor metadata. Cursor paginated.\n *\n * @param actorId - Owner social actor UUID.\n * @param params - `Social.ActorCloseFriendListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/close-friends\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-close-friends\n * @example\n * ```ts\n * for await (const closeFriend of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.closeFriends.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(closeFriend);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.closeFriends.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorCloseFriendListParams, options?: RequestOptions): PagePromise<T.CloseFriendResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/close-friends\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.dismissedSuggestions` */\nexport class CommunityActorsDismissedSuggestionsResource extends APIResource {\n /**\n * List actors this actor has dismissed from suggestions. Pass `?expand=dst_actor` to nest each actor's full row.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorDismissedSuggestionListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-dismissed-suggestions\n * @example\n * ```ts\n * for await (const dismissedSuggestion of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.dismissedSuggestions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(dismissedSuggestion);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.dismissedSuggestions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorDismissedSuggestionListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.drafts` */\nexport class CommunityActorsDraftsResource extends APIResource {\n /**\n * List the actor's drafts (status='draft'). Cursor-paginated newest-first.\n *\n * Drafts are visible only via this endpoint — they're stripped from public feeds, lists, and `getById`. The PAK lane has no end-user principal, so the customer's backend is responsible for ensuring `actor_id` matches the end-user behind the request before exposing the response.\n *\n * @param actorId - Social actor UUID whose drafts to list.\n * @param params - `Social.ActorDraftListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/drafts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-drafts\n * @example\n * ```ts\n * for await (const draft of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.drafts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(draft);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.drafts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorDraftListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/drafts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.feed` */\nexport class CommunityActorsFeedResource extends APIResource {\n /**\n * Feed for an actor: their own posts + posts from actors they follow, with blocks excluded. Default order is `ranked` (recency + engagement + follow-graph signals); pass `order=chronological` to get the time-ordered feed. 50/page (max 200). The cursor shape differs between orders — passing a chronological cursor with `order=ranked` returns 400 INVALID_CURSOR.\n *\n * @param actorId - Viewer social actor UUID — feed is candidate-pooled to their follow-graph.\n * @param params - `Social.ActorFeedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: INVALID_ORDER (unknown `order` value) or INVALID_CURSOR (cursor shape mismatch).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-feed\n * @example\n * ```ts\n * for await (const feed of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.feed.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(feed);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.feed.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFeedListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/feed\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.followRequests` */\nexport class CommunityActorsFollowRequestsResource extends APIResource {\n /**\n * List incoming follow requests for a (private) actor, newest-first (task 014).\n *\n * @param actorId - The private actor whose incoming requests to list.\n * @param params - `Social.ActorFollowRequestListParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/follow-requests\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-follow-requests\n * @example\n * ```ts\n * for await (const followRequest of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followRequests.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(followRequest);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followRequests.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowRequestListParams, options?: RequestOptions): PagePromise<T.FollowRequestEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/follow-requests\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.followers` */\nexport class CommunityActorsFollowersResource extends APIResource {\n /**\n * List the actors who follow this actor. Pass `?expand=src_actor` to nest each follower's full actor row on the edge — a followers screen renders from this one call.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorFollowerListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/followers\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-followers\n * @example\n * ```ts\n * for await (const follower of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followers.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(follower);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.followers.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowerListParams, options?: RequestOptions): PagePromise<T.FollowerEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/followers\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.following` */\nexport class CommunityActorsFollowingResource extends APIResource {\n /**\n * List the actors this actor follows. Pass `?expand=dst_actor` to nest each followee's full actor row on the edge (no N+1 hydration).\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorFollowingListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/following\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-following\n * @example\n * ```ts\n * for await (const following of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.following.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(following);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.following.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorFollowingListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/following\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.hashtagFollows` */\nexport class CommunityActorsHashtagFollowsResource extends APIResource {\n /**\n * Follow a hashtag on behalf of an actor. Idempotent — re-follow refreshes the followed_at timestamp but doesn't error.\n *\n * @param actorId - Social actor UUID who is following.\n * @param params - `Social.ActorHashtagFollowCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag fails the lowercase + alphanum + underscore + 1..32 rule.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or hashtag not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-hashtag-follows\n * @example\n * ```ts\n * const hashtagFollow = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { tag: \"storymode\" });\n * ```\n */\n create(actorId: string, params: T.ActorHashtagFollowCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HashtagFollow>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Unfollow a hashtag. Idempotent — 204 either way.\n *\n * @param actorId - Social actor UUID.\n * @param tag - Lowercase tag.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag malformed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows/{tag}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id-hashtag-follows-tag\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"launch\");\n * ```\n */\n delete(actorId: string, tag: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows/{tag}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, tag } }, options);\n }\n /**\n * List the hashtags an actor follows. Cursor-paginated newest-first by followed_at.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorHashtagFollowListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-hashtag-follows\n * @example\n * ```ts\n * for await (const hashtagFollow of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(hashtagFollow);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hashtagFollows.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorHashtagFollowListParams, options?: RequestOptions): PagePromise<T.HashtagFollow> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.hides` */\nexport class CommunityActorsHidesResource extends APIResource {\n /**\n * List the posts an actor has hidden, newest-first.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorHideListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/hides\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-hides\n * @example\n * ```ts\n * for await (const hide of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hides.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(hide);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.hides.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorHideListParams, options?: RequestOptions): PagePromise<T.HideEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/hides\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.highlights` */\nexport class CommunityActorsHighlightsResource extends APIResource {\n /**\n * List the actor's pinned posts (highlights).\n *\n * Pinned posts appear here regardless of their `expires_at`. Visibility still applies — pass `actor_id` to surface non-public pinned posts the requester is allowed to see. Without that param, only `public` pinned rows are returned (legacy-safe default). Cursor-paginated on `(created_at DESC, id DESC)`.\n *\n * @param ownerActorId - Social actor UUID whose highlights to list.\n * @param params - `Social.ActorHighlightListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{owner_actor_id}/highlights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-owner-actor-id-highlights\n * @example\n * ```ts\n * for await (const highlight of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.highlights.list(\"aaaaaaaa-0000-0000-0000-000000000001\")) {\n * console.log(highlight);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.highlights.list(\"aaaaaaaa-0000-0000-0000-000000000001\", {}, { timeout: 5_000 });\n * ```\n */\n list(ownerActorId: string, params?: T.WithOptionalActor<T.ActorHighlightListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{owner_actor_id}/highlights\", pathParams: { community_id: this._b.community_id, owner_actor_id: ownerActorId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `actors.mentions` */\nexport class CommunityActorsMentionsResource extends APIResource {\n /**\n * List every place this actor has been @-mentioned (posts + comments).\n *\n * Cursor-paginated, newest-first. Interleaves post + comment mentions in a single feed; the `source` field discriminates which surface each row came from. The `post_id` field is always set so the client can deep-link, even for comment mentions.\n *\n * @param actorId - Social actor UUID whose mentions to list.\n * @param params - `Social.ActorMentionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/mentions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-mentions\n * @example\n * ```ts\n * for await (const mention of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mentions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(mention);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mentions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMentionListParams, options?: RequestOptions): PagePromise<T.MentionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/mentions\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.mutedTerms` */\nexport class CommunityActorsMutedTermsResource extends APIResource {\n /**\n * Add (or refresh) a muted term for the actor. Re-posting the same `term` updates the scope + expires_at.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMutedTermCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/muted-terms\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-muted-terms\n * @example\n * ```ts\n * const mutedTerm = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { term: \"spoiler\" });\n * ```\n */\n create(actorId: string, params: T.ActorMutedTermCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.MutedTerm>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params, idempotent: true }, options);\n }\n /**\n * Remove a muted term. Idempotent — 204 either way.\n *\n * @param actorId - Social actor UUID.\n * @param term - URL-encoded term.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}/muted-terms/{term}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id-muted-terms-term\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"spoiler\");\n * ```\n */\n delete(actorId: string, term: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms/{term}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, term } }, options);\n }\n /**\n * List the actor's currently-active muted terms, newest-first. Cursor-paginated (task 008 / G13 — previously an unbounded bare array).\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMutedTermListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/muted-terms\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-muted-terms\n * @example\n * ```ts\n * for await (const mutedTerm of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(mutedTerm);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutedTerms.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMutedTermListParams, options?: RequestOptions): PagePromise<T.MutedTerm> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.mutes` */\nexport class CommunityActorsMutesResource extends APIResource {\n /**\n * List actors this actor has muted. Pass `?expand=dst_actor` to nest each muted actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorMuteListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/mutes\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-mutes\n * @example\n * ```ts\n * for await (const mute of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutes.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(mute);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.mutes.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorMuteListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/mutes\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.notificationPrefs` */\nexport class CommunityActorsNotificationPrefsResource extends APIResource {\n /**\n * List the actor's per-kind notification preferences. Synthesises `enabled=true` defaults for kinds the actor has not explicitly toggled.\n *\n * Returns one row per known NotificationKind so the client UI can render every toggle without a separate catalogue lookup. Synthesised rows carry an epoch `updated_at`; explicit rows carry the real timestamp.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notification-prefs\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notification-prefs\n * @example\n * ```ts\n * const notificationPrefList = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notificationPrefs.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n list(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.NotificationPrefList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Set a single notification-kind preference for the actor.\n *\n * Idempotent upsert. Pass `{ enabled: false }` to mute, `{ enabled: true }` to re-enable. Cache is invalidated on write so the next NotificationService.tryEmit picks up the change immediately. Returns the resulting preference row.\n *\n * @param actorId - Social actor UUID.\n * @param kind - NotificationKind label.\n * @param params - `Social.ActorNotificationPrefUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed, or `kind` is not a known NotificationKind.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id-notification-prefs-kind\n * @example\n * ```ts\n * const notificationPref = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notificationPrefs.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"follow\", { enabled: false });\n * ```\n */\n update(actorId: string, kind: string, params: T.ActorNotificationPrefUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.NotificationPref>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, kind }, body: params }, options);\n }\n}\n\n/** `actors.notifications` */\nexport class CommunityActorsNotificationsResource extends APIResource {\n /**\n * List notifications for an actor (newest first).\n *\n * Reverse-chronological inbox. Pass `unread_only=true` to filter to unread rows only. Cursor encodes `(created_at, id)` and round-trips through the response. Default page size 50, max 200. Suppression of self-actions and blocked-actor pairs happens at write time, so every row returned here has already passed those filters.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param params - `Social.ActorNotificationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (also returned for cross-workspace probes).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notifications\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notifications\n * @example\n * ```ts\n * for await (const notification of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(notification);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorNotificationListParams, options?: RequestOptions): PagePromise<T.NotificationResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n /**\n * Mark every unread notification for the actor as read.\n *\n * Single bulk write. Optional `before` ISO timestamp scopes to rows older than that — useful for \"mark all older than today as read\" UX. Returns the number of rows that flipped.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param params - `Social.ActorNotificationMarkAllReadParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `before` is not a valid ISO timestamp.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-notifications-read-all\n * @example\n * ```ts\n * const result = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.markAllRead(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { before: \"2026-05-01T00:00:00.000Z\" });\n * ```\n */\n markAllRead(actorId: string, params?: T.ActorNotificationMarkAllReadParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.MarkAllReadResponse>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n /**\n * Count unread notifications for an actor.\n *\n * Cheap badge endpoint backed by a partial index — safe to poll at the cadence of an in-product notification bell.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.read` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/notifications/unread-count\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-notifications-unread-count\n * @example\n * ```ts\n * const result = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.unreadCount(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n unreadCount(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UnreadCountResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/unread-count\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Mark a single notification as read or unread.\n *\n * Idempotent: marking an already-read row read again is a no-op 204. Returns 404 if the notification belongs to a different actor.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param notificationId - Notification UUID returned from the list endpoint.\n * @param params - `Social.ActorNotificationUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.notify.update` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Notification not found, or belongs to a different actor.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id-notifications-notification-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.notifications.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"11111111-1111-1111-1111-111111111111\", { read: true });\n * ```\n */\n update(actorId: string, notificationId: string, params: T.ActorNotificationUpdateParams, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, notification_id: notificationId }, body: params }, options);\n }\n}\n\n/** `actors.relationships` */\nexport class CommunityActorsRelationshipsResource extends APIResource {\n /**\n * Batched pairwise relationship lookup: does this actor follow / mute / block / restrict each of up to 100 others (and is it followed / blocked back)?\n *\n * One query resolves the seven pairwise flags for a whole profile header or member list — no paging of full edge lists, and `blocked_by` is visible without attempting a write and handling the 409. Unknown or cross-community ids resolve to all-false flags; the id list is de-duplicated preserving request order. Bounded input (max 100 ids), so the response has no pagination envelope.\n *\n * @param srcActorId - Source actor UUID — the perspective all flags are computed from.\n * @param params - `Social.ActorRelationshipListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing `with`, more than 100 ids, or a non-UUID value in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{src_actor_id}/relationships\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-src-actor-id-relationships\n * @example\n * ```ts\n * const relationshipList = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.relationships.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { with: \"0b1c2d3e-4f50-4a6b-8c7d-8e9f0a1b2c3d\" });\n * ```\n */\n list(srcActorId: string, params: T.ActorRelationshipListParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.RelationshipList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{src_actor_id}/relationships\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId }, query: params }, options);\n }\n}\n\n/** `actors.restricts` */\nexport class CommunityActorsRestrictsResource extends APIResource {\n /**\n * List actors this actor has restricted. Pass `?expand=dst_actor` to nest each restricted actor's full row on the edge.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorRestrictListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_EXPAND: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or unsupported `expand` value (`INVALID_EXPAND`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/restricts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-restricts\n * @example\n * ```ts\n * for await (const restrict of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.restricts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(restrict);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.restricts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorRestrictListParams, options?: RequestOptions): PagePromise<T.OutboundEdge> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/restricts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.scheduledPosts` */\nexport class CommunityActorsScheduledPostsResource extends APIResource {\n /**\n * List the actor's scheduled posts (status='scheduled'), ordered soonest-to-publish first. Cursor-paginated.\n *\n * Scheduled posts are invisible to everyone except the author until the per-minute PostSchedulerCron promotes them. Same end-user authorization rules as drafts: the PAK lane trusts the customer-backend to gate the caller.\n *\n * @param actorId - Social actor UUID whose scheduled posts to list.\n * @param params - `Social.ActorScheduledPostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-scheduled-posts\n * @example\n * ```ts\n * for await (const scheduledPost of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.scheduledPosts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(scheduledPost);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.scheduledPosts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorScheduledPostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.storyTray` */\nexport class CommunityActorsStoryTrayResource extends APIResource {\n /**\n * Story tray for an actor — one entry per author with at least one unexpired or pinned story.\n *\n * Includes the requester themselves and every actor they follow. Ordered by latest story timestamp. Capped at 200 entries (no cursor in v1; tray is bounded by follow-graph in normal usage). Returns `has_unviewed=true` when the requester has not recorded a `view` edge against the author's most recent story.\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/story-tray\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-story-tray\n * @example\n * ```ts\n * for await (const storyTray of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.storyTray.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(storyTray);\n * }\n * ```\n */\n list(actorId: string, options?: RequestOptions): PagePromise<T.StoryTrayEntryResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/story-tray\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n}\n\n/** `actors.suggestedFollows` */\nexport class CommunityActorsSuggestedFollowsResource extends APIResource {\n /**\n * Suggested follows for an actor.\n *\n * Friend-of-a-friend signal first (people the requester's followees also follow), with a cold-start fallback to top actors in the community by follower count when FoF underfills the limit. Excludes self, existing follows / mutes / blocks, and actors who have blocked the requester. Cached 1h per (actor, limit).\n *\n * @param actorId - Social actor UUID for whom to compute suggestions.\n * @param params - `Social.ActorSuggestedFollowListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/suggested-follows\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-suggested-follows\n * @example\n * ```ts\n * for await (const suggestedFollow of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.suggestedFollows.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(suggestedFollow);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.suggestedFollows.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(actorId: string, params?: T.ActorSuggestedFollowListParams, options?: RequestOptions): PagePromise<T.SuggestedFollow> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/suggested-follows\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n}\n\n/** `actors.tagged` */\nexport class CommunityActorsTaggedResource extends APIResource {\n /**\n * List posts an actor is tagged in.\n *\n * Approved tags only, on published + unexpired posts, newest-tag-first. Visibility- and block-aware: pass the viewer via `actor_id` to surface followers / close-friends posts they may read; without it only public posts appear. Pages may be short (post-visibility filtering) but never skip or duplicate.\n *\n * @param taggedActorId - The tagged actor UUID.\n * @param params - `Social.ActorTaggedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `actor_id` / `requester_id` is not a UUID.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-tagged-actor-id-tagged\n * @example\n * ```ts\n * for await (const tagged of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.tagged.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(tagged);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.tagged.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(taggedActorId: string, params?: T.WithOptionalActor<T.ActorTaggedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\", pathParams: { community_id: this._b.community_id, tagged_actor_id: taggedActorId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `actors` */\nexport class CommunityActorsResource extends APIResource {\n #archived?: CommunityActorsArchivedResource;\n #assets?: CommunityActorsAssetsResource;\n #blocks?: CommunityActorsBlocksResource;\n #bookmarks?: CommunityActorsBookmarksResource;\n #byExternal?: CommunityActorsByExternalResource;\n #closeFriends?: CommunityActorsCloseFriendsResource;\n #dismissedSuggestions?: CommunityActorsDismissedSuggestionsResource;\n #drafts?: CommunityActorsDraftsResource;\n #feed?: CommunityActorsFeedResource;\n #followRequests?: CommunityActorsFollowRequestsResource;\n #followers?: CommunityActorsFollowersResource;\n #following?: CommunityActorsFollowingResource;\n #hashtagFollows?: CommunityActorsHashtagFollowsResource;\n #hides?: CommunityActorsHidesResource;\n #highlights?: CommunityActorsHighlightsResource;\n #mentions?: CommunityActorsMentionsResource;\n #mutedTerms?: CommunityActorsMutedTermsResource;\n #mutes?: CommunityActorsMutesResource;\n #notificationPrefs?: CommunityActorsNotificationPrefsResource;\n #notifications?: CommunityActorsNotificationsResource;\n #relationships?: CommunityActorsRelationshipsResource;\n #restricts?: CommunityActorsRestrictsResource;\n #scheduledPosts?: CommunityActorsScheduledPostsResource;\n #storyTray?: CommunityActorsStoryTrayResource;\n #suggestedFollows?: CommunityActorsSuggestedFollowsResource;\n #tagged?: CommunityActorsTaggedResource;\n get archived(): CommunityActorsArchivedResource {\n return (this.#archived ??= new CommunityActorsArchivedResource(this._client, this._b));\n }\n get assets(): CommunityActorsAssetsResource {\n return (this.#assets ??= new CommunityActorsAssetsResource(this._client, this._b));\n }\n get blocks(): CommunityActorsBlocksResource {\n return (this.#blocks ??= new CommunityActorsBlocksResource(this._client, this._b));\n }\n get bookmarks(): CommunityActorsBookmarksResource {\n return (this.#bookmarks ??= new CommunityActorsBookmarksResource(this._client, this._b));\n }\n get byExternal(): CommunityActorsByExternalResource {\n return (this.#byExternal ??= new CommunityActorsByExternalResource(this._client, this._b));\n }\n get closeFriends(): CommunityActorsCloseFriendsResource {\n return (this.#closeFriends ??= new CommunityActorsCloseFriendsResource(this._client, this._b));\n }\n get dismissedSuggestions(): CommunityActorsDismissedSuggestionsResource {\n return (this.#dismissedSuggestions ??= new CommunityActorsDismissedSuggestionsResource(this._client, this._b));\n }\n get drafts(): CommunityActorsDraftsResource {\n return (this.#drafts ??= new CommunityActorsDraftsResource(this._client, this._b));\n }\n get feed(): CommunityActorsFeedResource {\n return (this.#feed ??= new CommunityActorsFeedResource(this._client, this._b));\n }\n get followRequests(): CommunityActorsFollowRequestsResource {\n return (this.#followRequests ??= new CommunityActorsFollowRequestsResource(this._client, this._b));\n }\n get followers(): CommunityActorsFollowersResource {\n return (this.#followers ??= new CommunityActorsFollowersResource(this._client, this._b));\n }\n get following(): CommunityActorsFollowingResource {\n return (this.#following ??= new CommunityActorsFollowingResource(this._client, this._b));\n }\n get hashtagFollows(): CommunityActorsHashtagFollowsResource {\n return (this.#hashtagFollows ??= new CommunityActorsHashtagFollowsResource(this._client, this._b));\n }\n get hides(): CommunityActorsHidesResource {\n return (this.#hides ??= new CommunityActorsHidesResource(this._client, this._b));\n }\n get highlights(): CommunityActorsHighlightsResource {\n return (this.#highlights ??= new CommunityActorsHighlightsResource(this._client, this._b));\n }\n get mentions(): CommunityActorsMentionsResource {\n return (this.#mentions ??= new CommunityActorsMentionsResource(this._client, this._b));\n }\n get mutedTerms(): CommunityActorsMutedTermsResource {\n return (this.#mutedTerms ??= new CommunityActorsMutedTermsResource(this._client, this._b));\n }\n get mutes(): CommunityActorsMutesResource {\n return (this.#mutes ??= new CommunityActorsMutesResource(this._client, this._b));\n }\n get notificationPrefs(): CommunityActorsNotificationPrefsResource {\n return (this.#notificationPrefs ??= new CommunityActorsNotificationPrefsResource(this._client, this._b));\n }\n get notifications(): CommunityActorsNotificationsResource {\n return (this.#notifications ??= new CommunityActorsNotificationsResource(this._client, this._b));\n }\n get relationships(): CommunityActorsRelationshipsResource {\n return (this.#relationships ??= new CommunityActorsRelationshipsResource(this._client, this._b));\n }\n get restricts(): CommunityActorsRestrictsResource {\n return (this.#restricts ??= new CommunityActorsRestrictsResource(this._client, this._b));\n }\n get scheduledPosts(): CommunityActorsScheduledPostsResource {\n return (this.#scheduledPosts ??= new CommunityActorsScheduledPostsResource(this._client, this._b));\n }\n get storyTray(): CommunityActorsStoryTrayResource {\n return (this.#storyTray ??= new CommunityActorsStoryTrayResource(this._client, this._b));\n }\n get suggestedFollows(): CommunityActorsSuggestedFollowsResource {\n return (this.#suggestedFollows ??= new CommunityActorsSuggestedFollowsResource(this._client, this._b));\n }\n get tagged(): CommunityActorsTaggedResource {\n return (this.#tagged ??= new CommunityActorsTaggedResource(this._client, this._b));\n }\n /**\n * Bulk actor upsert (max 200 per call) — the import lane. Each item runs the exact single-upsert path; results come back per item with partial success (`201` even when some items fail — inspect `success` / `error` per entry). No wrapping transaction.\n *\n * @param params - `Social.ActorBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Envelope validation failure: `actors` missing, empty, over 200 items, or an item shape invalid.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-batch\n * @example\n * ```ts\n * const batchActors = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.batch({ actors: [{ external_id: \"user_abc123\" }] });\n * ```\n */\n batch(params: T.ActorBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchActors>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Denormalised counters for one actor (followers, following, posts, comments, blocks).\n *\n * @param actorId - Social actor UUID (returned from POST /actors).\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or belongs to a different community / workspace).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/counters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-counters\n * @example\n * ```ts\n * const actorCounters = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.counters(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n counters(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorCounters>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/counters\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Upsert an actor by external_id. Creates on first call, updates on subsequent calls with the same external_id. Idempotent on `(community, external_id)`. Note: omitted fields on a follow-up call are overwritten with the new body — pass every field you want to keep on each call.\n *\n * @param params - `Social.ActorCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (external_id, display_name, avatar_url length).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create` for this community.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors\n * @example\n * ```ts\n * const upsertActor = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.create({ external_id: \"user_abc123\" });\n * ```\n */\n create(params: T.ActorCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UpsertActor>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Delete an actor. Hard delete — cascades to every post, comment, edge, flag, and notification it owns.\n *\n * @param actorId - Social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(actorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * An actor's follower time series: live follower_count plus a nightly-snapshot daily series over ?from/?to (default trailing 30 days).\n *\n * @param actorId - Id of the actor.\n * @param params - `Social.ActorInsightsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid window.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.analytics.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}/insights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id-insights\n * @example\n * ```ts\n * const actorInsights = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.insights(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n insights(actorId: string, params?: T.ActorInsightsParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorInsights>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}/insights\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, query: params }, options);\n }\n /**\n * List actors in a community. 50 per page by default (max 200) — paginate with the cursor returned in `pagination.next_cursor` while `pagination.has_more` is true. Pass `?ids=<uuid,uuid,…>` (max 100) to batch-fetch specific actors instead — one hydration call for a screenful of ids; unknown ids are silently omitted and `pagination` is the exhausted shape (`next_cursor: null`).\n *\n * @param params - `Social.ActorListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_CURSOR, INVALID_ID_LIST, TOO_MANY_IDS: Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. Or invalid `ids` (`INVALID_ID_LIST` — empty / non-UUID entry; `TOO_MANY_IDS` — over 100).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors\n * @example\n * ```ts\n * for await (const actor of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.list()) {\n * console.log(actor);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.ActorListParams, options?: RequestOptions): PagePromise<T.Actor> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/actors\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Batch viewer-state hydration: the actor's reactions, bookmark, repost, and poll-vote state for up to 200 posts in one call.\n *\n * Read-over-POST (the id list is too large for a query string) — no side effects, no Idempotency-Key needed. Renders a whole feed page's \"liked by you\" / saved / reposted / voted state with one request on top of the feed call.\n *\n * @param actorId - Viewer actor UUID — the perspective all state is computed from.\n * @param params - `Social.ActorPostStateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty `post_ids`, more than 200 ids, or a non-UUID in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/actors/{actor_id}/post-state\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-actors-actor-id-post-state\n * @example\n * ```ts\n * const postState = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.postState(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {\n * post_ids: [\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"cccccccc-cccc-cccc-cccc-cccccccccccc\"],\n * });\n * ```\n */\n postState(actorId: string, params: T.ActorPostStateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostState>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/actors/{actor_id}/post-state\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n /**\n * Get an actor by its UUID.\n *\n * @param actorId - Social actor UUID (the id returned by upsert).\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * const actor = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId } }, options);\n }\n /**\n * Update actor profile fields. Pass only the fields you want to change.\n *\n * @param actorId - Social actor UUID.\n * @param params - `Social.ActorUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Actor not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/actors/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-actors-actor-id\n * @example\n * ```ts\n * const actor = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").actors.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { avatar_url: \"string\" });\n * ```\n */\n update(actorId: string, params?: T.ActorUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Actor>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/actors/{actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId }, body: params }, options);\n }\n}\n\n/** `assets` */\nexport class CommunityAssetsResource extends APIResource {\n /**\n * Finalize a presigned-PUT video upload. Verifies the stored object (existence, size, container magic bytes) and enqueues the transcode. Replaying on a finalized asset returns its current status without re-enqueueing.\n *\n * @param assetId - Video asset UUID (status `uploading`).\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, ASSET_UPLOAD_INCOMPLETE, ASSET_TOO_LARGE, ASSET_INVALID_CONTAINER, ASSET_NOT_VIDEO: `ASSET_UPLOAD_INCOMPLETE` (no object / size mismatch — still retryable), `ASSET_TOO_LARGE` or `ASSET_INVALID_CONTAINER` (upload failed + object deleted), or `ASSET_NOT_VIDEO`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/assets/{asset_id}/complete\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-assets-asset-id-complete\n * @example\n * ```ts\n * const uploadAsset = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.complete(\"eeeeeeee-0000-0000-0000-000000000001\");\n * ```\n */\n complete(assetId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UploadAsset>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/assets/{asset_id}/complete\", pathParams: { community_id: this._b.community_id, asset_id: assetId }, idempotent: true }, options);\n }\n /**\n * Upload media. Images (multipart): processed synchronously, returns ready. Videos (JSON, kind:'video' + declared content_type/byte_size): returns an `uploading` asset with a presigned PUT — upload the bytes, then POST /assets/:id/complete.\n *\n * @param params - `Social.AssetCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/oversize/wrong-type file or declaration, or the bytes do not match the declared image type.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or owner actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The image could not be decoded/processed.\n * @throws {RateLimitError} 429 RATE_LIMITED, TOO_MANY_ACTIVE_UPLOADS: `TOO_MANY_ACTIVE_UPLOADS` — the community already has the max videos uploading/processing. Per-IP limit: more than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/assets\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-assets\n * @example\n * ```ts\n * const uploadAsset = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.create();\n * ```\n */\n create(params?: T.WithOptionalActor<T.AssetCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UploadAsset>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/assets\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete an asset — removes every stored rendition object, then the row.\n *\n * @param assetId - Id of the asset.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.write`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/assets/{asset_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-assets-asset-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(assetId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/assets/{asset_id}\", pathParams: { community_id: this._b.community_id, asset_id: assetId } }, options);\n }\n /**\n * Fetch one asset with freshly-minted presigned rendition URLs.\n *\n * @param assetId - Id of the asset.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.assets.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Asset not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/assets/{asset_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-assets-asset-id\n * @example\n * ```ts\n * const asset = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").assets.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(assetId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Asset>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/assets/{asset_id}\", pathParams: { community_id: this._b.community_id, asset_id: assetId } }, options);\n }\n}\n\n/** `blocks` */\nexport class CommunityBlocksResource extends APIResource {\n /**\n * Block another actor. Removes any existing follows/mutes between the two in either direction (one transaction).\n *\n * @param params - `Social.BlockCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot block yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/blocks\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-blocks\n * @example\n * ```ts\n * const createEdge = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").blocks.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.BlockCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/blocks\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unblock. Idempotent — 204 either way. Does NOT restore prior follows / mutes (the block tear-down is one-way).\n *\n * @param srcActorId - Blocker actor UUID.\n * @param dstActorId - Blockee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/blocks/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-blocks-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").blocks.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/blocks/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `closeFriends` */\nexport class CommunityCloseFriendsResource extends APIResource {\n /**\n * Add a member to an actor's close-friends list.\n *\n * Idempotent on `(community, owner, member)`. 422 on self-add. 409 if a block exists between the pair in either direction. Visibility-`close_friends` posts authored by `owner` become visible to `member` after this call.\n *\n * @param params - `Social.CloseFriendCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.manage`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / owner / member not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block in place between owner and member. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot add yourself as a close friend.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/close-friends\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-close-friends\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").closeFriends.create({ member_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.CloseFriendCreateParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/close-friends\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a member from an actor's close-friends list.\n *\n * Idempotent: 204 whether or not the edge exists. After removal, `close_friends`-visibility posts by `owner` no longer surface to `member`.\n *\n * @param ownerActorId - Owner social actor UUID.\n * @param memberActorId - Member social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.close-friend.manage`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/close-friends/{owner_actor_id}/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-close-friends-owner-actor-id-member-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").closeFriends.delete(\"aaaaaaaa-0000-0000-0000-000000000001\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(ownerActorId: string, memberActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/close-friends/{owner_actor_id}/{member_actor_id}\", pathParams: { community_id: this._b.community_id, owner_actor_id: ownerActorId, member_actor_id: memberActorId } }, options);\n }\n}\n\n/** `collections.items` */\nexport class CommunityCollectionsItemsResource extends APIResource {\n /**\n * Add a post to a collection (owner only). Idempotent per (collection, post).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionItemCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Collection or post not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/collections/{collection_id}/items\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-collections-collection-id-items\n * @example\n * ```ts\n * const collectionItem = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { post_id: \"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\" });\n * ```\n */\n create(collectionId: string, params: T.WithOptionalActor<T.CollectionItemCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CollectionItem>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a post from a collection (owner only).\n *\n * @param collectionId - Id of the collection.\n * @param postId - Id of the post.\n * @param params - `Social.CollectionItemDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-collections-collection-id-items-post-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { caller_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\" });\n * ```\n */\n delete(collectionId: string, postId: string, params?: T.WithOptionalActor<T.CollectionItemDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId, post_id: postId }, query: fillActor(split(params, [\"actor_id\"])[0], this._b), body: split(params, [\"actor_id\"])[1] }, options);\n }\n /**\n * List a collection's posts in curator order. Highlight collections bypass story expiry; bookmark collections drop expired posts. 50/page (max 200).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionItemListParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or private and not the owner).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections/{collection_id}/items\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections-collection-id-items\n * @example\n * ```ts\n * for await (const item of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(item);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(collectionId: string, params?: T.WithOptionalActor<T.CollectionItemListParams>, options?: RequestOptions): PagePromise<T.CollectionItem> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Reorder a post within a collection (owner only).\n *\n * @param collectionId - Id of the collection.\n * @param postId - Id of the post.\n * @param params - `Social.CollectionItemUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Collection or item not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-collections-collection-id-items-post-id\n * @example\n * ```ts\n * const collectionItem = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.items.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { position: 3 });\n * ```\n */\n update(collectionId: string, postId: string, params: T.WithOptionalActor<T.CollectionItemUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CollectionItem>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `collections` */\nexport class CommunityCollectionsResource extends APIResource {\n #items?: CommunityCollectionsItemsResource;\n get items(): CommunityCollectionsItemsResource {\n return (this.#items ??= new CommunityCollectionsItemsResource(this._client, this._b));\n }\n /**\n * Create a collection. Default kind `bookmark`, visibility `private`. Pass an Idempotency-Key so retries are safe.\n *\n * @param params - `Social.CollectionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, owner suspended, or cover asset not owned.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, owner, or cover asset not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cover asset is not ready.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/collections\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-collections\n * @example\n * ```ts\n * const collection = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.create({ name: \"Travel\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.CollectionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/collections\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete a collection (owner only). Items cascade; the posts themselves are untouched.\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { caller_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\" });\n * ```\n */\n delete(collectionId: string, params?: T.WithOptionalActor<T.CollectionDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(split(params, [\"actor_id\"])[0], this._b), body: split(params, [\"actor_id\"])[1] }, options);\n }\n /**\n * List collections. Public ones are visible to anyone; private ones surface only to their owner via actor_id. Filter by owner_actor_id / kind.\n *\n * @param params - `Social.CollectionListParams`.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections\n * @example\n * ```ts\n * for await (const collection of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.list()) {\n * console.log(collection);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.CollectionListParams>, options?: RequestOptions): PagePromise<T.Collection> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/collections\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Fetch one collection. Private collections resolve only for their owner (via actor_id).\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionRetrieveParams`.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found (or private and not the owner).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * const collection = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(collectionId: string, params?: T.WithOptionalActor<T.CollectionRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update a collection (owner only) — rename, cover, visibility, reorder position.\n *\n * @param collectionId - Id of the collection.\n * @param params - `Social.CollectionUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cover asset is not ready.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/collections/{collection_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-collections-collection-id\n * @example\n * ```ts\n * const collection = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").collections.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n update(collectionId: string, params?: T.WithOptionalActor<T.CollectionUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Collection>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/collections/{collection_id}\", pathParams: { community_id: this._b.community_id, collection_id: collectionId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `connections` */\nexport class CommunityConnectionsResource extends APIResource {\n /**\n * Accept `src_actor_id`'s connection request as `dst_actor_id`: approves the follow request AND creates the reverse follow edge, so both directions exist afterwards. Convergent on retry — if the request was already consumed by a partially-completed accept (src already follows dst) the reverse edge is still ensured.\n *\n * @param dstActorId - Id of the dst actor.\n * @param srcActorId - Id of the src actor.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Malformed actor id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community/actor not found, or no request to accept and src does not follow dst.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/connections/{dst_actor_id}/{src_actor_id}/accept\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-connections-dst-actor-id-src-actor-id-accept\n * @example\n * ```ts\n * const connectionResult = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.accept(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n accept(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ConnectionResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/connections/{dst_actor_id}/{src_actor_id}/accept\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n /**\n * Request a connection (mutual follow). Runs the standard follow path: a private destination yields `pending` (accept via the accept route); a public destination connects immediately — the reverse edge is created in the same call. Idempotent; refused on blocks (409) and self-connection (422) exactly like a follow.\n *\n * @param params - `Social.ConnectionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot connect with yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/connections\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-connections\n * @example\n * ```ts\n * const connectionResult = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.create({\n * dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\",\n * src_actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\",\n * });\n * ```\n */\n create(params: T.ConnectionCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ConnectionResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/connections\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Sever a connection COMPLETELY: deletes the follow edges in both directions and withdraws any pending requests either way. There is no one-sided removal — this is the connections invariant. 204 whether or not anything existed.\n *\n * @param actorId - Id of the actor.\n * @param otherActorId - Id of the other actor.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Malformed actor id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/connections/{actor_id}/{other_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-connections-actor-id-other-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").connections.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(actorId: string, otherActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/connections/{actor_id}/{other_actor_id}\", pathParams: { community_id: this._b.community_id, actor_id: actorId, other_actor_id: otherActorId } }, options);\n }\n}\n\n/** `conversations.members` */\nexport class CommunityConversationsMembersResource extends APIResource {\n /**\n * Add a member to a group conversation. Admin-only. Refuses if the new member has a block with any existing participant.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMemberCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not an admin, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already a member, group full, or block exists with an existing participant. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/members\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-members\n * @example\n * ```ts\n * const conversation = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n create(conversationId: string, params?: T.WithOptionalActor<T.ConversationMemberCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a participant. Admin-only unless the acting `?actor_id=` equals the target (self-leave).\n *\n * @param conversationId - Conversation UUID.\n * @param memberActorId - Target participant — social actor UUID.\n * @param params - `Social.ConversationMemberDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not an admin and not the target.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or participant not found.\n * @throws {ConflictError} 409 CONFLICT: Attempting to remove the last admin (or self-leave when last admin in a non-empty group).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-members-member-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(conversationId: string, memberActorId: string, params?: T.WithOptionalActor<T.ConversationMemberDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, member_actor_id: memberActorId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update a participant (task 025). Field-level authz: `role` is admin-only; `muted` / `muted_until` / `pinned` are self-only (the caller must be the path actor). The canonical home for participant state.\n *\n * @param conversationId - Conversation UUID.\n * @param memberActorId - Target participant — social actor UUID.\n * @param params - `Social.ConversationMemberUpdateParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Not an admin (role) or not the target (self-only fields).\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or participant not found.\n * @throws {ConflictError} 409 CONFLICT: Attempting to demote the last admin.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id-members-member-actor-id\n * @example\n * ```ts\n * const conversation = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.members.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n update(conversationId: string, memberActorId: string, params?: T.WithOptionalActor<T.ConversationMemberUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, member_actor_id: memberActorId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations.messages.reactions` */\nexport class CommunityConversationsMessagesReactionsResource extends APIResource {\n /**\n * Add a reaction to a direct message. Idempotent — re-posting the same (actor, type) is a no-op.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or reactor is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, message, or actor not found, or caller not a participant.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between reactor and sender. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions\n * @example\n * ```ts\n * const directMessageReactionCreated = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { type: \"heart\" });\n * ```\n */\n create(conversationId: string, messageId: string, params: T.WithOptionalActor<T.ConversationMessageReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessageReactionCreated>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove the (actor, type) reaction. Idempotent — calling on a missing reaction returns the current counts.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param actorId - Reactor actor UUID.\n * @param type - Reaction type to remove.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, message, or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions-actor-id-type\n * @example\n * ```ts\n * const directMessageReactionRemoved = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"like\");\n * ```\n */\n delete(conversationId: string, messageId: string, actorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessageReactionRemoved>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{actor_id}/{type}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId, actor_id: actorId, type } }, options);\n }\n /**\n * List the reactions on a direct message. Cursor-paginated, newest-first.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found, or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages-message-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {})) {\n * console.log(reaction);\n * }\n * ```\n */\n list(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageReactionListParams>, options?: RequestOptions): PagePromise<T.DirectMessageReaction> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations.messages` */\nexport class CommunityConversationsMessagesResource extends APIResource {\n #reactions?: CommunityConversationsMessagesReactionsResource;\n get reactions(): CommunityConversationsMessagesReactionsResource {\n return (this.#reactions ??= new CommunityConversationsMessagesReactionsResource(this._client, this._b));\n }\n /**\n * Send a message in the conversation. Pass an `Idempotency-Key` header to make retries safe — a retried send never delivers the message twice.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMessageCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (empty body for text, body too long, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation, reply target, or sender not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the sender and another participant, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-messages\n * @example\n * ```ts\n * const directMessage = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n create(conversationId: string, params?: T.WithOptionalActor<T.ConversationMessageCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a message. Reserved to the sender; the row stays so the conversation timeline doesn't orphan replies. Reads return body `\"(deleted)\"`. Pass the sender via `?actor_id=`.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the sender, or PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List messages in the conversation. Default newest-first cursor. Pass `since` (encoded cursor of the last-seen message) to poll for newer messages instead.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMessageListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages\n * @example\n * ```ts\n * for await (const message of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {})) {\n * console.log(message);\n * }\n * ```\n */\n list(conversationId: string, params?: T.WithOptionalActor<T.ConversationMessageListParams>, options?: RequestOptions): PagePromise<T.DirectMessage> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Fetch a single message (task 024) — resolves a reply target without paging the whole thread. Participant-gated.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Message UUID.\n * @param params - `Social.ConversationMessageRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation/message not found, or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * const directMessage = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n retrieve(conversationId: string, messageId: string, params?: T.WithOptionalActor<T.ConversationMessageRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Edit a message body. Allowed within 5 minutes of send and only by the sender.\n *\n * @param conversationId - Conversation UUID.\n * @param messageId - Direct message UUID.\n * @param params - `Social.ConversationMessageUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (empty body, body too long).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the sender, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation or message not found.\n * @throws {ConflictError} 409 CONFLICT: Edit window expired (5 minutes after send).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id-messages-message-id\n * @example\n * ```ts\n * const directMessage = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.messages.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { body: \"edited\" });\n * ```\n */\n update(conversationId: string, messageId: string, params: T.WithOptionalActor<T.ConversationMessageUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.DirectMessage>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId, message_id: messageId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `conversations` */\nexport class CommunityConversationsResource extends APIResource {\n #members?: CommunityConversationsMembersResource;\n #messages?: CommunityConversationsMessagesResource;\n get members(): CommunityConversationsMembersResource {\n return (this.#members ??= new CommunityConversationsMembersResource(this._client, this._b));\n }\n get messages(): CommunityConversationsMessagesResource {\n return (this.#messages ??= new CommunityConversationsMessagesResource(this._client, this._b));\n }\n /**\n * Open a conversation. Default `kind=\"direct\"` is the naturally-idempotent 1-on-1 path (get-or-create by participant pair). Pass `kind=\"group\"` with `actor_ids` for a multi-participant chat — group creates always insert a new row, so pass an `Idempotency-Key` header to make group-create retries safe.\n *\n * @param params - `Social.ConversationCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing recipient for direct, missing actor_ids for group, two equal actor ids, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or a participant is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists, the group exceeds `community.settings.max_group_conversation_size`, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations\n * @example\n * ```ts\n * const conversation = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.create({});\n * ```\n */\n create(params?: T.WithOptionalActor<T.ConversationCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Leave the conversation. Drops the caller's participant row; the conversation is hard-deleted when the last participant leaves. Pass the actor via `?actor_id=`.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(conversationId: string, params?: T.WithOptionalActor<T.ConversationDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List the caller's conversations in this community, most-recent-activity first.\n *\n * @param params - `Social.ConversationListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations\n * @example\n * ```ts\n * for await (const conversation of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.list({})) {\n * console.log(conversation);\n * }\n * ```\n */\n list(params?: T.WithOptionalActor<T.ConversationListParams>, options?: RequestOptions): PagePromise<T.Conversation> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Mark messages as read up to a given timestamp (default: now()). Sets the caller's `last_read_at`.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationMarkReadParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (read_through not ISO).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/conversations/{conversation_id}/read\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-conversations-conversation-id-read\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.markRead(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n markRead(conversationId: string, params?: T.WithOptionalActor<T.ConversationMarkReadParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}/read\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a single conversation by id.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * const conversation = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n retrieve(conversationId: string, params?: T.WithOptionalActor<T.ConversationRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Global unread message count for the caller across every conversation in this community.\n *\n * @param params - `Social.ConversationUnreadCountParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/conversations/unread-count\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-conversations-unread-count\n * @example\n * ```ts\n * const unreadCount = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.unreadCount({});\n * ```\n */\n unreadCount(params?: T.WithOptionalActor<T.ConversationUnreadCountParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.UnreadCount>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/conversations/unread-count\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Conversation-level update (task 025). Pass `name` to rename a group (admin-only) — the canonical rename home. Participant state (muted / muted_until / pinned) lives on PATCH /:id/members/:member_actor_id.\n *\n * @param conversationId - Conversation UUID.\n * @param params - `Social.ConversationUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Not an admin (rename), or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Conversation not found or caller not a participant.\n * @throws {ConflictError} 409 CONFLICT: Rename on a non-group conversation.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/conversations/{conversation_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-conversations-conversation-id\n * @example\n * ```ts\n * const conversation = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").conversations.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n update(conversationId: string, params?: T.WithOptionalActor<T.ConversationUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Conversation>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/conversations/{conversation_id}\", pathParams: { community_id: this._b.community_id, conversation_id: conversationId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `counters` */\nexport class CommunityCountersResource extends APIResource {\n /**\n * Batch counters (max 100 actors per call) — render a member list with follower badges from ONE call instead of one per actor. Unknown actor_ids come back in `missing[]` instead of failing the read.\n *\n * @param params - `Social.CounterListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, INVALID_ID_LIST, TOO_MANY_IDS: `actor_ids` missing or empty, a non-UUID entry (`INVALID_ID_LIST`), or over 100 ids (`TOO_MANY_IDS`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace. (Unknown actors land in `missing[]`, not a 404.)\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/counters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-counters\n * @example\n * ```ts\n * const batchCounters = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").counters.list({ actor_ids: \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f,0b1c2d3e-4f50-4a6b-8c7d-8e9f0a1b2c3d\" });\n * ```\n */\n list(params: T.CounterListParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchCounters>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/counters\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n}\n\n/** `discoverFeed` */\nexport class CommunityDiscoverFeedResource extends APIResource {\n /**\n * Discover / explore feed (task 019). Ranked surface over every public post in the community — Instagram Explore / X \"For You without follow constraint\". Optional `actor_id` filters the viewer's blocks and applies a small self-boost; without one, the result is the global discovery slice.\n *\n * @param params - `Social.DiscoverFeedListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or viewer actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/discover-feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-discover-feed\n * @example\n * ```ts\n * for await (const discoverFeed of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").discoverFeed.list()) {\n * console.log(discoverFeed);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").discoverFeed.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.DiscoverFeedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/discover-feed\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `dismissedSuggestions` */\nexport class CommunityDismissedSuggestionsResource extends APIResource {\n /**\n * Dismiss an actor from your follow suggestions (\"don't suggest\"). Idempotent. The actor never re-appears in your suggestions.\n *\n * @param params - `Social.DismissedSuggestionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot dismiss yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/dismissed-suggestions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-dismissed-suggestions\n * @example\n * ```ts\n * const createEdge = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").dismissedSuggestions.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.DismissedSuggestionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/dismissed-suggestions\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Un-dismiss a suggestion. Idempotent — 204 either way. The actor becomes eligible for suggestions again.\n *\n * @param srcActorId - The dismissing actor UUID.\n * @param dstActorId - The dismissed actor UUID.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/dismissed-suggestions/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-dismissed-suggestions-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").dismissedSuggestions.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/dismissed-suggestions/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `flags` */\nexport class CommunityFlagsResource extends APIResource {\n /**\n * File a moderation report against a post or comment. Idempotent per (reporter, target) while open.\n *\n * @param params - `Social.FlagCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (bad reporter / target / reason).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.flag` for this community, or reporter actor is suspended/deleted.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, reporter actor, or target object not found (or belongs to a different community).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: The target post/comment is already removed; nothing to flag. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot flag your own content.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/flags\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-flags\n * @example\n * ```ts\n * const createFlag = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.create({ target_id: \"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", target_kind: \"post\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.FlagCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateFlag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/flags\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * List a reporter's own flags (task 017). Requires `actor_id` (the reporter) — the customer lane sees only that reporter's reports (\"was my report reviewed?\"), never other reporters' flags. Cursor-paginated newest-first.\n *\n * @param params - `Social.FlagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing actor_id or invalid status.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/flags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-flags\n * @example\n * ```ts\n * for await (const flag of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.list()) {\n * console.log(flag);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").flags.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.FlagListParams>, options?: RequestOptions): PagePromise<T.Flag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/flags\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `followRequests` */\nexport class CommunityFollowRequestsResource extends APIResource {\n /**\n * Approve a pending follow request (task 014). The destination (private) actor approves the requesting actor; a follow edge is created.\n *\n * @param dstActorId - The private actor being followed (approver).\n * @param srcActorId - The requesting actor.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: No pending request for this pair.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follow-requests-dst-actor-id-src-actor-id-approve\n * @example\n * ```ts\n * const createEdge = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").followRequests.approve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n approve(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}/approve\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n /**\n * Decline a pending follow request (task 014). Deletes the request; no edge, no notification.\n *\n * @param dstActorId - The private actor (decliner).\n * @param srcActorId - The requesting actor.\n * @param options - Per-request options.\n * @throws {NotFoundError} 404 NOT_FOUND: No pending request for this pair.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-follow-requests-dst-actor-id-src-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").followRequests.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(dstActorId: string, srcActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/follow-requests/{dst_actor_id}/{src_actor_id}\", pathParams: { community_id: this._b.community_id, dst_actor_id: dstActorId, src_actor_id: srcActorId } }, options);\n }\n}\n\n/** `follows` */\nexport class CommunityFollowsResource extends APIResource {\n /**\n * Bulk follow creation (max 200 per call) — the graph-import lane. Each item runs the exact single-follow path (block checks, counters, idempotency), so a blocked pair fails ITS item with a 409 in `error` while the rest of the batch proceeds. `201` even with failures — inspect per-item results. Set `suppress_notifications: true` when importing an existing graph.\n *\n * @param params - `Social.FollowBatchParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Envelope validation failure: `follows` missing, empty, over 200 items, or an item shape invalid.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found in the PAK's workspace. (Unknown actors fail per item, not the whole call.)\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follows/batch\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follows-batch\n * @example\n * ```ts\n * const batchFollows = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.batch({\n * follows: [\n * {\n * actor_id: \"aaaaaaaa-0000-0000-0000-000000000001\",\n * dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\",\n * },\n * ],\n * });\n * ```\n */\n batch(params: T.FollowBatchParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BatchFollows>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follows/batch\", pathParams: { community_id: this._b.community_id }, body: params }, options);\n }\n /**\n * Follow another actor. Idempotent. If the destination is private (task 014), a follow request is created instead and the response is `{ status: \"pending\", edge: null }`; approve/decline it via the follow-request routes. Refused if either side has a block.\n *\n * @param params - `Social.FollowCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or one of the actors not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between the pair (in either direction). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot follow yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/follows\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-follows\n * @example\n * ```ts\n * const followResult = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.FollowCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.FollowResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/follows\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unfollow. Idempotent — 204 even if the follow didn't exist.\n *\n * @param srcActorId - Follower actor UUID.\n * @param dstActorId - Followee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/follows/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-follows-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").follows.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/follows/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `hashtags.posts` */\nexport class CommunityHashtagsPostsResource extends APIResource {\n /**\n * List posts using a hashtag. `order=chronological` (default) or `order=ranked` (task 023) — ranked reuses the discover recency+engagement scoring, paginated on a (score, id) cursor. Same wire shape as the regular post list.\n *\n * @param tag - Lowercase tag (without `#`).\n * @param params - `Social.HashtagPostListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid tag or order value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags/{tag}/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags-tag-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.posts.list(\"launch\")) {\n * console.log(post);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.posts.list(\"launch\", {}, { timeout: 5_000 });\n * ```\n */\n list(tag: string, params?: T.HashtagPostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags/{tag}/posts\", pathParams: { community_id: this._b.community_id, tag }, query: params }, options);\n }\n}\n\n/** `hashtags` */\nexport class CommunityHashtagsResource extends APIResource {\n #posts?: CommunityHashtagsPostsResource;\n get posts(): CommunityHashtagsPostsResource {\n return (this.#posts ??= new CommunityHashtagsPostsResource(this._client, this._b));\n }\n /**\n * List hashtags in this community. Default order is `first_used_at` desc; `order=trending` ranks by windowed post count (task 023) — pass `window=24h|7d`. `window_post_count` is populated only when trending.\n *\n * @param params - `Social.HashtagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid order / window.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags\n * @example\n * ```ts\n * for await (const hashtag of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.list()) {\n * console.log(hashtag);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.HashtagListParams, options?: RequestOptions): PagePromise<T.Hashtag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Get a single hashtag with its current published post count.\n *\n * @param tag - Lowercase tag (without `#`).\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Tag fails the lowercase + alphanum + underscore + 1..32 rule.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/hashtags/{tag}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-hashtags-tag\n * @example\n * ```ts\n * const hashtagDetail = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hashtags.retrieve(\"launch\");\n * ```\n */\n retrieve(tag: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HashtagDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/hashtags/{tag}\", pathParams: { community_id: this._b.community_id, tag } }, options);\n }\n}\n\n/** `hides` */\nexport class CommunityHidesResource extends APIResource {\n /**\n * Hide a post from the actor's feeds (\"not interested\"). Idempotent. A hard filter — the post drops out of home + discover for that actor only.\n *\n * @param params - `Social.HideCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or post not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/hides\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-hides\n * @example\n * ```ts\n * const hideResult = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hides.create({ post_id: \"bbbbbbbb-0000-0000-0000-000000000001\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.HideCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.HideResult>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/hides\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Un-hide a post. Idempotent — 204 either way.\n *\n * @param srcActorId - The actor who hid the post.\n * @param postId - The hidden post UUID.\n * @param options - Per-request options.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/hides/{src_actor_id}/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-hides-src-actor-id-post-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").hides.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, postId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/hides/{src_actor_id}/{post_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, post_id: postId } }, options);\n }\n}\n\n/** `lists.feed` */\nexport class CommunityListsFeedResource extends APIResource {\n /**\n * List-scoped feed (task 018). Returns posts authored by members of the list, filtered by what the viewer can see. Default order is `chronological`; pass `order=ranked` for the same engagement-blended scoring used by the actor feed.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListFeedListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id, INVALID_ORDER, or INVALID_CURSOR.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found, or private and viewer is not owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}/feed\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id-feed\n * @example\n * ```ts\n * for await (const feed of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.feed.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {})) {\n * console.log(feed);\n * }\n * ```\n */\n list(listId: string, params?: T.WithOptionalActor<T.ListFeedListParams>, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}/feed\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `lists.members` */\nexport class CommunityListsMembersResource extends APIResource {\n /**\n * Add a member to a list. Owner-only.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListMemberCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: A block exists between owner and member. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/lists/{list_id}/members\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-lists-list-id-members\n * @example\n * ```ts\n * const actorListMember = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n create(listId: string, params?: T.WithOptionalActor<T.ListMemberCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorListMember>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/lists/{list_id}/members\", pathParams: { community_id: this._b.community_id, list_id: listId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Remove a member from a list. Owner-only. Idempotent — 204 either way. Pass the caller via `?actor_id=`.\n *\n * @param listId - List UUID.\n * @param memberActorId - Member — social actor UUID.\n * @param params - `Social.ListMemberDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-lists-list-id-members-member-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(listId: string, memberActorId: string, params?: T.WithOptionalActor<T.ListMemberDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\", pathParams: { community_id: this._b.community_id, list_id: listId, member_actor_id: memberActorId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List members of a list. Public lists are visible to anyone; private lists surface only when `actor_id` is the owner.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListMemberListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}/members\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id-members\n * @example\n * ```ts\n * for await (const member of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(member);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.members.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(listId: string, params?: T.WithOptionalActor<T.ListMemberListParams>, options?: RequestOptions): PagePromise<T.ActorListMember> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}/members\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `lists` */\nexport class CommunityListsResource extends APIResource {\n #feed?: CommunityListsFeedResource;\n #members?: CommunityListsMembersResource;\n get feed(): CommunityListsFeedResource {\n return (this.#feed ??= new CommunityListsFeedResource(this._client, this._b));\n }\n get members(): CommunityListsMembersResource {\n return (this.#members ??= new CommunityListsMembersResource(this._client, this._b));\n }\n /**\n * Create a new list. Default visibility `private`. List creation has no natural key (an owner can hold many same-named lists), so pass an `Idempotency-Key` header to make retries safe.\n *\n * @param params - `Social.ListCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (including malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or owner is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or owner not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/lists\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-lists\n * @example\n * ```ts\n * const actorList = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.create({ name: \"Tech news\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.ListCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/lists\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Delete a list. Owner-only. Pass the caller via `?actor_id=`.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListDeleteParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(listId: string, params?: T.WithOptionalActor<T.ListDeleteParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * List discoverable lists in this community. Public lists are visible to anyone; private lists surface only when `actor_id` is their owner.\n *\n * @param params - `Social.ListListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists\n * @example\n * ```ts\n * for await (const list of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.list()) {\n * console.log(list);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.WithOptionalActor<T.ListListParams>, options?: RequestOptions): PagePromise<T.ActorList> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/lists\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Get one list by id.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found, or private and viewer is not owner.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * const actorList = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(listId: string, params?: T.WithOptionalActor<T.ListRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update list name / description / visibility. Owner-only.\n *\n * @param listId - List UUID.\n * @param params - `Social.ListUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the owner, or PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: List not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/lists/{list_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-lists-list-id\n * @example\n * ```ts\n * const actorList = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").lists.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n update(listId: string, params?: T.WithOptionalActor<T.ListUpdateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ActorList>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/lists/{list_id}\", pathParams: { community_id: this._b.community_id, list_id: listId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `mutes` */\nexport class CommunityMutesResource extends APIResource {\n /**\n * Mute another actor. One-directional and silent — the muted actor isn't notified. Hides their content from the muter's feed.\n *\n * @param params - `Social.MuteCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot mute yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/mutes\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-mutes\n * @example\n * ```ts\n * const createEdge = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").mutes.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.MuteCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/mutes\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unmute. Idempotent — 204 either way.\n *\n * @param srcActorId - Muter actor UUID.\n * @param dstActorId - Mutee actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/mutes/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-mutes-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").mutes.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/mutes/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `posts.comments.reactions` */\nexport class CommunityPostsCommentsReactionsResource extends APIResource {\n /**\n * React to a comment. Idempotent: re-posting the same `(actor, type)` returns the existing row with `created: false`. Multiple reactions per `(actor, comment)` are allowed (different `type` values count separately).\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param params - `Social.PostCommentReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id; empty / overlong type).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment / actor not found, or comment is invisible to the actor.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between actor and comment author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-reactions\n * @example\n * ```ts\n * const addCommentReaction = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { type: \"like\" });\n * ```\n */\n create(postId: string, commentId: string, params: T.WithOptionalActor<T.PostCommentReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.AddCommentReaction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unreact. Idempotent: returns 200 with current `reaction_counts` even if there was nothing to remove.\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param srcActorId - Reactor actor UUID.\n * @param type - Reaction type label (matches the value passed at create time).\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing path parameter `type`.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment / actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions/{src_actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id-reactions-src-actor-id-type\n * @example\n * ```ts\n * const commentReactionCounts = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"like\");\n * ```\n */\n delete(postId: string, commentId: string, srcActorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CommentReactionCounts>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions/{src_actor_id}/{type}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId, src_actor_id: srcActorId, type } }, options);\n }\n /**\n * List reactions on a comment, newest-first. Cursor encodes `(created_at, actor_id, type)` so multi-reaction-from-same-actor stays stable.\n *\n * @param postId - Parent post UUID.\n * @param commentId - Comment UUID.\n * @param params - `Social.PostCommentReactionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments-comment-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(reaction);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, commentId: string, params?: T.PostCommentReactionListParams, options?: RequestOptions): PagePromise<T.CommentReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, query: params }, options);\n }\n}\n\n/** `posts.comments` */\nexport class CommunityPostsCommentsResource extends APIResource {\n #reactions?: CommunityPostsCommentsReactionsResource;\n get reactions(): CommunityPostsCommentsReactionsResource {\n return (this.#reactions ??= new CommunityPostsCommentsReactionsResource(this._client, this._b));\n }\n /**\n * Approve a pending_approval comment (restricted-actor pre-moderation). Reserved to the post-author. No-op if already published.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentApproveParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing or invalid approver_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {ConflictError} 409 CONFLICT: Comment is in a status that cannot be approved (hidden / removed).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-approve\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.approve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n approve(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentApproveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Add a comment on a post. Pass `parent_id` to reply; the depth is computed and capped by the community config. Pass an `Idempotency-Key` header to make retries safe.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param params - `Social.PostCommentCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id, empty body, body too long, malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or parent comment not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between commenter and post author, depth exceeds community.settings.max_comment_depth, or `IDEMPOTENCY_KEY_REUSE` (same Idempotency-Key, different body). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { body: \"Looks great, shipping today.\" });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostCommentCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a comment.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(postId: string, commentId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId } }, options);\n }\n /**\n * List comments on a post. Default returns top-level comments newest-first; pass `parent_id` to expand a thread (oldest-first). Pass `actor_id` so DM-style `author_only` replies surface only to the post-author and the comment-author pair.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param params - `Social.PostCommentListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments\n * @example\n * ```ts\n * for await (const comment of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(comment);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostCommentListParams>, options?: RequestOptions): PagePromise<T.Comment> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Pin a top-level comment (post-author only).\n *\n * Pins a published top-level comment so it leads the top-level listing. Reserved to the post author (403 otherwise). 409 on a reply, a non-published comment, or when the per-post pin cap (community.settings.max_pinned_comments, default 3) is reached. Idempotent.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentPinParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or comment not found.\n * @throws {ConflictError} 409 CONFLICT, PIN_CAP_REACHED: Reply / non-published comment, or pin cap reached (`PIN_CAP_REACHED`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-comments-comment-id-pin\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.pin(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n pin(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentPinParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a single comment by id.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found, removed, or not visible to the requester.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Unpin a comment (post-author only).\n *\n * Clears the pin; the comment returns to its chronological position. Reserved to the post author (403). Idempotent. Pass the acting actor via the request body.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentUnpinParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller is not the post-author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-comments-comment-id-pin\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.unpin(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n unpin(postId: string, commentId: string, params?: T.WithOptionalActor<T.PostCommentUnpinParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Update a comment's body, status, or visibility.\n *\n * @param postId - Social post UUID the comments thread under.\n * @param commentId - Social comment UUID.\n * @param params - `Social.PostCommentUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status / visibility.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Comment not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-posts-post-id-comments-comment-id\n * @example\n * ```ts\n * const comment = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.comments.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { body: \"string\" });\n * ```\n */\n update(postId: string, commentId: string, params?: T.PostCommentUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Comment>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, comment_id: commentId }, body: params }, options);\n }\n}\n\n/** `posts.quotes` */\nexport class CommunityPostsQuotesResource extends APIResource {\n /**\n * List the quote posts of a source post (X-style \"show quotes\" link).\n *\n * Cursor-paginated by `(created_at DESC, id DESC)`. Each entry is the full quote post row — body, attributes, the quoter's actor_id, the source_post_id back-reference. Filters to status=published.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostQuoteListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/quotes\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-quotes\n * @example\n * ```ts\n * for await (const quote of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.quotes.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(quote);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.quotes.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostQuoteListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/quotes\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.reactions` */\nexport class CommunityPostsReactionsResource extends APIResource {\n /**\n * React to a post. Idempotent: re-posting the same (actor, type) returns the existing edge with `created: false`.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostReactionCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between actor and post author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-reactions\n * @example\n * ```ts\n * const reaction = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { type: \"like\" });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostReactionCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Reaction>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unreact. Idempotent: returns 200 with current `reaction_counts` even if there was nothing to remove.\n *\n * @param postId - Social post UUID.\n * @param srcActorId - Reactor actor UUID.\n * @param type - Reaction type label.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing path parameter.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/reactions/{src_actor_id}/{type}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-reactions-src-actor-id-type\n * @example\n * ```ts\n * const reactionCounts = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"like\");\n * ```\n */\n delete(postId: string, srcActorId: string, type: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReactionCounts>> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions/{src_actor_id}/{type}\", pathParams: { community_id: this._b.community_id, post_id: postId, src_actor_id: srcActorId, type } }, options);\n }\n /**\n * List reactions on a post, newest-first. Cursor encodes `(created_at, actor_id, type)` so multi-reaction-from-same-actor stays stable. Pass `type` to narrow to one reaction type.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostReactionListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Overlong `type` filter (max 64 chars).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found (or post removed).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/reactions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-reactions\n * @example\n * ```ts\n * for await (const reaction of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(reaction);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reactions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostReactionListParams, options?: RequestOptions): PagePromise<T.PostReactionEntry> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/reactions\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.reposts` */\nexport class CommunityPostsRepostsResource extends APIResource {\n /**\n * List the actors who have reposted a source post. Cursor-paginated newest-first. Useful for \"X reposted this\" UI.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostRepostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or source not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/reposts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-reposts\n * @example\n * ```ts\n * for await (const repost of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reposts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(repost);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.reposts.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostRepostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/reposts\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.revisions` */\nexport class CommunityPostsRevisionsResource extends APIResource {\n /**\n * List a post's edit history. Cursor-paginated by revision_n desc (newest edit first).\n *\n * Each entry is a snapshot of body/title/attributes from BEFORE the edit landed. The post row itself carries the current state plus `edited_at` + `edit_count`. Drafts are not snapshotted — only published posts incur revisions.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostRevisionListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/revisions\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-revisions\n * @example\n * ```ts\n * for await (const revision of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.revisions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\")) {\n * console.log(revision);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.revisions.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {}, { timeout: 5_000 });\n * ```\n */\n list(postId: string, params?: T.PostRevisionListParams, options?: RequestOptions): PagePromise<T.PostRevision> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/revisions\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n}\n\n/** `posts.tags` */\nexport class CommunityPostsTagsResource extends APIResource {\n /**\n * Approve a pending tag (tagged actor only).\n *\n * The tagged actor accepts being tagged; the tag flips `pending → approved` and the post starts surfacing on their `/tagged` listing. 403 if the acting actor is not the tagged actor. 409 if the tag was already removed.\n *\n * @param postId - Post UUID.\n * @param taggedActorId - Tagged actor UUID.\n * @param params - `Social.PostTagApproveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Acting actor is not the tagged actor.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or tag not found.\n * @throws {ConflictError} 409 CONFLICT: Tag already removed.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-tags-tagged-actor-id-approve\n * @example\n * ```ts\n * const postTag = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.tags.approve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n approve(postId: string, taggedActorId: string, params?: T.WithOptionalActor<T.PostTagApproveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostTag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\", pathParams: { community_id: this._b.community_id, post_id: postId, tagged_actor_id: taggedActorId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Remove a tag (tagged actor or post author).\n *\n * Flips the tag to `removed`. Removable by either the tagged actor or the post author (403 otherwise). Idempotent on an already-removed tag.\n *\n * @param postId - Post UUID.\n * @param taggedActorId - Tagged actor UUID.\n * @param params - `Social.PostTagDeleteParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Acting actor is neither the tagged actor nor the post author.\n * @throws {NotFoundError} 404 NOT_FOUND: Post or tag not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-tags-tagged-actor-id-remove\n * @example\n * ```ts\n * const postTag = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.tags.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n delete(postId: string, taggedActorId: string, params?: T.WithOptionalActor<T.PostTagDeleteParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostTag>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\", pathParams: { community_id: this._b.community_id, post_id: postId, tagged_actor_id: taggedActorId }, body: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.viewers` */\nexport class CommunityPostsViewersResource extends APIResource {\n /**\n * List viewers of a post (author-only).\n *\n * Only the post author can list viewers. The PAK passes `actor_id`; if that resolves to an actor whose id != post.actor_id, returns 403. Viewers are ordered by view timestamp, newest-first.\n *\n * @param postId - Story (post) UUID.\n * @param params - `Social.PostViewerListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id (author-only endpoint).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list` OR requester is not the post author.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/viewers\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-viewers\n * @example\n * ```ts\n * for await (const viewer of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.viewers.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {})) {\n * console.log(viewer);\n * }\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostViewerListParams>, options?: RequestOptions): PagePromise<T.StoryViewerResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/viewers\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.voters` */\nexport class CommunityPostsVotersResource extends APIResource {\n /**\n * List voters of a poll (author-only).\n *\n * Only the poll author can list voters. Pass the author via `actor_id`; a requester whose id != post.actor_id gets 403. Each entry carries the voter and their `option_index`. Optionally filter to a single option with `option`. Ordered newest-first.\n *\n * @param postId - Post UUID containing the poll.\n * @param params - `Social.PostVoterListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing/invalid actor_id (author-only endpoint).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list` OR requester is not the poll author.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/voters\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-voters\n * @example\n * ```ts\n * for await (const voter of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.voters.list(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {})) {\n * console.log(voter);\n * }\n * ```\n */\n list(postId: string, params?: T.WithOptionalActor<T.PostVoterListParams>, options?: RequestOptions): PagePromise<T.PollVoterResponse> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/voters\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `posts.votes` */\nexport class CommunityPostsVotesResource extends APIResource {\n /**\n * Cast or change a vote on a poll.\n *\n * Last-vote-wins: an actor changing their vote replaces the prior one. 422 if the post has no poll, if `option_index` is out of range, or on self-vote of own poll. 409 if a block exists between voter and post author. Fires a `vote` notification to the post author.\n *\n * @param postId - Post UUID containing the poll.\n * @param params - `Social.PostVoteCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.vote`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / voter not found, or post invisible.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block in place between voter and poll author. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, POLL_CLOSED: Self-vote / no poll / option_index out of range / `POLL_CLOSED` (past the poll `closes_at`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/votes\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-votes\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.create(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { option_index: 1 });\n * ```\n */\n create(postId: string, params: T.WithOptionalActor<T.PostVoteCreateParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Retract an actor's vote on a poll.\n *\n * Deletes the vote edge. Idempotent — 204 whether or not a vote existed. No tally decrement: results are computed from surviving votes.\n *\n * @param postId - Post UUID containing the poll.\n * @param actorId - Voter social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.vote`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-votes-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(postId: string, actorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, actor_id: actorId } }, options);\n }\n /**\n * Read an actor's vote on a poll.\n *\n * Returns the actor's chosen `option_index` and when it was cast. 404 when the post is gone or the actor has not voted. Naturally idempotent — no Idempotency-Key.\n *\n * @param postId - Post UUID containing the poll.\n * @param actorId - Voter social actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found, or the actor has not voted.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-votes-actor-id\n * @example\n * ```ts\n * const result = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.votes.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(postId: string, actorId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PollVoteResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/votes/{actor_id}\", pathParams: { community_id: this._b.community_id, post_id: postId, actor_id: actorId } }, options);\n }\n}\n\n/** `posts` */\nexport class CommunityPostsResource extends APIResource {\n #comments?: CommunityPostsCommentsResource;\n #quotes?: CommunityPostsQuotesResource;\n #reactions?: CommunityPostsReactionsResource;\n #reposts?: CommunityPostsRepostsResource;\n #revisions?: CommunityPostsRevisionsResource;\n #tags?: CommunityPostsTagsResource;\n #viewers?: CommunityPostsViewersResource;\n #voters?: CommunityPostsVotersResource;\n #votes?: CommunityPostsVotesResource;\n get comments(): CommunityPostsCommentsResource {\n return (this.#comments ??= new CommunityPostsCommentsResource(this._client, this._b));\n }\n get quotes(): CommunityPostsQuotesResource {\n return (this.#quotes ??= new CommunityPostsQuotesResource(this._client, this._b));\n }\n get reactions(): CommunityPostsReactionsResource {\n return (this.#reactions ??= new CommunityPostsReactionsResource(this._client, this._b));\n }\n get reposts(): CommunityPostsRepostsResource {\n return (this.#reposts ??= new CommunityPostsRepostsResource(this._client, this._b));\n }\n get revisions(): CommunityPostsRevisionsResource {\n return (this.#revisions ??= new CommunityPostsRevisionsResource(this._client, this._b));\n }\n get tags(): CommunityPostsTagsResource {\n return (this.#tags ??= new CommunityPostsTagsResource(this._client, this._b));\n }\n get viewers(): CommunityPostsViewersResource {\n return (this.#viewers ??= new CommunityPostsViewersResource(this._client, this._b));\n }\n get voters(): CommunityPostsVotersResource {\n return (this.#voters ??= new CommunityPostsVotersResource(this._client, this._b));\n }\n get votes(): CommunityPostsVotesResource {\n return (this.#votes ??= new CommunityPostsVotesResource(this._client, this._b));\n }\n /**\n * Bookmark a post on behalf of an actor. Idempotent — returns the existing row with `created: false` on retry.\n *\n * Visibility-aware: the actor must be allowed to read the post. If they can't, returns 404 (opaque), matching the read-path opacity rule used everywhere else in Social.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostBookmarkParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found, or the post is invisible to the actor.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/bookmark\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-bookmark\n * @example\n * ```ts\n * const bookmarkToggle = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.bookmark(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n bookmark(postId: string, params?: T.WithOptionalActor<T.PostBookmarkParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.BookmarkToggle>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/bookmark\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Create a post on behalf of an actor. Pass an `Idempotency-Key` header to make retries safe — replays return the original response with `Idempotent-Replay: true` for 24h.\n *\n * @param params - `Social.PostCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing actor_id; body/title/url all empty; bad URL; bad ISO timestamp; malformed Idempotency-Key).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`, or actor is suspended.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, actor, or quote source post not found in the PAK's workspace.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `IDEMPOTENCY_KEY_REUSE` — the supplied Idempotency-Key was already used with a different request body. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, CANNOT_QUOTE_SELF, CANNOT_QUOTE_PRIVATE: Quote rules: `CANNOT_QUOTE_SELF` (kind='quote' with your own post as source) or `CANNOT_QUOTE_PRIVATE` (source post is private).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts\n * @example\n * ```ts\n * const post = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.create({});\n * ```\n */\n create(params?: T.WithOptionalActor<T.PostCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Soft-delete a post. The row is marked `removed`; viewers see 404. Comments and reactions are kept for moderation audit.\n *\n * @param postId - Social post UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(postId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId } }, options);\n }\n /**\n * Aggregate insights for a post: total views, unique reach, engagement counts, and a daily views/reach series over ?from/?to (default trailing 30 days).\n *\n * @param postId - Id of the post.\n * @param params - `Social.PostInsightsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid window (inverted or > 366 days).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.analytics.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found in this community.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/insights\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-insights\n * @example\n * ```ts\n * const postInsights = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.insights(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n insights(postId: string, params?: T.PostInsightsParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PostInsights>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/insights\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: params }, options);\n }\n /**\n * List posts. Pass `author_id` to filter to a single author. 50/page (max 200), cursor-paginated.\n *\n * @param params - `Social.PostListParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.list()) {\n * console.log(post);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.PostListParams, options?: RequestOptions): PagePromise<T.Post> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/posts\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Aggregate poll results for a post.\n *\n * Returns counts per option, zero-filling options that received no votes, plus `total_votes`. The `question` and option `label` strings are echoed from `post.attributes.poll`.\n *\n * @param postId - Post UUID containing the poll.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or post not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Post does not contain a poll.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}/poll-results\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id-poll-results\n * @example\n * ```ts\n * const result = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.pollResults(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n pollResults(postId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.PollResultsResponse>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}/poll-results\", pathParams: { community_id: this._b.community_id, post_id: postId } }, options);\n }\n /**\n * Batch-increment impression (`view_count`) counters on a list of posts. Client-side debounced; missing post ids are silently skipped (so a deleted post mid-batch doesn’t fail the rest). Renamed from `POST /posts/views` (task 008 / G14) to disambiguate from the story-side per-post `/posts/:post_id/views` route.\n *\n * @param params - `Social.PostRecordImpressionsParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Empty `post_ids`, more than 200 ids, or a non-UUID in the list.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.view` on the community URN.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/impressions\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-impressions\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.recordImpressions({\n * post_ids: [\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\", \"cccccccc-cccc-cccc-cccc-cccccccccccc\"],\n * });\n * ```\n */\n recordImpressions(params: T.WithOptionalActor<T.PostRecordImpressionsParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/impressions\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Record a view of a post (idempotent).\n *\n * Idempotent on `(community, viewer, post)`. 204 on success or no-op duplicate. 422 on self-view (you cannot view your own story). 404 if the post is hidden by visibility, expired, removed, or if a block exists between viewer and author. Does NOT fire a notification — the author sees views via the viewers endpoint instead.\n *\n * @param postId - Story (post) UUID.\n * @param params - `Social.PostRecordViewParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Body validation failed.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.view`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / post / viewer not found, or the post is invisible to the viewer.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot view your own story.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/views\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-views\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.recordView(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n recordView(postId: string, params?: T.WithOptionalActor<T.PostRecordViewParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/views\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Repost a source post on behalf of an actor. Idempotent — returns the existing repost row with `created: false` on retry.\n *\n * Visibility is inherited from the source. The reposter must be allowed to read the source (else 404). Self-repost 422; private-source repost 422. Bumps `source.repost_count` and the reposter's `post_count`. Fires a `repost` notification to the source author (subject to per-kind preferences from task 021).\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostRepostParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / source / actor not found, or source invisible to the actor.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: CANNOT_REPOST_SELF (reposting your own post) or CANNOT_REPOST_PRIVATE (source is visibility='private').\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/posts/{post_id}/repost\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-posts-post-id-repost\n * @example\n * ```ts\n * const createRepost = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.repost(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n repost(postId: string, params?: T.WithOptionalActor<T.PostRepostParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateRepost>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/posts/{post_id}/repost\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: fillActor(params, this._b) }, options);\n }\n /**\n * Get a post by id. Visibility-aware: pass `actor_id` for non-public posts.\n *\n * Without `actor_id`, only `public` posts return. With one, `followers` / `close_friends` / the requester's own `private` posts surface per the visibility matrix. Returns 404 (opacity) when the requester is not allowed to read the post — never 403.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostRetrieveParams`.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.read`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found, removed, expired, or not visible to the requester.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * const post = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(postId: string, params?: T.WithOptionalActor<T.PostRetrieveParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Remove a bookmark on behalf of an actor. Idempotent — 204 either way. Pass the actor via `?actor_id=`.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostUnbookmarkParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community, post, or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/bookmark\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-bookmark\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.unbookmark(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n unbookmark(postId: string, params?: T.WithOptionalActor<T.PostUnbookmarkParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/bookmark\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Undo my repost of a source post. Idempotent — 204 either way. Pass the actor via `?actor_id=`.\n *\n * @param postId - Source post UUID.\n * @param params - `Social.PostUnrepostParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure (missing/invalid actor_id).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community / source / actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/posts/{post_id}/repost\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-posts-post-id-repost\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.unrepost(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", {});\n * ```\n */\n unrepost(postId: string, params?: T.WithOptionalActor<T.PostUnrepostParams>, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/posts/{post_id}/repost\", pathParams: { community_id: this._b.community_id, post_id: postId }, query: fillActor(params, this._b) }, options);\n }\n /**\n * Update post fields. `pinned` is the highlights toggle for stories; status transitions to `hidden`/`removed` should usually go through the moderation lane.\n *\n * @param postId - Social post UUID.\n * @param params - `Social.PostUpdateParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure or invalid status / visibility / timestamp.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.update`.\n * @throws {NotFoundError} 404 NOT_FOUND: Post not found.\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY, EDIT_WINDOW_EXPIRED: `EDIT_WINDOW_EXPIRED` (content edit after the community's edit window), or `scheduled_for` passed while the post is not `status='scheduled'`.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/posts/{post_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-posts-post-id\n * @example\n * ```ts\n * const post = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").posts.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { attributes: {} });\n * ```\n */\n update(postId: string, params?: T.PostUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.Post>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/posts/{post_id}\", pathParams: { community_id: this._b.community_id, post_id: postId }, body: params }, options);\n }\n}\n\n/** `restricts` */\nexport class CommunityRestrictsResource extends APIResource {\n /**\n * Restrict another actor (Instagram-style). One-directional. Restricted actors can still see content, but new comments by them are pre-moderated as `pending_approval` until the post-author approves.\n *\n * @param params - `Social.RestrictCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Missing / invalid src_actor_id / dst_actor_id.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.create`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actors not found.\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Block exists between the pair. Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: Cannot restrict yourself.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/restricts\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-restricts\n * @example\n * ```ts\n * const createEdge = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").restricts.create({ dst_actor_id: \"aaaaaaaa-0000-0000-0000-000000000002\" });\n * ```\n */\n create(params: T.WithOptionalActor<T.RestrictCreateParams>, options?: RequestOptions): APIPromise<T.WithLastResponse<T.CreateEdge>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/restricts\", pathParams: { community_id: this._b.community_id }, body: fillActor(params, this._b), idempotent: true }, options);\n }\n /**\n * Unrestrict. Idempotent — 204 either way.\n *\n * @param srcActorId - Restrictor actor UUID.\n * @param dstActorId - Restricted actor UUID.\n * @param options - Per-request options.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.delete`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community or actor not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/restricts/{src_actor_id}/{dst_actor_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-restricts-src-actor-id-dst-actor-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").restricts.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", \"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(srcActorId: string, dstActorId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/restricts/{src_actor_id}/{dst_actor_id}\", pathParams: { community_id: this._b.community_id, src_actor_id: srcActorId, dst_actor_id: dstActorId } }, options);\n }\n}\n\n/** `search.actors` */\nexport class CommunitySearchActorsResource extends APIResource {\n /**\n * Search actors by display name, external_id (username), and bio.\n *\n * Postgres FTS over a generated tsvector column (display_name A + external_id B + bio C, `simple` locale). Returns up to `limit` (default 20, max 50) hits ordered by `ts_rank`. Pass `actor_id` to filter out actors the requester has muted or blocked, and actors who have blocked the requester. Trigram fuzzy matching is intentionally out of scope — that's a follow-up.\n *\n * @param params - `Social.SearchActorListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q missing or out of bounds (1..120 chars).\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found (or belongs to a different community).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/actors\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-actors\n * @example\n * ```ts\n * for await (const actor of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.actors.list({ q: \"onboarding\" })) {\n * console.log(actor);\n * }\n * ```\n */\n list(params: T.WithOptionalActor<T.SearchActorListParams>, options?: RequestOptions): PagePromise<T.ActorSearchHit> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/actors\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `search.hashtags` */\nexport class CommunitySearchHashtagsResource extends APIResource {\n /**\n * Prefix-search hashtags for autocomplete.\n *\n * Backed by a `text_pattern_ops` partial index — sub-100ms for any prefix length up to communities with millions of tags. Results are alphabetically ordered.\n *\n * @param params - `Social.SearchHashtagListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q is required.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/hashtags\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-hashtags\n * @example\n * ```ts\n * for await (const hashtag of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.hashtags.list({ q: \"onboarding\" })) {\n * console.log(hashtag);\n * }\n * ```\n */\n list(params: T.SearchHashtagListParams, options?: RequestOptions): PagePromise<T.Hashtag> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/hashtags\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n}\n\n/** `search.posts` */\nexport class CommunitySearchPostsResource extends APIResource {\n /**\n * Search post content (title + body) by full-text.\n *\n * Postgres FTS over a generated tsvector column on the post table (title A + body B, simple locale). `order='relevance'` (default) ranks by ts_rank; `order='recent'` keeps the FTS filter but orders by created_at desc. Filters out drafts / removed / hidden / expired posts. Pass `actor_id` to drop posts authored by anyone the requester has muted / blocked, or who has blocked the requester. Without `actor_id`, only posts with `visibility='public'` surface.\n *\n * @param params - `Social.SearchPostListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: q missing / overlong, or invalid `order` value.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: PAK lacks `social.list`.\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/search/posts\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-search-posts\n * @example\n * ```ts\n * for await (const post of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").search.posts.list({ q: \"onboarding\" })) {\n * console.log(post);\n * }\n * ```\n */\n list(params: T.WithOptionalActor<T.SearchPostListParams>, options?: RequestOptions): PagePromise<T.PostSearchHit> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/search/posts\", pathParams: { community_id: this._b.community_id }, query: fillActor(params, this._b) }, options);\n }\n}\n\n/** `search` */\nexport class CommunitySearchResource extends APIResource {\n #actors?: CommunitySearchActorsResource;\n #hashtags?: CommunitySearchHashtagsResource;\n #posts?: CommunitySearchPostsResource;\n get actors(): CommunitySearchActorsResource {\n return (this.#actors ??= new CommunitySearchActorsResource(this._client, this._b));\n }\n get hashtags(): CommunitySearchHashtagsResource {\n return (this.#hashtags ??= new CommunitySearchHashtagsResource(this._client, this._b));\n }\n get posts(): CommunitySearchPostsResource {\n return (this.#posts ??= new CommunitySearchPostsResource(this._client, this._b));\n }\n}\n\n/** `webhooks.endpoints` */\nexport class CommunityWebhooksEndpointsResource extends APIResource {\n /**\n * Add a webhook endpoint. Returns its signing secret once.\n *\n * Deliveries are signed with the Standard Webhooks headers `webhook-id`, `webhook-timestamp` and `webhook-signature` (`v1,<base64 HMAC-SHA256 of \"<id>.<timestamp>.<body>\">`); the returned `whsec_…` secret works unchanged with any Standard Webhooks library. Failed deliveries are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h.\n *\n * @param params - `Social.CommunityScopedWebhookEndpointCreateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR, WEBHOOK_EVENT_TYPE_UNKNOWN: Validation failure: URL not https with a public host, or an unknown event type (`WEBHOOK_EVENT_TYPE_UNKNOWN`).\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_LIMIT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Already 10 endpoints (`WEBHOOK_ENDPOINT_LIMIT`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.create({ url: \"https://api.acme.com/webhooks\" });\n * ```\n */\n create(params: T.CommunityScopedWebhookEndpointCreateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: this._b.community_id }, body: params, idempotent: true }, options);\n }\n /**\n * Delete a webhook endpoint.\n *\n * Queued retries are dropped. Its past attempts stay in the event log until the events expire.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see DELETE /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#delete-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.delete(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n delete(endpointId: string, options?: RequestOptions): APIPromise<void> {\n return this._client.request({ method: \"DELETE\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId } }, options);\n }\n /**\n * List webhook endpoints, oldest first.\n *\n * At most 10, so this is always one page. Signing secrets are never returned here, only their last 4 characters.\n *\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: The scope id in the path is malformed.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/endpoints\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-endpoints\n * @example\n * ```ts\n * for await (const endpoint of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.list()) {\n * console.log(endpoint);\n * }\n * ```\n */\n list(options?: RequestOptions): PagePromise<T.WebhookEndpoint> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/endpoints\", pathParams: { community_id: this._b.community_id } }, options);\n }\n /**\n * Get one webhook endpoint (without its secret).\n *\n * The endpoint's URL, subscription, on/off state, failure streak and the last 4 characters of its signing secret. The full secret is only returned when the endpoint is created or its secret is rotated.\n *\n * @param endpointId - Id of the endpoint.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.retrieve(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(endpointId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId } }, options);\n }\n /**\n * Rotate the signing secret. The new one is returned once.\n *\n * For `grace_hours` (default 24) the previous secret keeps signing too: `webhook-signature` then lists one `v1,` signature per secret, so receivers can switch over without dropping a delivery.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointRotateSecretParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `grace_hours` out of range, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints-endpoint-id-rotate-secret\n * @example\n * ```ts\n * const webhookEndpointWithSecret = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.rotateSecret(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { grace_hours: 24 });\n * ```\n */\n rotateSecret(endpointId: string, params?: T.CommunityScopedWebhookEndpointRotateSecretParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpointWithSecret>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Send a test event to this endpoint now and return the result.\n *\n * Delivers the catalogue example of `event_type`, signed like any delivery, with `\"test\": true` in the body. Works while the endpoint is switched off or not subscribed to that type, is logged in the event log, and is never retried or counted toward an automatic disable. Waits up to 15 s for your receiver.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointTestParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Unknown `event_type`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-endpoints-endpoint-id-test\n * @example\n * ```ts\n * const webhookDeliveryAttempt = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.test(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { event_type: \"post.created\" });\n * ```\n */\n test(endpointId: string, params: T.CommunityScopedWebhookEndpointTestParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookDeliveryAttempt>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n /**\n * Change a webhook endpoint: URL, description, events, on/off.\n *\n * Only the fields sent change. `enabled: true` (or a new URL) also clears an automatic disable. Switching off cancels queued retries. The secret is unchanged; rotate it with `POST …/rotate-secret`.\n *\n * @param endpointId - Id of the endpoint.\n * @param params - `Social.CommunityScopedWebhookEndpointUpdateParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Validation failure, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {UnprocessableEntityError} 422 UNPROCESSABLE_ENTITY: The new URL points at a private, loopback or internal address.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see PATCH /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\n * @see https://productcraft.co/docs/social/api-reference#patch-v1-communities-community-id-webhooks-endpoints-endpoint-id\n * @example\n * ```ts\n * const webhookEndpoint = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.endpoints.update(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\", { description: \"Production receiver\" });\n * ```\n */\n update(endpointId: string, params?: T.CommunityScopedWebhookEndpointUpdateParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEndpoint>> {\n return this._client.request({ method: \"PATCH\", path: \"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\", pathParams: { community_id: this._b.community_id, endpoint_id: endpointId }, body: params, idempotent: true }, options);\n }\n}\n\n/** `webhooks.eventTypes` */\nexport class CommunityWebhooksEventTypesResource extends APIResource {\n /**\n * List the events an endpoint can subscribe to.\n *\n * Each type with a plain description, its group and an example `data` object (what \"Send test\" delivers).\n *\n * @param options - Per-request options.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/event-types\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-event-types\n * @example\n * ```ts\n * const listWebhookEventTypes = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.eventTypes.list();\n * ```\n */\n list(options?: RequestOptions): APIPromise<T.WithLastResponse<T.ListWebhookEventTypes>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/event-types\", pathParams: { community_id: this._b.community_id } }, options);\n }\n}\n\n/** `webhooks.events` */\nexport class CommunityWebhooksEventsResource extends APIResource {\n /**\n * List webhook events, newest first (kept for 30 days).\n *\n * Every event logged while at least one endpoint existed, with the latest state per endpoint and when the next retry is due.\n *\n * @param params - `Social.CommunityScopedWebhookEventListParams`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: Invalid filter value or cursor.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND: Community not found, not visible to the caller, or the endpoint / event is not in it.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/events\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-events\n * @example\n * ```ts\n * for await (const event of social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.list()) {\n * console.log(event);\n * }\n * const page = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.list({}, { timeout: 5_000 });\n * ```\n */\n list(params?: T.CommunityScopedWebhookEventListParams, options?: RequestOptions): PagePromise<T.WebhookEvent> {\n return this._client.list({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/events\", pathParams: { community_id: this._b.community_id }, query: params }, options);\n }\n /**\n * Send a logged event again, to its endpoints or to one endpoint.\n *\n * Same body and `webhook-id`, freshly signed, to every switched-on endpoint that receives this event type now, or only to `endpoint_id`. Waits for the receivers (up to 15 s each) and returns the attempts. A success cancels a retry still queued for that endpoint.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param params - `Social.CommunityScopedWebhookEventReplayParams`.\n * @param options - Per-request options (an Idempotency-Key is sent automatically; override with `idempotencyKey`).\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`, or `endpoint_id` is not a UUID.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND, WEBHOOK_ENDPOINT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days. Or No such endpoint here (`WEBHOOK_ENDPOINT_NOT_FOUND`).\n * @throws {ConflictError} 409 CONFLICT, WEBHOOK_ENDPOINT_NOT_SUBSCRIBED, IDEMPOTENCY_KEY_REUSE, IDEMPOTENCY_IN_PROGRESS: `endpoint_id` is switched off or does not receive this event type (`WEBHOOK_ENDPOINT_NOT_SUBSCRIBED`), or Idempotency-Key reused with a different body (`IDEMPOTENCY_KEY_REUSE`). Idempotency: `IDEMPOTENCY_KEY_REUSE` when this `Idempotency-Key` was already used with a different body or route; `IDEMPOTENCY_IN_PROGRESS` while another request with the same key is still running (retry after `Retry-After` seconds, with the same key).\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see POST /v1/communities/{community_id}/webhooks/events/{event_id}/replay\n * @see https://productcraft.co/docs/social/api-reference#post-v1-communities-community-id-webhooks-events-event-id-replay\n * @example\n * ```ts\n * const replayWebhookEvent = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.replay(\"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n replay(eventId: string, params?: T.CommunityScopedWebhookEventReplayParams, options?: RequestOptions): APIPromise<T.WithLastResponse<T.ReplayWebhookEvent>> {\n return this._client.request({ method: \"POST\", path: \"/v1/communities/{community_id}/webhooks/events/{event_id}/replay\", pathParams: { community_id: this._b.community_id, event_id: eventId }, query: params, idempotent: true }, options);\n }\n /**\n * Get one webhook event with every delivery attempt.\n *\n * The event as it was sent (`type`, `data`) and every delivery attempt to every endpoint, with its trigger, HTTP status, error and the start of the response body. Use it to debug a receiver, then `replay` to send it again.\n *\n * @param eventId - The event id, `evt_<uuid>`.\n * @param options - Per-request options.\n * @throws {BadRequestError} 400 BAD_REQUEST, VALIDATION_ERROR: `event_id` is not `evt_<uuid>`.\n * @throws {AuthenticationError} 401 UNAUTHORIZED: Missing or invalid bearer token.\n * @throws {PermissionDeniedError} 403 FORBIDDEN: Caller lacks `social.read` (reads) or `social.update` (changes, Send test, replay).\n * @throws {NotFoundError} 404 NOT_FOUND, WEBHOOK_EVENT_NOT_FOUND: No such event here (`WEBHOOK_EVENT_NOT_FOUND`); events are kept for 30 days.\n * @throws {RateLimitError} 429 RATE_LIMITED: More than 20 requests per second or 600 per minute from this client IP (`RATE_LIMITED`); wait `Retry-After` seconds.\n * @see GET /v1/communities/{community_id}/webhooks/events/{event_id}\n * @see https://productcraft.co/docs/social/api-reference#get-v1-communities-community-id-webhooks-events-event-id\n * @example\n * ```ts\n * const webhookEventDetail = await social.community(\"3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\").as(\"7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d\").webhooks.events.retrieve(\"evt_3f0c3c1e-8a2b-4c55-9d3f-0a1b2c3d4e5f\");\n * ```\n */\n retrieve(eventId: string, options?: RequestOptions): APIPromise<T.WithLastResponse<T.WebhookEventDetail>> {\n return this._client.request({ method: \"GET\", path: \"/v1/communities/{community_id}/webhooks/events/{event_id}\", pathParams: { community_id: this._b.community_id, event_id: eventId } }, options);\n }\n}\n\n/** `webhooks` */\nexport class CommunityWebhooksResource extends APIResource {\n #endpoints?: CommunityWebhooksEndpointsResource;\n #eventTypes?: CommunityWebhooksEventTypesResource;\n #events?: CommunityWebhooksEventsResource;\n get endpoints(): CommunityWebhooksEndpointsResource {\n return (this.#endpoints ??= new CommunityWebhooksEndpointsResource(this._client, this._b));\n }\n get eventTypes(): CommunityWebhooksEventTypesResource {\n return (this.#eventTypes ??= new CommunityWebhooksEventTypesResource(this._client, this._b));\n }\n get events(): CommunityWebhooksEventsResource {\n return (this.#events ??= new CommunityWebhooksEventsResource(this._client, this._b));\n }\n}\n\n/** `social.community(…)`: Calls scoped to one community. Chain `.as(actorId)` to act as one of its actors: `actor_id` is filled in every body or query that declares it. */\nexport class SocialCommunity extends APIResource {\n #actors?: CommunityActorsResource;\n #assets?: CommunityAssetsResource;\n #blocks?: CommunityBlocksResource;\n #closeFriends?: CommunityCloseFriendsResource;\n #collections?: CommunityCollectionsResource;\n #connections?: CommunityConnectionsResource;\n #conversations?: CommunityConversationsResource;\n #counters?: CommunityCountersResource;\n #discoverFeed?: CommunityDiscoverFeedResource;\n #dismissedSuggestions?: CommunityDismissedSuggestionsResource;\n #flags?: CommunityFlagsResource;\n #followRequests?: CommunityFollowRequestsResource;\n #follows?: CommunityFollowsResource;\n #hashtags?: CommunityHashtagsResource;\n #hides?: CommunityHidesResource;\n #lists?: CommunityListsResource;\n #mutes?: CommunityMutesResource;\n #posts?: CommunityPostsResource;\n #restricts?: CommunityRestrictsResource;\n #search?: CommunitySearchResource;\n #webhooks?: CommunityWebhooksResource;\n /**\n * A copy of this scope that fills `actor_id` in every body or query that declares it, unless the call passes one.\n * @param actorId - The acting user.\n */\n as(actorId: string): SocialCommunity {\n return new SocialCommunity(this._client, { ...this._b, actor_id: actorId });\n }\n get actors(): CommunityActorsResource {\n return (this.#actors ??= new CommunityActorsResource(this._client, this._b));\n }\n get assets(): CommunityAssetsResource {\n return (this.#assets ??= new CommunityAssetsResource(this._client, this._b));\n }\n get blocks(): CommunityBlocksResource {\n return (this.#blocks ??= new CommunityBlocksResource(this._client, this._b));\n }\n get closeFriends(): CommunityCloseFriendsResource {\n return (this.#closeFriends ??= new CommunityCloseFriendsResource(this._client, this._b));\n }\n get collections(): CommunityCollectionsResource {\n return (this.#collections ??= new CommunityCollectionsResource(this._client, this._b));\n }\n get connections(): CommunityConnectionsResource {\n return (this.#connections ??= new CommunityConnectionsResource(this._client, this._b));\n }\n get conversations(): CommunityConversationsResource {\n return (this.#conversations ??= new CommunityConversationsResource(this._client, this._b));\n }\n get counters(): CommunityCountersResource {\n return (this.#counters ??= new CommunityCountersResource(this._client, this._b));\n }\n get discoverFeed(): CommunityDiscoverFeedResource {\n return (this.#discoverFeed ??= new CommunityDiscoverFeedResource(this._client, this._b));\n }\n get dismissedSuggestions(): CommunityDismissedSuggestionsResource {\n return (this.#dismissedSuggestions ??= new CommunityDismissedSuggestionsResource(this._client, this._b));\n }\n get flags(): CommunityFlagsResource {\n return (this.#flags ??= new CommunityFlagsResource(this._client, this._b));\n }\n get followRequests(): CommunityFollowRequestsResource {\n return (this.#followRequests ??= new CommunityFollowRequestsResource(this._client, this._b));\n }\n get follows(): CommunityFollowsResource {\n return (this.#follows ??= new CommunityFollowsResource(this._client, this._b));\n }\n get hashtags(): CommunityHashtagsResource {\n return (this.#hashtags ??= new CommunityHashtagsResource(this._client, this._b));\n }\n get hides(): CommunityHidesResource {\n return (this.#hides ??= new CommunityHidesResource(this._client, this._b));\n }\n get lists(): CommunityListsResource {\n return (this.#lists ??= new CommunityListsResource(this._client, this._b));\n }\n get mutes(): CommunityMutesResource {\n return (this.#mutes ??= new CommunityMutesResource(this._client, this._b));\n }\n get posts(): CommunityPostsResource {\n return (this.#posts ??= new CommunityPostsResource(this._client, this._b));\n }\n get restricts(): CommunityRestrictsResource {\n return (this.#restricts ??= new CommunityRestrictsResource(this._client, this._b));\n }\n get search(): CommunitySearchResource {\n return (this.#search ??= new CommunitySearchResource(this._client, this._b));\n }\n get webhooks(): CommunityWebhooksResource {\n return (this.#webhooks ??= new CommunityWebhooksResource(this._client, this._b));\n }\n}\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport type { LastResponse } from \"@productcraft/core\";\nimport type { components, paths } from \"./paths.js\";\n\ntype IsUnion<T, U = T> = T extends unknown ? ([U] extends [T] ? false : true) : never;\ntype OpenString<T extends string> = string extends T ? T : true extends IsUnion<T> ? T | (string & {}) : T;\ntype OpenValue<T> = [T] extends [string] ? OpenString<T> : T extends readonly (infer I)[] ? (OpenValue<Exclude<I, null | undefined>> | Extract<I, null | undefined>)[] : T extends object ? { [K in keyof T]: OpenValue<Exclude<T[K], null | undefined>> | Extract<T[K], null | undefined> } : T;\n/** A response type: string-literal unions also accept values added after this SDK was built. */\nexport type Open<T> = OpenValue<Exclude<T, null | undefined>> | Extract<T, null | undefined>;\n/** What a method resolves to: the parsed body plus non-enumerable `lastResponse`. */\nexport type WithLastResponse<T> = T & { readonly lastResponse: LastResponse };\n/** Params inside a scope bound with `.as(actorId)`: `actor_id` may be left out. */\nexport type WithOptionalActor<P> = P extends { actor_id: unknown } ? Omit<P, \"actor_id\"> & { actor_id?: P[\"actor_id\"] } : P;\n/** A polled model whose free-form `K` the caller types as `R` (`createAndPoll<R>`); optional and nullable stay as declared. */\nexport type WithResult<M, K extends keyof M, R> = Omit<M, K> & { [P in keyof M as P extends K ? P : never]: R | Extract<M[P], null> };\n\nexport type ActorListVisibility = components[\"schemas\"][\"ActorListVisibility\"];\nexport const ActorListVisibility = { values: [\"public\", \"private\"] as const };\n\nexport type ActorStatus = components[\"schemas\"][\"ActorStatus\"];\nexport const ActorStatus = { values: [\"active\", \"suspended\", \"deleted\"] as const };\n\nexport type AssetKind = components[\"schemas\"][\"AssetKind\"];\nexport const AssetKind = { values: [\"image\", \"video\"] as const };\n\nexport type AssetRenditionName = components[\"schemas\"][\"AssetRenditionName\"];\nexport const AssetRenditionName = { values: [\"original\", \"medium\", \"thumb\", \"video\", \"poster\"] as const };\n\nexport type AssetStatus = components[\"schemas\"][\"AssetStatus\"];\nexport const AssetStatus = { values: [\"uploading\", \"processing\", \"ready\", \"failed\"] as const };\n\nexport type AssetUploadMethod = components[\"schemas\"][\"AssetUploadMethod\"];\nexport const AssetUploadMethod = { values: [\"PUT\"] as const };\n\nexport type BlockedTermAction = components[\"schemas\"][\"BlockedTermAction\"];\nexport const BlockedTermAction = { values: [\"hide\", \"pending_approval\"] as const };\n\nexport type CollectionKind = components[\"schemas\"][\"CollectionKind\"];\nexport const CollectionKind = { values: [\"bookmark\", \"highlight\"] as const };\n\nexport type CollectionVisibility = components[\"schemas\"][\"CollectionVisibility\"];\nexport const CollectionVisibility = { values: [\"public\", \"private\"] as const };\n\nexport type CommentPolicy = components[\"schemas\"][\"CommentPolicy\"];\nexport const CommentPolicy = { values: [\"everyone\", \"followers\", \"mentioned\", \"off\"] as const };\n\nexport type CommentStatus = components[\"schemas\"][\"CommentStatus\"];\nexport const CommentStatus = { values: [\"published\", \"hidden\", \"removed\", \"pending_approval\"] as const };\n\nexport type CommentVisibility = components[\"schemas\"][\"CommentVisibility\"];\nexport const CommentVisibility = { values: [\"public\", \"author_only\"] as const };\n\nexport type CommunityStatus = components[\"schemas\"][\"CommunityStatus\"];\nexport const CommunityStatus = { values: [\"active\", \"suspended\", \"archived\"] as const };\n\nexport type ConnectionStatus = components[\"schemas\"][\"ConnectionStatus\"];\nexport const ConnectionStatus = { values: [\"pending\", \"connected\"] as const };\n\nexport type ConversationKind = components[\"schemas\"][\"ConversationKind\"];\nexport const ConversationKind = { values: [\"direct\", \"group\"] as const };\n\nexport type ConversationRole = components[\"schemas\"][\"ConversationRole\"];\nexport const ConversationRole = { values: [\"member\", \"admin\"] as const };\n\nexport type DirectMessageKind = components[\"schemas\"][\"DirectMessageKind\"];\nexport const DirectMessageKind = { values: [\"text\", \"image\", \"video\", \"audio\", \"system\"] as const };\n\nexport type EdgeKind = components[\"schemas\"][\"EdgeKind\"];\nexport const EdgeKind = { values: [\"follow\", \"mute\", \"block\", \"restrict\"] as const };\n\nexport type FlagStatus = components[\"schemas\"][\"FlagStatus\"];\nexport const FlagStatus = { values: [\"open\", \"dismissed\", \"actioned\"] as const };\n\nexport type FollowStatus = components[\"schemas\"][\"FollowStatus\"];\nexport const FollowStatus = { values: [\"followed\", \"pending\"] as const };\n\nexport type MentionSource = components[\"schemas\"][\"MentionSource\"];\nexport const MentionSource = { values: [\"post\", \"comment\"] as const };\n\nexport type ModerationActionType = components[\"schemas\"][\"ModerationActionType\"];\nexport const ModerationActionType = { values: [\"hide\", \"remove\", \"warn\", \"ban\", \"dismiss\", \"unhide\", \"restore\"] as const };\n\nexport type ModerationTargetKind = components[\"schemas\"][\"ModerationTargetKind\"];\nexport const ModerationTargetKind = { values: [\"post\", \"comment\", \"actor\", \"direct_message\"] as const };\n\nexport type MutedTermAction = components[\"schemas\"][\"MutedTermAction\"];\nexport const MutedTermAction = { values: [\"mute\", \"pending_approval\"] as const };\n\nexport type MutedTermScope = components[\"schemas\"][\"MutedTermScope\"];\nexport const MutedTermScope = { values: [\"feed\", \"dm\", \"mention\", \"all\"] as const };\n\nexport type NotificationKind = components[\"schemas\"][\"NotificationKind\"];\nexport const NotificationKind = { values: [\"follow\", \"reaction\", \"comment_on_post\", \"reply_to_comment\", \"mention\", \"vote\", \"repost\", \"quote_post\", \"dm_new_message\", \"dm_added_to_group\", \"dm_role_changed\", \"dm_reaction\", \"tag\", \"follow_request\", \"follow_request_approved\"] as const };\n\nexport type NotificationTargetKind = components[\"schemas\"][\"NotificationTargetKind\"];\nexport const NotificationTargetKind = { values: [\"actor\", \"post\", \"comment\", \"direct_message\"] as const };\n\nexport type PostStatus = components[\"schemas\"][\"PostStatus\"];\nexport const PostStatus = { values: [\"published\", \"hidden\", \"removed\", \"draft\", \"scheduled\", \"archived\"] as const };\n\nexport type PostTagState = components[\"schemas\"][\"PostTagState\"];\nexport const PostTagState = { values: [\"pending\", \"approved\", \"removed\"] as const };\n\nexport type PostVisibility = components[\"schemas\"][\"PostVisibility\"];\nexport const PostVisibility = { values: [\"public\", \"followers\", \"close_friends\", \"private\"] as const };\n\nexport type ReactionTargetType = components[\"schemas\"][\"ReactionTargetType\"];\nexport const ReactionTargetType = { values: [\"post\", \"comment\"] as const };\n\nexport type SocialStatsMetric = components[\"schemas\"][\"SocialStatsMetric\"];\nexport const SocialStatsMetric = { values: [\"active_members\"] as const };\n\nexport type StatsGranularity = components[\"schemas\"][\"StatsGranularity\"];\nexport const StatsGranularity = { values: [\"day\"] as const };\n\nexport type StatsWindow = components[\"schemas\"][\"StatsWindow\"];\nexport const StatsWindow = { values: [\"1d\", \"7d\", \"30d\"] as const };\n\nexport type SuggestionReason = components[\"schemas\"][\"SuggestionReason\"];\nexport const SuggestionReason = { values: [\"followed_by_friends\", \"top_in_community\"] as const };\n\nexport type WebhookAttemptTrigger = components[\"schemas\"][\"WebhookAttemptTrigger\"];\nexport const WebhookAttemptTrigger = { values: [\"automatic\", \"replay\", \"test\"] as const };\n\nexport type WebhookEndpointDisabledReason = components[\"schemas\"][\"WebhookEndpointDisabledReason\"];\nexport const WebhookEndpointDisabledReason = { values: [\"manual\", \"failing\"] as const };\n\nexport type WebhookEndpointStatus = components[\"schemas\"][\"WebhookEndpointStatus\"];\nexport const WebhookEndpointStatus = { values: [\"enabled\", \"disabled\", \"auto_disabled\"] as const };\n\nexport type WebhookEventStatus = components[\"schemas\"][\"WebhookEventStatus\"];\nexport const WebhookEventStatus = { values: [\"pending\", \"delivered\", \"failed\", \"not_sent\"] as const };\n\n/**\n * Every event type this product sends; `x-webhooks` maps each to its payload schema. New types can be added, so treat it as open.\n */\nexport type WebhookEventType = components[\"schemas\"][\"WebhookEventType\"];\nexport const WebhookEventType = { values: [\"post.created\", \"post.updated\", \"post.deleted\", \"post.reaction.created\", \"repost.created\", \"comment.created\", \"comment.updated\", \"comment.deleted\", \"comment.reaction.created\", \"edge.follow.created\", \"edge.follow.deleted\", \"edge.follow.requested\", \"edge.follow.request_approved\", \"flag.created\", \"flag.updated\", \"moderation.action.applied\", \"actor.updated\", \"dm.message.created\", \"tag.created\", \"asset.ready\", \"asset.failed\"] as const };\n\nexport type ActOnFlag = Open<components[\"schemas\"][\"ActOnFlagResponseDto\"]>;\nexport type ActorComments = Open<components[\"schemas\"][\"ActorCommentsResponseDto\"]>;\nexport type ActorCounters = Open<components[\"schemas\"][\"ActorCountersResponseDto\"]>;\nexport type ActorFollowerPoint = Open<components[\"schemas\"][\"ActorFollowerPointDto\"]>;\nexport type ActorInsights = Open<components[\"schemas\"][\"ActorInsightsResponseDto\"]>;\nexport type ActorListList = Open<components[\"schemas\"][\"ActorListListResponseDto\"]>;\nexport type ActorListMemberList = Open<components[\"schemas\"][\"ActorListMemberListResponseDto\"]>;\nexport type ActorListMember = Open<components[\"schemas\"][\"ActorListMemberResponseDto\"]>;\nexport type ActorList = Open<components[\"schemas\"][\"ActorListResponseDto\"]>;\nexport type ActorPage = Open<components[\"schemas\"][\"ActorPageResponseDto\"]>;\nexport type ActorReactionEntry = Open<components[\"schemas\"][\"ActorReactionEntryDto\"]>;\nexport type ActorReactions = Open<components[\"schemas\"][\"ActorReactionsResponseDto\"]>;\nexport type Actor = Open<components[\"schemas\"][\"ActorResponseDto\"]>;\nexport type ActorSearchHit = Open<components[\"schemas\"][\"ActorSearchHitDto\"]>;\nexport type ActorSearch = Open<components[\"schemas\"][\"ActorSearchResponseDto\"]>;\nexport type ActorSummary = Open<components[\"schemas\"][\"ActorSummaryDto\"]>;\nexport type ActorUpdatedEventData = Open<components[\"schemas\"][\"ActorUpdatedEventDataDto\"]>;\nexport type ActorsByExternalBatch = Open<components[\"schemas\"][\"ActorsByExternalBatchResponseDto\"]>;\nexport type AddCommentReaction = Open<components[\"schemas\"][\"AddCommentReactionResponseDto\"]>;\nexport type AssetAttachment = Open<components[\"schemas\"][\"AssetAttachmentDto\"]>;\nexport type AssetFailedEventData = Open<components[\"schemas\"][\"AssetFailedEventDataDto\"]>;\nexport type AssetList = Open<components[\"schemas\"][\"AssetListResponseDto\"]>;\nexport type AssetReadyEventData = Open<components[\"schemas\"][\"AssetReadyEventDataDto\"]>;\nexport type AssetRendition = Open<components[\"schemas\"][\"AssetRenditionDto\"]>;\nexport type Asset = Open<components[\"schemas\"][\"AssetResponseDto\"]>;\nexport type AssetUpload = Open<components[\"schemas\"][\"AssetUploadDto\"]>;\nexport type AuditList = Open<components[\"schemas\"][\"AuditListResponseDto\"]>;\nexport type BatchActorResult = Open<components[\"schemas\"][\"BatchActorResultDto\"]>;\nexport type BatchActors = Open<components[\"schemas\"][\"BatchActorsResponseDto\"]>;\nexport type BatchCounters = Open<components[\"schemas\"][\"BatchCountersResponseDto\"]>;\nexport type BatchFollowResult = Open<components[\"schemas\"][\"BatchFollowResultDto\"]>;\nexport type BatchFollows = Open<components[\"schemas\"][\"BatchFollowsResponseDto\"]>;\nexport type BatchItemError = Open<components[\"schemas\"][\"BatchItemErrorDto\"]>;\nexport type BlockedTermList = Open<components[\"schemas\"][\"BlockedTermListResponseDto\"]>;\nexport type BlockedTerm = Open<components[\"schemas\"][\"BlockedTermResponseDto\"]>;\nexport type BookmarkList = Open<components[\"schemas\"][\"BookmarkListResponseDto\"]>;\nexport type Bookmark = Open<components[\"schemas\"][\"BookmarkResponseDto\"]>;\nexport type BookmarkToggle = Open<components[\"schemas\"][\"BookmarkToggleResponseDto\"]>;\nexport type CloseFriendResponse = Open<components[\"schemas\"][\"CloseFriendResponse\"]>;\nexport type CloseFriendsListResponse = Open<components[\"schemas\"][\"CloseFriendsListResponse\"]>;\nexport type CollectionItemList = Open<components[\"schemas\"][\"CollectionItemListResponseDto\"]>;\nexport type CollectionItem = Open<components[\"schemas\"][\"CollectionItemResponseDto\"]>;\nexport type CollectionList = Open<components[\"schemas\"][\"CollectionListResponseDto\"]>;\nexport type Collection = Open<components[\"schemas\"][\"CollectionResponseDto\"]>;\nexport type CommentCreatedEventData = Open<components[\"schemas\"][\"CommentCreatedEventDataDto\"]>;\nexport type CommentDeletedEventData = Open<components[\"schemas\"][\"CommentDeletedEventDataDto\"]>;\nexport type CommentList = Open<components[\"schemas\"][\"CommentListResponseDto\"]>;\nexport type CommentReactionCounts = Open<components[\"schemas\"][\"CommentReactionCountsResponseDto\"]>;\nexport type CommentReactionCreatedEventData = Open<components[\"schemas\"][\"CommentReactionCreatedEventDataDto\"]>;\nexport type CommentReactionEntry = Open<components[\"schemas\"][\"CommentReactionEntryDto\"]>;\nexport type CommentReactionList = Open<components[\"schemas\"][\"CommentReactionListResponseDto\"]>;\nexport type Comment = Open<components[\"schemas\"][\"CommentResponseDto\"]>;\nexport type CommentUpdatedEventData = Open<components[\"schemas\"][\"CommentUpdatedEventDataDto\"]>;\nexport type CommunityAnalytics = Open<components[\"schemas\"][\"CommunityAnalyticsResponseDto\"]>;\nexport type CommunityList = Open<components[\"schemas\"][\"CommunityListResponseDto\"]>;\nexport type CommunityRankingSettings = Open<components[\"schemas\"][\"CommunityRankingSettingsDto\"]>;\nexport type CommunityRankingWeights = Open<components[\"schemas\"][\"CommunityRankingWeightsDto\"]>;\nexport type Community = Open<components[\"schemas\"][\"CommunityResponseDto\"]>;\nexport type CommunitySettings = Open<components[\"schemas\"][\"CommunitySettingsDto\"]>;\nexport type ConnectionResult = Open<components[\"schemas\"][\"ConnectionResultDto\"]>;\nexport type ConversationAdminList = Open<components[\"schemas\"][\"ConversationAdminListResponseDto\"]>;\nexport type ConversationAdmin = Open<components[\"schemas\"][\"ConversationAdminResponseDto\"]>;\nexport type ConversationList = Open<components[\"schemas\"][\"ConversationListResponseDto\"]>;\nexport type ConversationParticipant = Open<components[\"schemas\"][\"ConversationParticipantDto\"]>;\nexport type Conversation = Open<components[\"schemas\"][\"ConversationResponseDto\"]>;\nexport type CreateEdge = Open<components[\"schemas\"][\"CreateEdgeResponseDto\"]>;\nexport type CreateFlag = Open<components[\"schemas\"][\"CreateFlagResponseDto\"]>;\nexport type CreateRepost = Open<components[\"schemas\"][\"CreateRepostResponseDto\"]>;\nexport type DirectMessageAdminList = Open<components[\"schemas\"][\"DirectMessageAdminListResponseDto\"]>;\nexport type DirectMessageAdmin = Open<components[\"schemas\"][\"DirectMessageAdminResponseDto\"]>;\nexport type DirectMessageAttachment = Open<components[\"schemas\"][\"DirectMessageAttachmentDto\"]>;\nexport type DirectMessageList = Open<components[\"schemas\"][\"DirectMessageListResponseDto\"]>;\nexport type DirectMessageReactionCreated = Open<components[\"schemas\"][\"DirectMessageReactionCreatedResponseDto\"]>;\nexport type DirectMessageReactionList = Open<components[\"schemas\"][\"DirectMessageReactionListResponseDto\"]>;\nexport type DirectMessageReactionRemoved = Open<components[\"schemas\"][\"DirectMessageReactionRemovedResponseDto\"]>;\nexport type DirectMessageReaction = Open<components[\"schemas\"][\"DirectMessageReactionResponseDto\"]>;\nexport type DirectMessage = Open<components[\"schemas\"][\"DirectMessageResponseDto\"]>;\nexport type DmMessageCreatedEventData = Open<components[\"schemas\"][\"DmMessageCreatedEventDataDto\"]>;\nexport type DraftList = Open<components[\"schemas\"][\"DraftListResponseDto\"]>;\nexport type EdgeFollowCreatedEventData = Open<components[\"schemas\"][\"EdgeFollowCreatedEventDataDto\"]>;\nexport type EdgeFollowDeletedEventData = Open<components[\"schemas\"][\"EdgeFollowDeletedEventDataDto\"]>;\nexport type EdgeFollowRequestApprovedEventData = Open<components[\"schemas\"][\"EdgeFollowRequestApprovedEventDataDto\"]>;\nexport type EdgeFollowRequestedEventData = Open<components[\"schemas\"][\"EdgeFollowRequestedEventDataDto\"]>;\nexport type Edge = Open<components[\"schemas\"][\"EdgeResponseDto\"]>;\nexport type Feed = Open<components[\"schemas\"][\"FeedResponseDto\"]>;\nexport type FlagCreatedEventData = Open<components[\"schemas\"][\"FlagCreatedEventDataDto\"]>;\nexport type FlagList = Open<components[\"schemas\"][\"FlagListResponseDto\"]>;\nexport type Flag = Open<components[\"schemas\"][\"FlagResponseDto\"]>;\nexport type FlagUpdatedEventData = Open<components[\"schemas\"][\"FlagUpdatedEventDataDto\"]>;\nexport type FollowRequestEntry = Open<components[\"schemas\"][\"FollowRequestEntryDto\"]>;\nexport type FollowRequestList = Open<components[\"schemas\"][\"FollowRequestListResponseDto\"]>;\nexport type FollowResult = Open<components[\"schemas\"][\"FollowResultDto\"]>;\nexport type FollowerEdgeList = Open<components[\"schemas\"][\"FollowerEdgeListResponseDto\"]>;\nexport type FollowerEdge = Open<components[\"schemas\"][\"FollowerEdgeResponseDto\"]>;\nexport type HashtagAutocomplete = Open<components[\"schemas\"][\"HashtagAutocompleteResponseDto\"]>;\nexport type HashtagDetail = Open<components[\"schemas\"][\"HashtagDetailResponseDto\"]>;\nexport type HashtagFollowList = Open<components[\"schemas\"][\"HashtagFollowListResponseDto\"]>;\nexport type HashtagFollow = Open<components[\"schemas\"][\"HashtagFollowResponseDto\"]>;\nexport type HashtagList = Open<components[\"schemas\"][\"HashtagListResponseDto\"]>;\nexport type HashtagPostList = Open<components[\"schemas\"][\"HashtagPostListResponseDto\"]>;\nexport type Hashtag = Open<components[\"schemas\"][\"HashtagResponseDto\"]>;\nexport type HideEntry = Open<components[\"schemas\"][\"HideEntryDto\"]>;\nexport type HideList = Open<components[\"schemas\"][\"HideListResponseDto\"]>;\nexport type HideResult = Open<components[\"schemas\"][\"HideResultDto\"]>;\nexport type HighlightsResponse = Open<components[\"schemas\"][\"HighlightsResponse\"]>;\nexport type InsightsDailyBucket = Open<components[\"schemas\"][\"InsightsDailyBucketDto\"]>;\nexport type ListWebhookEndpoints = Open<components[\"schemas\"][\"ListWebhookEndpointsResponseDto\"]>;\nexport type ListWebhookEventTypes = Open<components[\"schemas\"][\"ListWebhookEventTypesResponseDto\"]>;\nexport type ListWebhookEvents = Open<components[\"schemas\"][\"ListWebhookEventsResponseDto\"]>;\nexport type MarkAllReadResponse = Open<components[\"schemas\"][\"MarkAllReadResponse\"]>;\nexport type MentionEntry = Open<components[\"schemas\"][\"MentionEntryResponseDto\"]>;\nexport type MentionList = Open<components[\"schemas\"][\"MentionListResponseDto\"]>;\nexport type ModerationActionAppliedEventData = Open<components[\"schemas\"][\"ModerationActionAppliedEventDataDto\"]>;\nexport type ModerationAction = Open<components[\"schemas\"][\"ModerationActionResponseDto\"]>;\nexport type ModerationActorList = Open<components[\"schemas\"][\"ModerationActorListResponseDto\"]>;\nexport type ModerationActor = Open<components[\"schemas\"][\"ModerationActorResponseDto\"]>;\nexport type MutedTermList = Open<components[\"schemas\"][\"MutedTermListResponseDto\"]>;\nexport type MutedTerm = Open<components[\"schemas\"][\"MutedTermResponseDto\"]>;\nexport type NotificationListResponse = Open<components[\"schemas\"][\"NotificationListResponse\"]>;\nexport type NotificationPrefList = Open<components[\"schemas\"][\"NotificationPrefListResponseDto\"]>;\nexport type NotificationPref = Open<components[\"schemas\"][\"NotificationPrefResponseDto\"]>;\nexport type NotificationResponse = Open<components[\"schemas\"][\"NotificationResponse\"]>;\nexport type OutboundEdgeList = Open<components[\"schemas\"][\"OutboundEdgeListResponseDto\"]>;\nexport type OutboundEdge = Open<components[\"schemas\"][\"OutboundEdgeResponseDto\"]>;\nexport type Pagination = Open<components[\"schemas\"][\"PaginationResponseDto\"]>;\nexport type ParticipantSummary = Open<components[\"schemas\"][\"ParticipantSummaryDto\"]>;\nexport type PollResultOptionResponse = Open<components[\"schemas\"][\"PollResultOptionResponse\"]>;\nexport type PollResultsResponse = Open<components[\"schemas\"][\"PollResultsResponse\"]>;\nexport type PollVoteResponse = Open<components[\"schemas\"][\"PollVoteResponse\"]>;\nexport type PollVoterResponse = Open<components[\"schemas\"][\"PollVoterResponse\"]>;\nexport type PollVotersResponse = Open<components[\"schemas\"][\"PollVotersResponse\"]>;\nexport type PostCreatedEventData = Open<components[\"schemas\"][\"PostCreatedEventDataDto\"]>;\nexport type PostDeletedEventData = Open<components[\"schemas\"][\"PostDeletedEventDataDto\"]>;\nexport type PostInsights = Open<components[\"schemas\"][\"PostInsightsResponseDto\"]>;\nexport type PostList = Open<components[\"schemas\"][\"PostListResponseDto\"]>;\nexport type PostReactionCreatedEventData = Open<components[\"schemas\"][\"PostReactionCreatedEventDataDto\"]>;\nexport type PostReactionEntry = Open<components[\"schemas\"][\"PostReactionEntryDto\"]>;\nexport type PostReactionList = Open<components[\"schemas\"][\"PostReactionListResponseDto\"]>;\nexport type Post = Open<components[\"schemas\"][\"PostResponseDto\"]>;\nexport type PostRevisionList = Open<components[\"schemas\"][\"PostRevisionListResponseDto\"]>;\nexport type PostRevision = Open<components[\"schemas\"][\"PostRevisionResponseDto\"]>;\nexport type PostSearchHit = Open<components[\"schemas\"][\"PostSearchHitDto\"]>;\nexport type PostSearch = Open<components[\"schemas\"][\"PostSearchResponseDto\"]>;\nexport type PostSettings = Open<components[\"schemas\"][\"PostSettingsDto\"]>;\nexport type PostState = Open<components[\"schemas\"][\"PostStateResponseDto\"]>;\nexport type PostTag = Open<components[\"schemas\"][\"PostTagResponseDto\"]>;\nexport type PostUpdatedEventData = Open<components[\"schemas\"][\"PostUpdatedEventDataDto\"]>;\nexport type PostViewerStateEntry = Open<components[\"schemas\"][\"PostViewerStateEntryDto\"]>;\nexport type ReactionCounts = Open<components[\"schemas\"][\"ReactionCountsResponseDto\"]>;\nexport type ReactionEdge = Open<components[\"schemas\"][\"ReactionEdgeResponseDto\"]>;\nexport type Reaction = Open<components[\"schemas\"][\"ReactionResponseDto\"]>;\nexport type RelationshipEntry = Open<components[\"schemas\"][\"RelationshipEntryDto\"]>;\nexport type RelationshipList = Open<components[\"schemas\"][\"RelationshipListResponseDto\"]>;\nexport type ReplayWebhookEvent = Open<components[\"schemas\"][\"ReplayWebhookEventResponseDto\"]>;\nexport type RepostCreatedEventData = Open<components[\"schemas\"][\"RepostCreatedEventDataDto\"]>;\nexport type RepostList = Open<components[\"schemas\"][\"RepostListResponseDto\"]>;\nexport type SocialStatsInWindow = Open<components[\"schemas\"][\"SocialStatsInWindowDto\"]>;\nexport type SocialStatsSeries = Open<components[\"schemas\"][\"SocialStatsSeriesDto\"]>;\nexport type SocialStatsSeriesPoint = Open<components[\"schemas\"][\"SocialStatsSeriesPointDto\"]>;\nexport type SocialStatsTotals = Open<components[\"schemas\"][\"SocialStatsTotalsDto\"]>;\nexport type SocialWorkspaceStats = Open<components[\"schemas\"][\"SocialWorkspaceStatsDto\"]>;\nexport type StoryTrayEntryResponse = Open<components[\"schemas\"][\"StoryTrayEntryResponse\"]>;\nexport type StoryTrayResponse = Open<components[\"schemas\"][\"StoryTrayResponse\"]>;\nexport type StoryViewerResponse = Open<components[\"schemas\"][\"StoryViewerResponse\"]>;\nexport type StoryViewersResponse = Open<components[\"schemas\"][\"StoryViewersResponse\"]>;\nexport type SuggestedFollow = Open<components[\"schemas\"][\"SuggestedFollowResponseDto\"]>;\nexport type SuggestedFollowsList = Open<components[\"schemas\"][\"SuggestedFollowsListResponseDto\"]>;\nexport type TagCreatedEventData = Open<components[\"schemas\"][\"TagCreatedEventDataDto\"]>;\nexport type TaggedPostsResponse = Open<components[\"schemas\"][\"TaggedPostsResponse\"]>;\nexport type UnreadCountResponse = Open<components[\"schemas\"][\"UnreadCountResponse\"]>;\nexport type UnreadCount = Open<components[\"schemas\"][\"UnreadCountResponseDto\"]>;\nexport type UploadAsset = Open<components[\"schemas\"][\"UploadAssetResponseDto\"]>;\nexport type UpsertActor = Open<components[\"schemas\"][\"UpsertActorResponseDto\"]>;\nexport type WebhookDeliveryAttempt = Open<components[\"schemas\"][\"WebhookDeliveryAttemptDto\"]>;\nexport type WebhookEndpoint = Open<components[\"schemas\"][\"WebhookEndpointDto\"]>;\nexport type WebhookEndpointWithSecret = Open<components[\"schemas\"][\"WebhookEndpointWithSecretDto\"]>;\nexport type WebhookEventDelivery = Open<components[\"schemas\"][\"WebhookEventDeliveryDto\"]>;\nexport type WebhookEventDetail = Open<components[\"schemas\"][\"WebhookEventDetailDto\"]>;\nexport type WebhookEvent = Open<components[\"schemas\"][\"WebhookEventDto\"]>;\nexport type WebhookEventTypeInfo = Open<components[\"schemas\"][\"WebhookEventTypeDto\"]>;\nexport type WebhookPagination = Open<components[\"schemas\"][\"WebhookPaginationDto\"]>;\n\n/** Params for `actors.list` (GET /v1/communities/{community_id}/actors). */\nexport type ActorListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.create` (POST /v1/communities/{community_id}/actors). */\nexport type ActorCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.batch` (POST /v1/communities/{community_id}/actors/batch). */\nexport type ActorBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.byExternal.batch` (POST /v1/communities/{community_id}/actors/by-external/batch). */\nexport type ActorByExternalBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/by-external/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}). */\nexport type ActorUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.archived.list` (GET /v1/communities/{community_id}/actors/{actor_id}/archived). */\nexport type ActorArchivedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/archived\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.assets.list` (GET /v1/communities/{community_id}/actors/{actor_id}/assets). */\nexport type ActorAssetListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/assets\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.blocks.list` (GET /v1/communities/{community_id}/actors/{actor_id}/blocks). */\nexport type ActorBlockListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/blocks\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.bookmarks.list` (GET /v1/communities/{community_id}/actors/{actor_id}/bookmarks). */\nexport type ActorBookmarkListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/bookmarks\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.closeFriends.list` (GET /v1/communities/{community_id}/actors/{actor_id}/close-friends). */\nexport type ActorCloseFriendListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/close-friends\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.dismissedSuggestions.list` (GET /v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions). */\nexport type ActorDismissedSuggestionListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/dismissed-suggestions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.drafts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/drafts). */\nexport type ActorDraftListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/drafts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.feed.list` (GET /v1/communities/{community_id}/actors/{actor_id}/feed). */\nexport type ActorFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.followRequests.list` (GET /v1/communities/{community_id}/actors/{actor_id}/follow-requests). */\nexport type ActorFollowRequestListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/follow-requests\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.followers.list` (GET /v1/communities/{community_id}/actors/{actor_id}/followers). */\nexport type ActorFollowerListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/followers\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.following.list` (GET /v1/communities/{community_id}/actors/{actor_id}/following). */\nexport type ActorFollowingListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/following\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.hashtagFollows.list` (GET /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows). */\nexport type ActorHashtagFollowListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.hashtagFollows.create` (POST /v1/communities/{community_id}/actors/{actor_id}/hashtag-follows). */\nexport type ActorHashtagFollowCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hashtag-follows\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.hides.list` (GET /v1/communities/{community_id}/actors/{actor_id}/hides). */\nexport type ActorHideListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/hides\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.insights` (GET /v1/communities/{community_id}/actors/{actor_id}/insights). */\nexport type ActorInsightsParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/insights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mentions.list` (GET /v1/communities/{community_id}/actors/{actor_id}/mentions). */\nexport type ActorMentionListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/mentions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mutedTerms.list` (GET /v1/communities/{community_id}/actors/{actor_id}/muted-terms). */\nexport type ActorMutedTermListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.mutedTerms.create` (POST /v1/communities/{community_id}/actors/{actor_id}/muted-terms). */\nexport type ActorMutedTermCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/muted-terms\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.mutes.list` (GET /v1/communities/{community_id}/actors/{actor_id}/mutes). */\nexport type ActorMuteListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/mutes\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.notificationPrefs.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}). */\nexport type ActorNotificationPrefUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notification-prefs/{kind}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.notifications.list` (GET /v1/communities/{community_id}/actors/{actor_id}/notifications). */\nexport type ActorNotificationListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.notifications.markAllRead` (POST /v1/communities/{community_id}/actors/{actor_id}/notifications/read-all). */\nexport type ActorNotificationMarkAllReadParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications/read-all\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.notifications.update` (PATCH /v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}). */\nexport type ActorNotificationUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/notifications/{notification_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.postState` (POST /v1/communities/{community_id}/actors/{actor_id}/post-state). */\nexport type ActorPostStateParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/post-state\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `actors.restricts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/restricts). */\nexport type ActorRestrictListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/restricts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.scheduledPosts.list` (GET /v1/communities/{community_id}/actors/{actor_id}/scheduled-posts). */\nexport type ActorScheduledPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/scheduled-posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.suggestedFollows.list` (GET /v1/communities/{community_id}/actors/{actor_id}/suggested-follows). */\nexport type ActorSuggestedFollowListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{actor_id}/suggested-follows\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.highlights.list` (GET /v1/communities/{community_id}/actors/{owner_actor_id}/highlights). */\nexport type ActorHighlightListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{owner_actor_id}/highlights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.relationships.list` (GET /v1/communities/{community_id}/actors/{src_actor_id}/relationships). */\nexport type ActorRelationshipListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{src_actor_id}/relationships\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `actors.tagged.list` (GET /v1/communities/{community_id}/actors/{tagged_actor_id}/tagged). */\nexport type ActorTaggedListParams = NonNullable<paths[\"/v1/communities/{community_id}/actors/{tagged_actor_id}/tagged\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `assets.create` (POST /v1/communities/{community_id}/assets). */\nexport type AssetCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/assets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `blocks.create` (POST /v1/communities/{community_id}/blocks). */\nexport type BlockCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/blocks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `closeFriends.create` (POST /v1/communities/{community_id}/close-friends). */\nexport type CloseFriendCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/close-friends\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.list` (GET /v1/communities/{community_id}/collections). */\nexport type CollectionListParams = NonNullable<paths[\"/v1/communities/{community_id}/collections\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.create` (POST /v1/communities/{community_id}/collections). */\nexport type CollectionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.retrieve` (GET /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.update` (PATCH /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.delete` (DELETE /v1/communities/{community_id}/collections/{collection_id}). */\nexport type CollectionDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"delete\"][\"parameters\"][\"query\"]> & NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.list` (GET /v1/communities/{community_id}/collections/{collection_id}/items). */\nexport type CollectionItemListParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `collections.items.create` (POST /v1/communities/{community_id}/collections/{collection_id}/items). */\nexport type CollectionItemCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.update` (PATCH /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}). */\nexport type CollectionItemUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `collections.items.delete` (DELETE /v1/communities/{community_id}/collections/{collection_id}/items/{post_id}). */\nexport type CollectionItemDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"delete\"][\"parameters\"][\"query\"]> & NonNullable<paths[\"/v1/communities/{community_id}/collections/{collection_id}/items/{post_id}\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `connections.create` (POST /v1/communities/{community_id}/connections). */\nexport type ConnectionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/connections\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.list` (GET /v1/communities/{community_id}/conversations). */\nexport type ConversationListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.create` (POST /v1/communities/{community_id}/conversations). */\nexport type ConversationCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.unreadCount` (GET /v1/communities/{community_id}/conversations/unread-count). */\nexport type ConversationUnreadCountParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/unread-count\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.retrieve` (GET /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}). */\nexport type ConversationDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.members.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/members). */\nexport type ConversationMemberCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.members.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}). */\nexport type ConversationMemberUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.members.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}). */\nexport type ConversationMemberDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/members/{member_actor_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.list` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages). */\nexport type ConversationMessageListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/messages). */\nexport type ConversationMessageCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.messages.retrieve` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.update` (PATCH /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.messages.delete` (DELETE /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}). */\nexport type ConversationMessageDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.reactions.list` (GET /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions). */\nexport type ConversationMessageReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `conversations.messages.reactions.create` (POST /v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions). */\nexport type ConversationMessageReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/messages/{message_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `conversations.markRead` (POST /v1/communities/{community_id}/conversations/{conversation_id}/read). */\nexport type ConversationMarkReadParams = NonNullable<paths[\"/v1/communities/{community_id}/conversations/{conversation_id}/read\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `counters.list` (GET /v1/communities/{community_id}/counters). */\nexport type CounterListParams = NonNullable<paths[\"/v1/communities/{community_id}/counters\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `discoverFeed.list` (GET /v1/communities/{community_id}/discover-feed). */\nexport type DiscoverFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/discover-feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `dismissedSuggestions.create` (POST /v1/communities/{community_id}/dismissed-suggestions). */\nexport type DismissedSuggestionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/dismissed-suggestions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `flags.list` (GET /v1/communities/{community_id}/flags). */\nexport type FlagListParams = NonNullable<paths[\"/v1/communities/{community_id}/flags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `flags.create` (POST /v1/communities/{community_id}/flags). */\nexport type FlagCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/flags\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `follows.create` (POST /v1/communities/{community_id}/follows). */\nexport type FollowCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/follows\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `follows.batch` (POST /v1/communities/{community_id}/follows/batch). */\nexport type FollowBatchParams = NonNullable<paths[\"/v1/communities/{community_id}/follows/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `hashtags.list` (GET /v1/communities/{community_id}/hashtags). */\nexport type HashtagListParams = NonNullable<paths[\"/v1/communities/{community_id}/hashtags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `hashtags.posts.list` (GET /v1/communities/{community_id}/hashtags/{tag}/posts). */\nexport type HashtagPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/hashtags/{tag}/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `hides.create` (POST /v1/communities/{community_id}/hides). */\nexport type HideCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/hides\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.list` (GET /v1/communities/{community_id}/lists). */\nexport type ListListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.create` (POST /v1/communities/{community_id}/lists). */\nexport type ListCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.retrieve` (GET /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.update` (PATCH /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.delete` (DELETE /v1/communities/{community_id}/lists/{list_id}). */\nexport type ListDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.feed.list` (GET /v1/communities/{community_id}/lists/{list_id}/feed). */\nexport type ListFeedListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/feed\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.members.list` (GET /v1/communities/{community_id}/lists/{list_id}/members). */\nexport type ListMemberListParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `lists.members.create` (POST /v1/communities/{community_id}/lists/{list_id}/members). */\nexport type ListMemberCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `lists.members.delete` (DELETE /v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}). */\nexport type ListMemberDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/lists/{list_id}/members/{member_actor_id}\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `mutes.create` (POST /v1/communities/{community_id}/mutes). */\nexport type MuteCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/mutes\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.list` (GET /v1/communities/{community_id}/posts). */\nexport type PostListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.create` (POST /v1/communities/{community_id}/posts). */\nexport type PostCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.recordImpressions` (POST /v1/communities/{community_id}/posts/impressions). */\nexport type PostRecordImpressionsParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/impressions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.retrieve` (GET /v1/communities/{community_id}/posts/{post_id}). */\nexport type PostRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.update` (PATCH /v1/communities/{community_id}/posts/{post_id}). */\nexport type PostUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.bookmark` (POST /v1/communities/{community_id}/posts/{post_id}/bookmark). */\nexport type PostBookmarkParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/bookmark\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.unbookmark` (DELETE /v1/communities/{community_id}/posts/{post_id}/bookmark). */\nexport type PostUnbookmarkParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/bookmark\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.list` (GET /v1/communities/{community_id}/posts/{post_id}/comments). */\nexport type PostCommentListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.create` (POST /v1/communities/{community_id}/posts/{post_id}/comments). */\nexport type PostCommentCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.retrieve` (GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}). */\nexport type PostCommentRetrieveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.update` (PATCH /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}). */\nexport type PostCommentUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.approve` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve). */\nexport type PostCommentApproveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.pin` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin). */\nexport type PostCommentPinParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.unpin` (DELETE /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin). */\nexport type PostCommentUnpinParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/pin\"][\"delete\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.comments.reactions.list` (GET /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions). */\nexport type PostCommentReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.comments.reactions.create` (POST /v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions). */\nexport type PostCommentReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/comments/{comment_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.insights` (GET /v1/communities/{community_id}/posts/{post_id}/insights). */\nexport type PostInsightsParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/insights\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.quotes.list` (GET /v1/communities/{community_id}/posts/{post_id}/quotes). */\nexport type PostQuoteListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/quotes\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reactions.list` (GET /v1/communities/{community_id}/posts/{post_id}/reactions). */\nexport type PostReactionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reactions.create` (POST /v1/communities/{community_id}/posts/{post_id}/reactions). */\nexport type PostReactionCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reactions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.repost` (POST /v1/communities/{community_id}/posts/{post_id}/repost). */\nexport type PostRepostParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/repost\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.unrepost` (DELETE /v1/communities/{community_id}/posts/{post_id}/repost). */\nexport type PostUnrepostParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/repost\"][\"delete\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.reposts.list` (GET /v1/communities/{community_id}/posts/{post_id}/reposts). */\nexport type PostRepostListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/reposts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.revisions.list` (GET /v1/communities/{community_id}/posts/{post_id}/revisions). */\nexport type PostRevisionListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/revisions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.tags.approve` (POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve). */\nexport type PostTagApproveParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.tags.delete` (POST /v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove). */\nexport type PostTagDeleteParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/tags/{tagged_actor_id}/remove\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.viewers.list` (GET /v1/communities/{community_id}/posts/{post_id}/viewers). */\nexport type PostViewerListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/viewers\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.recordView` (POST /v1/communities/{community_id}/posts/{post_id}/views). */\nexport type PostRecordViewParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/views\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `posts.voters.list` (GET /v1/communities/{community_id}/posts/{post_id}/voters). */\nexport type PostVoterListParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/voters\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `posts.votes.create` (POST /v1/communities/{community_id}/posts/{post_id}/votes). */\nexport type PostVoteCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/posts/{post_id}/votes\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `restricts.create` (POST /v1/communities/{community_id}/restricts). */\nexport type RestrictCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/restricts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `search.actors.list` (GET /v1/communities/{community_id}/search/actors). */\nexport type SearchActorListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/actors\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `search.hashtags.list` (GET /v1/communities/{community_id}/search/hashtags). */\nexport type SearchHashtagListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/hashtags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `search.posts.list` (GET /v1/communities/{community_id}/search/posts). */\nexport type SearchPostListParams = NonNullable<paths[\"/v1/communities/{community_id}/search/posts\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.endpoints.create` (POST /v1/communities/{community_id}/webhooks/endpoints). */\nexport type CommunityScopedWebhookEndpointCreateParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.update` (PATCH /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}). */\nexport type CommunityScopedWebhookEndpointUpdateParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.rotateSecret` (POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type CommunityScopedWebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.test` (POST /v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type CommunityScopedWebhookEndpointTestParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.events.list` (GET /v1/communities/{community_id}/webhooks/events). */\nexport type CommunityScopedWebhookEventListParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.events.replay` (POST /v1/communities/{community_id}/webhooks/events/{event_id}/replay). */\nexport type CommunityScopedWebhookEventReplayParams = NonNullable<paths[\"/v1/communities/{community_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.list` (GET /v1/workspaces/{workspace_id}/communities). */\nexport type CommunityListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.create` (POST /v1/workspaces/{workspace_id}/communities). */\nexport type CommunityCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.update` (PATCH /v1/workspaces/{workspace_id}/communities/{community_id}). */\nexport type CommunityUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.actors.comments.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments). */\nexport type CommunityActorCommentListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/comments\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.actors.reactions.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions). */\nexport type CommunityActorReactionListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/actors/{actor_id}/reactions\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.actions.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions). */\nexport type CommunityModerationActionCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.actors.shadowBan` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban). */\nexport type CommunityModerationActorShadowBanParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/actors/{actor_id}/shadow-ban\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.audit.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit). */\nexport type CommunityModerationAuditListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/audit\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.blockedTerms.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms). */\nexport type CommunityModerationBlockedTermListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.blockedTerms.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms). */\nexport type CommunityModerationBlockedTermCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/blocked-terms\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.conversations.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations). */\nexport type CommunityModerationConversationListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.conversations.messages.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages). */\nexport type CommunityModerationConversationMessageListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/conversations/{conversation_id}/messages\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.flags.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags). */\nexport type CommunityModerationFlagListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.moderation.flags.resolve` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions). */\nexport type CommunityModerationFlagResolveParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/flags/{flag_id}/actions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.moderation.shadowBanned.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned). */\nexport type CommunityModerationShadowBannedListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/moderation/shadow-banned\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.webhooks.endpoints.create` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints). */\nexport type CommunityWebhookEndpointCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.update` (PATCH /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}). */\nexport type CommunityWebhookEndpointUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.rotateSecret` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type CommunityWebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.endpoints.test` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type CommunityWebhookEndpointTestParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `communities.webhooks.events.list` (GET /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events). */\nexport type CommunityWebhookEventListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `communities.webhooks.events.replay` (POST /v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay). */\nexport type CommunityWebhookEventReplayParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/communities/{community_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n/** Params for `stats.retrieve` (GET /v1/workspaces/{workspace_id}/stats). */\nexport type StatsRetrieveParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/stats\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.endpoints.create` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints). */\nexport type WebhookEndpointCreateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.update` (PATCH /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}). */\nexport type WebhookEndpointUpdateParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.rotateSecret` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret). */\nexport type WebhookEndpointRotateSecretParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/rotate-secret\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.endpoints.test` (POST /v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test). */\nexport type WebhookEndpointTestParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/endpoints/{endpoint_id}/test\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n/** Params for `webhooks.events.list` (GET /v1/workspaces/{workspace_id}/webhooks/events). */\nexport type WebhookEventListParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/events\"][\"get\"][\"parameters\"][\"query\"]>;\n/** Params for `webhooks.events.replay` (POST /v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay). */\nexport type WebhookEventReplayParams = NonNullable<paths[\"/v1/workspaces/{workspace_id}/webhooks/events/{event_id}/replay\"][\"post\"][\"parameters\"][\"query\"]>;\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nimport { APIClient, createOpenAPIClient, PC_BASE_URL, type ClientOptions, type PollOptions as CorePollOptions, type RequestOptions as CoreRequestOptions } from \"@productcraft/core\";\nimport type { Client } from \"openapi-fetch\";\nimport type * as E from \"./errors.js\";\nimport type { paths } from \"./paths.js\";\nimport { SocialCommunity, SocialResources } from \"./resources.js\";\nimport * as T from \"./types.js\";\nimport type * as W from \"./webhooks.js\";\n\ndeclare const __PC_SDK_VERSION__: string | undefined;\nconst VERSION = typeof __PC_SDK_VERSION__ === \"string\" ? __PC_SDK_VERSION__ : \"0.0.0-dev\";\n\n/**\n * ProductCraft Social API client (communities, actors, posts, feeds, conversations, notifications and moderation). Every method is generated from the API's OpenAPI document.\n *\n * @example\n * ```ts\n * import { Social } from \"@productcraft/social\";\n * const social = new Social({ apiKey: process.env.PRODUCTCRAFT_API_KEY });\n * ```\n */\n\nexport class Social extends SocialResources {\n #openapi?: Client<paths>;\n constructor(options: ClientOptions = {}) {\n super(new APIClient(options, PC_BASE_URL.social, { name: \"social\", version: VERSION }));\n }\n /** The typed `openapi-fetch` escape hatch over the same credential and base URL. It does not retry. */\n get client(): Client<paths> {\n return (this.#openapi ??= createOpenAPIClient<paths>(this._client));\n }\n /**\n * Calls scoped to one community. Chain `.as(actorId)` to act as one of its actors: `actor_id` is filled in every body or query that declares it.\n * @param communityId - `{community_id}`\n */\n community(communityId: string): SocialCommunity {\n return new SocialCommunity(this._client, { community_id: communityId });\n }\n}\n\ntype __RequestOptions = CoreRequestOptions;\ntype __PollOptions = CorePollOptions;\ntype __ActorListVisibility = T.ActorListVisibility;\ntype __ActorStatus = T.ActorStatus;\ntype __AssetKind = T.AssetKind;\ntype __AssetRenditionName = T.AssetRenditionName;\ntype __AssetStatus = T.AssetStatus;\ntype __AssetUploadMethod = T.AssetUploadMethod;\ntype __BlockedTermAction = T.BlockedTermAction;\ntype __CollectionKind = T.CollectionKind;\ntype __CollectionVisibility = T.CollectionVisibility;\ntype __CommentPolicy = T.CommentPolicy;\ntype __CommentStatus = T.CommentStatus;\ntype __CommentVisibility = T.CommentVisibility;\ntype __CommunityStatus = T.CommunityStatus;\ntype __ConnectionStatus = T.ConnectionStatus;\ntype __ConversationKind = T.ConversationKind;\ntype __ConversationRole = T.ConversationRole;\ntype __DirectMessageKind = T.DirectMessageKind;\ntype __EdgeKind = T.EdgeKind;\ntype __FlagStatus = T.FlagStatus;\ntype __FollowStatus = T.FollowStatus;\ntype __MentionSource = T.MentionSource;\ntype __ModerationActionType = T.ModerationActionType;\ntype __ModerationTargetKind = T.ModerationTargetKind;\ntype __MutedTermAction = T.MutedTermAction;\ntype __MutedTermScope = T.MutedTermScope;\ntype __NotificationKind = T.NotificationKind;\ntype __NotificationTargetKind = T.NotificationTargetKind;\ntype __PostStatus = T.PostStatus;\ntype __PostTagState = T.PostTagState;\ntype __PostVisibility = T.PostVisibility;\ntype __ReactionTargetType = T.ReactionTargetType;\ntype __SocialStatsMetric = T.SocialStatsMetric;\ntype __StatsGranularity = T.StatsGranularity;\ntype __StatsWindow = T.StatsWindow;\ntype __SuggestionReason = T.SuggestionReason;\ntype __WebhookAttemptTrigger = T.WebhookAttemptTrigger;\ntype __WebhookEndpointDisabledReason = T.WebhookEndpointDisabledReason;\ntype __WebhookEndpointStatus = T.WebhookEndpointStatus;\ntype __WebhookEventStatus = T.WebhookEventStatus;\ntype __WebhookEventType = T.WebhookEventType;\ntype __ActOnFlag = T.ActOnFlag;\ntype __ActorComments = T.ActorComments;\ntype __ActorCounters = T.ActorCounters;\ntype __ActorFollowerPoint = T.ActorFollowerPoint;\ntype __ActorInsights = T.ActorInsights;\ntype __ActorListList = T.ActorListList;\ntype __ActorListMemberList = T.ActorListMemberList;\ntype __ActorListMember = T.ActorListMember;\ntype __ActorList = T.ActorList;\ntype __ActorPage = T.ActorPage;\ntype __ActorReactionEntry = T.ActorReactionEntry;\ntype __ActorReactions = T.ActorReactions;\ntype __Actor = T.Actor;\ntype __ActorSearchHit = T.ActorSearchHit;\ntype __ActorSearch = T.ActorSearch;\ntype __ActorSummary = T.ActorSummary;\ntype __ActorUpdatedEventData = T.ActorUpdatedEventData;\ntype __ActorsByExternalBatch = T.ActorsByExternalBatch;\ntype __AddCommentReaction = T.AddCommentReaction;\ntype __AssetAttachment = T.AssetAttachment;\ntype __AssetFailedEventData = T.AssetFailedEventData;\ntype __AssetList = T.AssetList;\ntype __AssetReadyEventData = T.AssetReadyEventData;\ntype __AssetRendition = T.AssetRendition;\ntype __Asset = T.Asset;\ntype __AssetUpload = T.AssetUpload;\ntype __AuditList = T.AuditList;\ntype __BatchActorResult = T.BatchActorResult;\ntype __BatchActors = T.BatchActors;\ntype __BatchCounters = T.BatchCounters;\ntype __BatchFollowResult = T.BatchFollowResult;\ntype __BatchFollows = T.BatchFollows;\ntype __BatchItemError = T.BatchItemError;\ntype __BlockedTermList = T.BlockedTermList;\ntype __BlockedTerm = T.BlockedTerm;\ntype __BookmarkList = T.BookmarkList;\ntype __Bookmark = T.Bookmark;\ntype __BookmarkToggle = T.BookmarkToggle;\ntype __CloseFriendResponse = T.CloseFriendResponse;\ntype __CloseFriendsListResponse = T.CloseFriendsListResponse;\ntype __CollectionItemList = T.CollectionItemList;\ntype __CollectionItem = T.CollectionItem;\ntype __CollectionList = T.CollectionList;\ntype __Collection = T.Collection;\ntype __CommentCreatedEventData = T.CommentCreatedEventData;\ntype __CommentDeletedEventData = T.CommentDeletedEventData;\ntype __CommentList = T.CommentList;\ntype __CommentReactionCounts = T.CommentReactionCounts;\ntype __CommentReactionCreatedEventData = T.CommentReactionCreatedEventData;\ntype __CommentReactionEntry = T.CommentReactionEntry;\ntype __CommentReactionList = T.CommentReactionList;\ntype __Comment = T.Comment;\ntype __CommentUpdatedEventData = T.CommentUpdatedEventData;\ntype __CommunityAnalytics = T.CommunityAnalytics;\ntype __CommunityList = T.CommunityList;\ntype __CommunityRankingSettings = T.CommunityRankingSettings;\ntype __CommunityRankingWeights = T.CommunityRankingWeights;\ntype __Community = T.Community;\ntype __CommunitySettings = T.CommunitySettings;\ntype __ConnectionResult = T.ConnectionResult;\ntype __ConversationAdminList = T.ConversationAdminList;\ntype __ConversationAdmin = T.ConversationAdmin;\ntype __ConversationList = T.ConversationList;\ntype __ConversationParticipant = T.ConversationParticipant;\ntype __Conversation = T.Conversation;\ntype __CreateEdge = T.CreateEdge;\ntype __CreateFlag = T.CreateFlag;\ntype __CreateRepost = T.CreateRepost;\ntype __DirectMessageAdminList = T.DirectMessageAdminList;\ntype __DirectMessageAdmin = T.DirectMessageAdmin;\ntype __DirectMessageAttachment = T.DirectMessageAttachment;\ntype __DirectMessageList = T.DirectMessageList;\ntype __DirectMessageReactionCreated = T.DirectMessageReactionCreated;\ntype __DirectMessageReactionList = T.DirectMessageReactionList;\ntype __DirectMessageReactionRemoved = T.DirectMessageReactionRemoved;\ntype __DirectMessageReaction = T.DirectMessageReaction;\ntype __DirectMessage = T.DirectMessage;\ntype __DmMessageCreatedEventData = T.DmMessageCreatedEventData;\ntype __DraftList = T.DraftList;\ntype __EdgeFollowCreatedEventData = T.EdgeFollowCreatedEventData;\ntype __EdgeFollowDeletedEventData = T.EdgeFollowDeletedEventData;\ntype __EdgeFollowRequestApprovedEventData = T.EdgeFollowRequestApprovedEventData;\ntype __EdgeFollowRequestedEventData = T.EdgeFollowRequestedEventData;\ntype __Edge = T.Edge;\ntype __Feed = T.Feed;\ntype __FlagCreatedEventData = T.FlagCreatedEventData;\ntype __FlagList = T.FlagList;\ntype __Flag = T.Flag;\ntype __FlagUpdatedEventData = T.FlagUpdatedEventData;\ntype __FollowRequestEntry = T.FollowRequestEntry;\ntype __FollowRequestList = T.FollowRequestList;\ntype __FollowResult = T.FollowResult;\ntype __FollowerEdgeList = T.FollowerEdgeList;\ntype __FollowerEdge = T.FollowerEdge;\ntype __HashtagAutocomplete = T.HashtagAutocomplete;\ntype __HashtagDetail = T.HashtagDetail;\ntype __HashtagFollowList = T.HashtagFollowList;\ntype __HashtagFollow = T.HashtagFollow;\ntype __HashtagList = T.HashtagList;\ntype __HashtagPostList = T.HashtagPostList;\ntype __Hashtag = T.Hashtag;\ntype __HideEntry = T.HideEntry;\ntype __HideList = T.HideList;\ntype __HideResult = T.HideResult;\ntype __HighlightsResponse = T.HighlightsResponse;\ntype __InsightsDailyBucket = T.InsightsDailyBucket;\ntype __ListWebhookEndpoints = T.ListWebhookEndpoints;\ntype __ListWebhookEventTypes = T.ListWebhookEventTypes;\ntype __ListWebhookEvents = T.ListWebhookEvents;\ntype __MarkAllReadResponse = T.MarkAllReadResponse;\ntype __MentionEntry = T.MentionEntry;\ntype __MentionList = T.MentionList;\ntype __ModerationActionAppliedEventData = T.ModerationActionAppliedEventData;\ntype __ModerationAction = T.ModerationAction;\ntype __ModerationActorList = T.ModerationActorList;\ntype __ModerationActor = T.ModerationActor;\ntype __MutedTermList = T.MutedTermList;\ntype __MutedTerm = T.MutedTerm;\ntype __NotificationListResponse = T.NotificationListResponse;\ntype __NotificationPrefList = T.NotificationPrefList;\ntype __NotificationPref = T.NotificationPref;\ntype __NotificationResponse = T.NotificationResponse;\ntype __OutboundEdgeList = T.OutboundEdgeList;\ntype __OutboundEdge = T.OutboundEdge;\ntype __Pagination = T.Pagination;\ntype __ParticipantSummary = T.ParticipantSummary;\ntype __PollResultOptionResponse = T.PollResultOptionResponse;\ntype __PollResultsResponse = T.PollResultsResponse;\ntype __PollVoteResponse = T.PollVoteResponse;\ntype __PollVoterResponse = T.PollVoterResponse;\ntype __PollVotersResponse = T.PollVotersResponse;\ntype __PostCreatedEventData = T.PostCreatedEventData;\ntype __PostDeletedEventData = T.PostDeletedEventData;\ntype __PostInsights = T.PostInsights;\ntype __PostList = T.PostList;\ntype __PostReactionCreatedEventData = T.PostReactionCreatedEventData;\ntype __PostReactionEntry = T.PostReactionEntry;\ntype __PostReactionList = T.PostReactionList;\ntype __Post = T.Post;\ntype __PostRevisionList = T.PostRevisionList;\ntype __PostRevision = T.PostRevision;\ntype __PostSearchHit = T.PostSearchHit;\ntype __PostSearch = T.PostSearch;\ntype __PostSettings = T.PostSettings;\ntype __PostState = T.PostState;\ntype __PostTag = T.PostTag;\ntype __PostUpdatedEventData = T.PostUpdatedEventData;\ntype __PostViewerStateEntry = T.PostViewerStateEntry;\ntype __ReactionCounts = T.ReactionCounts;\ntype __ReactionEdge = T.ReactionEdge;\ntype __Reaction = T.Reaction;\ntype __RelationshipEntry = T.RelationshipEntry;\ntype __RelationshipList = T.RelationshipList;\ntype __ReplayWebhookEvent = T.ReplayWebhookEvent;\ntype __RepostCreatedEventData = T.RepostCreatedEventData;\ntype __RepostList = T.RepostList;\ntype __SocialStatsInWindow = T.SocialStatsInWindow;\ntype __SocialStatsSeries = T.SocialStatsSeries;\ntype __SocialStatsSeriesPoint = T.SocialStatsSeriesPoint;\ntype __SocialStatsTotals = T.SocialStatsTotals;\ntype __SocialWorkspaceStats = T.SocialWorkspaceStats;\ntype __StoryTrayEntryResponse = T.StoryTrayEntryResponse;\ntype __StoryTrayResponse = T.StoryTrayResponse;\ntype __StoryViewerResponse = T.StoryViewerResponse;\ntype __StoryViewersResponse = T.StoryViewersResponse;\ntype __SuggestedFollow = T.SuggestedFollow;\ntype __SuggestedFollowsList = T.SuggestedFollowsList;\ntype __TagCreatedEventData = T.TagCreatedEventData;\ntype __TaggedPostsResponse = T.TaggedPostsResponse;\ntype __UnreadCountResponse = T.UnreadCountResponse;\ntype __UnreadCount = T.UnreadCount;\ntype __UploadAsset = T.UploadAsset;\ntype __UpsertActor = T.UpsertActor;\ntype __WebhookDeliveryAttempt = T.WebhookDeliveryAttempt;\ntype __WebhookEndpoint = T.WebhookEndpoint;\ntype __WebhookEndpointWithSecret = T.WebhookEndpointWithSecret;\ntype __WebhookEventDelivery = T.WebhookEventDelivery;\ntype __WebhookEventDetail = T.WebhookEventDetail;\ntype __WebhookEvent = T.WebhookEvent;\ntype __WebhookEventTypeInfo = T.WebhookEventTypeInfo;\ntype __WebhookPagination = T.WebhookPagination;\ntype __ActorListParams = T.ActorListParams;\ntype __ActorCreateParams = T.ActorCreateParams;\ntype __ActorBatchParams = T.ActorBatchParams;\ntype __ActorByExternalBatchParams = T.ActorByExternalBatchParams;\ntype __ActorUpdateParams = T.ActorUpdateParams;\ntype __ActorArchivedListParams = T.ActorArchivedListParams;\ntype __ActorAssetListParams = T.ActorAssetListParams;\ntype __ActorBlockListParams = T.ActorBlockListParams;\ntype __ActorBookmarkListParams = T.ActorBookmarkListParams;\ntype __ActorCloseFriendListParams = T.ActorCloseFriendListParams;\ntype __ActorDismissedSuggestionListParams = T.ActorDismissedSuggestionListParams;\ntype __ActorDraftListParams = T.ActorDraftListParams;\ntype __ActorFeedListParams = T.ActorFeedListParams;\ntype __ActorFollowRequestListParams = T.ActorFollowRequestListParams;\ntype __ActorFollowerListParams = T.ActorFollowerListParams;\ntype __ActorFollowingListParams = T.ActorFollowingListParams;\ntype __ActorHashtagFollowListParams = T.ActorHashtagFollowListParams;\ntype __ActorHashtagFollowCreateParams = T.ActorHashtagFollowCreateParams;\ntype __ActorHideListParams = T.ActorHideListParams;\ntype __ActorInsightsParams = T.ActorInsightsParams;\ntype __ActorMentionListParams = T.ActorMentionListParams;\ntype __ActorMutedTermListParams = T.ActorMutedTermListParams;\ntype __ActorMutedTermCreateParams = T.ActorMutedTermCreateParams;\ntype __ActorMuteListParams = T.ActorMuteListParams;\ntype __ActorNotificationPrefUpdateParams = T.ActorNotificationPrefUpdateParams;\ntype __ActorNotificationListParams = T.ActorNotificationListParams;\ntype __ActorNotificationMarkAllReadParams = T.ActorNotificationMarkAllReadParams;\ntype __ActorNotificationUpdateParams = T.ActorNotificationUpdateParams;\ntype __ActorPostStateParams = T.ActorPostStateParams;\ntype __ActorRestrictListParams = T.ActorRestrictListParams;\ntype __ActorScheduledPostListParams = T.ActorScheduledPostListParams;\ntype __ActorSuggestedFollowListParams = T.ActorSuggestedFollowListParams;\ntype __ActorHighlightListParams = T.ActorHighlightListParams;\ntype __ActorRelationshipListParams = T.ActorRelationshipListParams;\ntype __ActorTaggedListParams = T.ActorTaggedListParams;\ntype __AssetCreateParams = T.AssetCreateParams;\ntype __BlockCreateParams = T.BlockCreateParams;\ntype __CloseFriendCreateParams = T.CloseFriendCreateParams;\ntype __CollectionListParams = T.CollectionListParams;\ntype __CollectionCreateParams = T.CollectionCreateParams;\ntype __CollectionRetrieveParams = T.CollectionRetrieveParams;\ntype __CollectionUpdateParams = T.CollectionUpdateParams;\ntype __CollectionDeleteParams = T.CollectionDeleteParams;\ntype __CollectionItemListParams = T.CollectionItemListParams;\ntype __CollectionItemCreateParams = T.CollectionItemCreateParams;\ntype __CollectionItemUpdateParams = T.CollectionItemUpdateParams;\ntype __CollectionItemDeleteParams = T.CollectionItemDeleteParams;\ntype __ConnectionCreateParams = T.ConnectionCreateParams;\ntype __ConversationListParams = T.ConversationListParams;\ntype __ConversationCreateParams = T.ConversationCreateParams;\ntype __ConversationUnreadCountParams = T.ConversationUnreadCountParams;\ntype __ConversationRetrieveParams = T.ConversationRetrieveParams;\ntype __ConversationUpdateParams = T.ConversationUpdateParams;\ntype __ConversationDeleteParams = T.ConversationDeleteParams;\ntype __ConversationMemberCreateParams = T.ConversationMemberCreateParams;\ntype __ConversationMemberUpdateParams = T.ConversationMemberUpdateParams;\ntype __ConversationMemberDeleteParams = T.ConversationMemberDeleteParams;\ntype __ConversationMessageListParams = T.ConversationMessageListParams;\ntype __ConversationMessageCreateParams = T.ConversationMessageCreateParams;\ntype __ConversationMessageRetrieveParams = T.ConversationMessageRetrieveParams;\ntype __ConversationMessageUpdateParams = T.ConversationMessageUpdateParams;\ntype __ConversationMessageDeleteParams = T.ConversationMessageDeleteParams;\ntype __ConversationMessageReactionListParams = T.ConversationMessageReactionListParams;\ntype __ConversationMessageReactionCreateParams = T.ConversationMessageReactionCreateParams;\ntype __ConversationMarkReadParams = T.ConversationMarkReadParams;\ntype __CounterListParams = T.CounterListParams;\ntype __DiscoverFeedListParams = T.DiscoverFeedListParams;\ntype __DismissedSuggestionCreateParams = T.DismissedSuggestionCreateParams;\ntype __FlagListParams = T.FlagListParams;\ntype __FlagCreateParams = T.FlagCreateParams;\ntype __FollowCreateParams = T.FollowCreateParams;\ntype __FollowBatchParams = T.FollowBatchParams;\ntype __HashtagListParams = T.HashtagListParams;\ntype __HashtagPostListParams = T.HashtagPostListParams;\ntype __HideCreateParams = T.HideCreateParams;\ntype __ListListParams = T.ListListParams;\ntype __ListCreateParams = T.ListCreateParams;\ntype __ListRetrieveParams = T.ListRetrieveParams;\ntype __ListUpdateParams = T.ListUpdateParams;\ntype __ListDeleteParams = T.ListDeleteParams;\ntype __ListFeedListParams = T.ListFeedListParams;\ntype __ListMemberListParams = T.ListMemberListParams;\ntype __ListMemberCreateParams = T.ListMemberCreateParams;\ntype __ListMemberDeleteParams = T.ListMemberDeleteParams;\ntype __MuteCreateParams = T.MuteCreateParams;\ntype __PostListParams = T.PostListParams;\ntype __PostCreateParams = T.PostCreateParams;\ntype __PostRecordImpressionsParams = T.PostRecordImpressionsParams;\ntype __PostRetrieveParams = T.PostRetrieveParams;\ntype __PostUpdateParams = T.PostUpdateParams;\ntype __PostBookmarkParams = T.PostBookmarkParams;\ntype __PostUnbookmarkParams = T.PostUnbookmarkParams;\ntype __PostCommentListParams = T.PostCommentListParams;\ntype __PostCommentCreateParams = T.PostCommentCreateParams;\ntype __PostCommentRetrieveParams = T.PostCommentRetrieveParams;\ntype __PostCommentUpdateParams = T.PostCommentUpdateParams;\ntype __PostCommentApproveParams = T.PostCommentApproveParams;\ntype __PostCommentPinParams = T.PostCommentPinParams;\ntype __PostCommentUnpinParams = T.PostCommentUnpinParams;\ntype __PostCommentReactionListParams = T.PostCommentReactionListParams;\ntype __PostCommentReactionCreateParams = T.PostCommentReactionCreateParams;\ntype __PostInsightsParams = T.PostInsightsParams;\ntype __PostQuoteListParams = T.PostQuoteListParams;\ntype __PostReactionListParams = T.PostReactionListParams;\ntype __PostReactionCreateParams = T.PostReactionCreateParams;\ntype __PostRepostParams = T.PostRepostParams;\ntype __PostUnrepostParams = T.PostUnrepostParams;\ntype __PostRepostListParams = T.PostRepostListParams;\ntype __PostRevisionListParams = T.PostRevisionListParams;\ntype __PostTagApproveParams = T.PostTagApproveParams;\ntype __PostTagDeleteParams = T.PostTagDeleteParams;\ntype __PostViewerListParams = T.PostViewerListParams;\ntype __PostRecordViewParams = T.PostRecordViewParams;\ntype __PostVoterListParams = T.PostVoterListParams;\ntype __PostVoteCreateParams = T.PostVoteCreateParams;\ntype __RestrictCreateParams = T.RestrictCreateParams;\ntype __SearchActorListParams = T.SearchActorListParams;\ntype __SearchHashtagListParams = T.SearchHashtagListParams;\ntype __SearchPostListParams = T.SearchPostListParams;\ntype __CommunityScopedWebhookEndpointCreateParams = T.CommunityScopedWebhookEndpointCreateParams;\ntype __CommunityScopedWebhookEndpointUpdateParams = T.CommunityScopedWebhookEndpointUpdateParams;\ntype __CommunityScopedWebhookEndpointRotateSecretParams = T.CommunityScopedWebhookEndpointRotateSecretParams;\ntype __CommunityScopedWebhookEndpointTestParams = T.CommunityScopedWebhookEndpointTestParams;\ntype __CommunityScopedWebhookEventListParams = T.CommunityScopedWebhookEventListParams;\ntype __CommunityScopedWebhookEventReplayParams = T.CommunityScopedWebhookEventReplayParams;\ntype __CommunityListParams = T.CommunityListParams;\ntype __CommunityCreateParams = T.CommunityCreateParams;\ntype __CommunityUpdateParams = T.CommunityUpdateParams;\ntype __CommunityActorCommentListParams = T.CommunityActorCommentListParams;\ntype __CommunityActorReactionListParams = T.CommunityActorReactionListParams;\ntype __CommunityModerationActionCreateParams = T.CommunityModerationActionCreateParams;\ntype __CommunityModerationActorShadowBanParams = T.CommunityModerationActorShadowBanParams;\ntype __CommunityModerationAuditListParams = T.CommunityModerationAuditListParams;\ntype __CommunityModerationBlockedTermListParams = T.CommunityModerationBlockedTermListParams;\ntype __CommunityModerationBlockedTermCreateParams = T.CommunityModerationBlockedTermCreateParams;\ntype __CommunityModerationConversationListParams = T.CommunityModerationConversationListParams;\ntype __CommunityModerationConversationMessageListParams = T.CommunityModerationConversationMessageListParams;\ntype __CommunityModerationFlagListParams = T.CommunityModerationFlagListParams;\ntype __CommunityModerationFlagResolveParams = T.CommunityModerationFlagResolveParams;\ntype __CommunityModerationShadowBannedListParams = T.CommunityModerationShadowBannedListParams;\ntype __CommunityWebhookEndpointCreateParams = T.CommunityWebhookEndpointCreateParams;\ntype __CommunityWebhookEndpointUpdateParams = T.CommunityWebhookEndpointUpdateParams;\ntype __CommunityWebhookEndpointRotateSecretParams = T.CommunityWebhookEndpointRotateSecretParams;\ntype __CommunityWebhookEndpointTestParams = T.CommunityWebhookEndpointTestParams;\ntype __CommunityWebhookEventListParams = T.CommunityWebhookEventListParams;\ntype __CommunityWebhookEventReplayParams = T.CommunityWebhookEventReplayParams;\ntype __StatsRetrieveParams = T.StatsRetrieveParams;\ntype __WebhookEndpointCreateParams = T.WebhookEndpointCreateParams;\ntype __WebhookEndpointUpdateParams = T.WebhookEndpointUpdateParams;\ntype __WebhookEndpointRotateSecretParams = T.WebhookEndpointRotateSecretParams;\ntype __WebhookEndpointTestParams = T.WebhookEndpointTestParams;\ntype __WebhookEventListParams = T.WebhookEventListParams;\ntype __WebhookEventReplayParams = T.WebhookEventReplayParams;\ntype __ErrorCode = E.SocialErrorCode;\ntype __ActorUpdatedEvent = W.ActorUpdatedEvent;\ntype __AssetFailedEvent = W.AssetFailedEvent;\ntype __AssetReadyEvent = W.AssetReadyEvent;\ntype __CommentCreatedEvent = W.CommentCreatedEvent;\ntype __CommentDeletedEvent = W.CommentDeletedEvent;\ntype __CommentReactionCreatedEvent = W.CommentReactionCreatedEvent;\ntype __CommentUpdatedEvent = W.CommentUpdatedEvent;\ntype __DmMessageCreatedEvent = W.DmMessageCreatedEvent;\ntype __EdgeFollowCreatedEvent = W.EdgeFollowCreatedEvent;\ntype __EdgeFollowDeletedEvent = W.EdgeFollowDeletedEvent;\ntype __EdgeFollowRequestApprovedEvent = W.EdgeFollowRequestApprovedEvent;\ntype __EdgeFollowRequestedEvent = W.EdgeFollowRequestedEvent;\ntype __FlagCreatedEvent = W.FlagCreatedEvent;\ntype __FlagUpdatedEvent = W.FlagUpdatedEvent;\ntype __ModerationActionAppliedEvent = W.ModerationActionAppliedEvent;\ntype __PostCreatedEvent = W.PostCreatedEvent;\ntype __PostDeletedEvent = W.PostDeletedEvent;\ntype __PostReactionCreatedEvent = W.PostReactionCreatedEvent;\ntype __PostUpdatedEvent = W.PostUpdatedEvent;\ntype __RepostCreatedEvent = W.RepostCreatedEvent;\ntype __TagCreatedEvent = W.TagCreatedEvent;\ntype __UnknownWebhookEvent = W.UnknownWebhookEvent;\ntype __UnwrapWebhookEvent = W.UnwrapWebhookEvent;\ntype __WebhookSignParams = W.WebhookSignParams;\ntype __WebhookUnwrapParams = W.WebhookUnwrapParams;\n/** Public types: `Social.ActOnFlag`, `Social.ActorListParams`, … */\nexport namespace Social {\n export type RequestOptions = __RequestOptions;\n export type PollOptions = __PollOptions;\n export type ActorListVisibility = __ActorListVisibility;\n export const ActorListVisibility = T.ActorListVisibility;\n export type ActorStatus = __ActorStatus;\n export const ActorStatus = T.ActorStatus;\n export type AssetKind = __AssetKind;\n export const AssetKind = T.AssetKind;\n export type AssetRenditionName = __AssetRenditionName;\n export const AssetRenditionName = T.AssetRenditionName;\n export type AssetStatus = __AssetStatus;\n export const AssetStatus = T.AssetStatus;\n export type AssetUploadMethod = __AssetUploadMethod;\n export const AssetUploadMethod = T.AssetUploadMethod;\n export type BlockedTermAction = __BlockedTermAction;\n export const BlockedTermAction = T.BlockedTermAction;\n export type CollectionKind = __CollectionKind;\n export const CollectionKind = T.CollectionKind;\n export type CollectionVisibility = __CollectionVisibility;\n export const CollectionVisibility = T.CollectionVisibility;\n export type CommentPolicy = __CommentPolicy;\n export const CommentPolicy = T.CommentPolicy;\n export type CommentStatus = __CommentStatus;\n export const CommentStatus = T.CommentStatus;\n export type CommentVisibility = __CommentVisibility;\n export const CommentVisibility = T.CommentVisibility;\n export type CommunityStatus = __CommunityStatus;\n export const CommunityStatus = T.CommunityStatus;\n export type ConnectionStatus = __ConnectionStatus;\n export const ConnectionStatus = T.ConnectionStatus;\n export type ConversationKind = __ConversationKind;\n export const ConversationKind = T.ConversationKind;\n export type ConversationRole = __ConversationRole;\n export const ConversationRole = T.ConversationRole;\n export type DirectMessageKind = __DirectMessageKind;\n export const DirectMessageKind = T.DirectMessageKind;\n export type EdgeKind = __EdgeKind;\n export const EdgeKind = T.EdgeKind;\n export type FlagStatus = __FlagStatus;\n export const FlagStatus = T.FlagStatus;\n export type FollowStatus = __FollowStatus;\n export const FollowStatus = T.FollowStatus;\n export type MentionSource = __MentionSource;\n export const MentionSource = T.MentionSource;\n export type ModerationActionType = __ModerationActionType;\n export const ModerationActionType = T.ModerationActionType;\n export type ModerationTargetKind = __ModerationTargetKind;\n export const ModerationTargetKind = T.ModerationTargetKind;\n export type MutedTermAction = __MutedTermAction;\n export const MutedTermAction = T.MutedTermAction;\n export type MutedTermScope = __MutedTermScope;\n export const MutedTermScope = T.MutedTermScope;\n export type NotificationKind = __NotificationKind;\n export const NotificationKind = T.NotificationKind;\n export type NotificationTargetKind = __NotificationTargetKind;\n export const NotificationTargetKind = T.NotificationTargetKind;\n export type PostStatus = __PostStatus;\n export const PostStatus = T.PostStatus;\n export type PostTagState = __PostTagState;\n export const PostTagState = T.PostTagState;\n export type PostVisibility = __PostVisibility;\n export const PostVisibility = T.PostVisibility;\n export type ReactionTargetType = __ReactionTargetType;\n export const ReactionTargetType = T.ReactionTargetType;\n export type SocialStatsMetric = __SocialStatsMetric;\n export const SocialStatsMetric = T.SocialStatsMetric;\n export type StatsGranularity = __StatsGranularity;\n export const StatsGranularity = T.StatsGranularity;\n export type StatsWindow = __StatsWindow;\n export const StatsWindow = T.StatsWindow;\n export type SuggestionReason = __SuggestionReason;\n export const SuggestionReason = T.SuggestionReason;\n export type WebhookAttemptTrigger = __WebhookAttemptTrigger;\n export const WebhookAttemptTrigger = T.WebhookAttemptTrigger;\n export type WebhookEndpointDisabledReason = __WebhookEndpointDisabledReason;\n export const WebhookEndpointDisabledReason = T.WebhookEndpointDisabledReason;\n export type WebhookEndpointStatus = __WebhookEndpointStatus;\n export const WebhookEndpointStatus = T.WebhookEndpointStatus;\n export type WebhookEventStatus = __WebhookEventStatus;\n export const WebhookEventStatus = T.WebhookEventStatus;\n export type WebhookEventType = __WebhookEventType;\n export const WebhookEventType = T.WebhookEventType;\n export type ActOnFlag = __ActOnFlag;\n export type ActorComments = __ActorComments;\n export type ActorCounters = __ActorCounters;\n export type ActorFollowerPoint = __ActorFollowerPoint;\n export type ActorInsights = __ActorInsights;\n export type ActorListList = __ActorListList;\n export type ActorListMemberList = __ActorListMemberList;\n export type ActorListMember = __ActorListMember;\n export type ActorList = __ActorList;\n export type ActorPage = __ActorPage;\n export type ActorReactionEntry = __ActorReactionEntry;\n export type ActorReactions = __ActorReactions;\n export type Actor = __Actor;\n export type ActorSearchHit = __ActorSearchHit;\n export type ActorSearch = __ActorSearch;\n export type ActorSummary = __ActorSummary;\n export type ActorUpdatedEventData = __ActorUpdatedEventData;\n export type ActorsByExternalBatch = __ActorsByExternalBatch;\n export type AddCommentReaction = __AddCommentReaction;\n export type AssetAttachment = __AssetAttachment;\n export type AssetFailedEventData = __AssetFailedEventData;\n export type AssetList = __AssetList;\n export type AssetReadyEventData = __AssetReadyEventData;\n export type AssetRendition = __AssetRendition;\n export type Asset = __Asset;\n export type AssetUpload = __AssetUpload;\n export type AuditList = __AuditList;\n export type BatchActorResult = __BatchActorResult;\n export type BatchActors = __BatchActors;\n export type BatchCounters = __BatchCounters;\n export type BatchFollowResult = __BatchFollowResult;\n export type BatchFollows = __BatchFollows;\n export type BatchItemError = __BatchItemError;\n export type BlockedTermList = __BlockedTermList;\n export type BlockedTerm = __BlockedTerm;\n export type BookmarkList = __BookmarkList;\n export type Bookmark = __Bookmark;\n export type BookmarkToggle = __BookmarkToggle;\n export type CloseFriendResponse = __CloseFriendResponse;\n export type CloseFriendsListResponse = __CloseFriendsListResponse;\n export type CollectionItemList = __CollectionItemList;\n export type CollectionItem = __CollectionItem;\n export type CollectionList = __CollectionList;\n export type Collection = __Collection;\n export type CommentCreatedEventData = __CommentCreatedEventData;\n export type CommentDeletedEventData = __CommentDeletedEventData;\n export type CommentList = __CommentList;\n export type CommentReactionCounts = __CommentReactionCounts;\n export type CommentReactionCreatedEventData = __CommentReactionCreatedEventData;\n export type CommentReactionEntry = __CommentReactionEntry;\n export type CommentReactionList = __CommentReactionList;\n export type Comment = __Comment;\n export type CommentUpdatedEventData = __CommentUpdatedEventData;\n export type CommunityAnalytics = __CommunityAnalytics;\n export type CommunityList = __CommunityList;\n export type CommunityRankingSettings = __CommunityRankingSettings;\n export type CommunityRankingWeights = __CommunityRankingWeights;\n export type Community = __Community;\n export type CommunitySettings = __CommunitySettings;\n export type ConnectionResult = __ConnectionResult;\n export type ConversationAdminList = __ConversationAdminList;\n export type ConversationAdmin = __ConversationAdmin;\n export type ConversationList = __ConversationList;\n export type ConversationParticipant = __ConversationParticipant;\n export type Conversation = __Conversation;\n export type CreateEdge = __CreateEdge;\n export type CreateFlag = __CreateFlag;\n export type CreateRepost = __CreateRepost;\n export type DirectMessageAdminList = __DirectMessageAdminList;\n export type DirectMessageAdmin = __DirectMessageAdmin;\n export type DirectMessageAttachment = __DirectMessageAttachment;\n export type DirectMessageList = __DirectMessageList;\n export type DirectMessageReactionCreated = __DirectMessageReactionCreated;\n export type DirectMessageReactionList = __DirectMessageReactionList;\n export type DirectMessageReactionRemoved = __DirectMessageReactionRemoved;\n export type DirectMessageReaction = __DirectMessageReaction;\n export type DirectMessage = __DirectMessage;\n export type DmMessageCreatedEventData = __DmMessageCreatedEventData;\n export type DraftList = __DraftList;\n export type EdgeFollowCreatedEventData = __EdgeFollowCreatedEventData;\n export type EdgeFollowDeletedEventData = __EdgeFollowDeletedEventData;\n export type EdgeFollowRequestApprovedEventData = __EdgeFollowRequestApprovedEventData;\n export type EdgeFollowRequestedEventData = __EdgeFollowRequestedEventData;\n export type Edge = __Edge;\n export type Feed = __Feed;\n export type FlagCreatedEventData = __FlagCreatedEventData;\n export type FlagList = __FlagList;\n export type Flag = __Flag;\n export type FlagUpdatedEventData = __FlagUpdatedEventData;\n export type FollowRequestEntry = __FollowRequestEntry;\n export type FollowRequestList = __FollowRequestList;\n export type FollowResult = __FollowResult;\n export type FollowerEdgeList = __FollowerEdgeList;\n export type FollowerEdge = __FollowerEdge;\n export type HashtagAutocomplete = __HashtagAutocomplete;\n export type HashtagDetail = __HashtagDetail;\n export type HashtagFollowList = __HashtagFollowList;\n export type HashtagFollow = __HashtagFollow;\n export type HashtagList = __HashtagList;\n export type HashtagPostList = __HashtagPostList;\n export type Hashtag = __Hashtag;\n export type HideEntry = __HideEntry;\n export type HideList = __HideList;\n export type HideResult = __HideResult;\n export type HighlightsResponse = __HighlightsResponse;\n export type InsightsDailyBucket = __InsightsDailyBucket;\n export type ListWebhookEndpoints = __ListWebhookEndpoints;\n export type ListWebhookEventTypes = __ListWebhookEventTypes;\n export type ListWebhookEvents = __ListWebhookEvents;\n export type MarkAllReadResponse = __MarkAllReadResponse;\n export type MentionEntry = __MentionEntry;\n export type MentionList = __MentionList;\n export type ModerationActionAppliedEventData = __ModerationActionAppliedEventData;\n export type ModerationAction = __ModerationAction;\n export type ModerationActorList = __ModerationActorList;\n export type ModerationActor = __ModerationActor;\n export type MutedTermList = __MutedTermList;\n export type MutedTerm = __MutedTerm;\n export type NotificationListResponse = __NotificationListResponse;\n export type NotificationPrefList = __NotificationPrefList;\n export type NotificationPref = __NotificationPref;\n export type NotificationResponse = __NotificationResponse;\n export type OutboundEdgeList = __OutboundEdgeList;\n export type OutboundEdge = __OutboundEdge;\n export type Pagination = __Pagination;\n export type ParticipantSummary = __ParticipantSummary;\n export type PollResultOptionResponse = __PollResultOptionResponse;\n export type PollResultsResponse = __PollResultsResponse;\n export type PollVoteResponse = __PollVoteResponse;\n export type PollVoterResponse = __PollVoterResponse;\n export type PollVotersResponse = __PollVotersResponse;\n export type PostCreatedEventData = __PostCreatedEventData;\n export type PostDeletedEventData = __PostDeletedEventData;\n export type PostInsights = __PostInsights;\n export type PostList = __PostList;\n export type PostReactionCreatedEventData = __PostReactionCreatedEventData;\n export type PostReactionEntry = __PostReactionEntry;\n export type PostReactionList = __PostReactionList;\n export type Post = __Post;\n export type PostRevisionList = __PostRevisionList;\n export type PostRevision = __PostRevision;\n export type PostSearchHit = __PostSearchHit;\n export type PostSearch = __PostSearch;\n export type PostSettings = __PostSettings;\n export type PostState = __PostState;\n export type PostTag = __PostTag;\n export type PostUpdatedEventData = __PostUpdatedEventData;\n export type PostViewerStateEntry = __PostViewerStateEntry;\n export type ReactionCounts = __ReactionCounts;\n export type ReactionEdge = __ReactionEdge;\n export type Reaction = __Reaction;\n export type RelationshipEntry = __RelationshipEntry;\n export type RelationshipList = __RelationshipList;\n export type ReplayWebhookEvent = __ReplayWebhookEvent;\n export type RepostCreatedEventData = __RepostCreatedEventData;\n export type RepostList = __RepostList;\n export type SocialStatsInWindow = __SocialStatsInWindow;\n export type SocialStatsSeries = __SocialStatsSeries;\n export type SocialStatsSeriesPoint = __SocialStatsSeriesPoint;\n export type SocialStatsTotals = __SocialStatsTotals;\n export type SocialWorkspaceStats = __SocialWorkspaceStats;\n export type StoryTrayEntryResponse = __StoryTrayEntryResponse;\n export type StoryTrayResponse = __StoryTrayResponse;\n export type StoryViewerResponse = __StoryViewerResponse;\n export type StoryViewersResponse = __StoryViewersResponse;\n export type SuggestedFollow = __SuggestedFollow;\n export type SuggestedFollowsList = __SuggestedFollowsList;\n export type TagCreatedEventData = __TagCreatedEventData;\n export type TaggedPostsResponse = __TaggedPostsResponse;\n export type UnreadCountResponse = __UnreadCountResponse;\n export type UnreadCount = __UnreadCount;\n export type UploadAsset = __UploadAsset;\n export type UpsertActor = __UpsertActor;\n export type WebhookDeliveryAttempt = __WebhookDeliveryAttempt;\n export type WebhookEndpoint = __WebhookEndpoint;\n export type WebhookEndpointWithSecret = __WebhookEndpointWithSecret;\n export type WebhookEventDelivery = __WebhookEventDelivery;\n export type WebhookEventDetail = __WebhookEventDetail;\n export type WebhookEvent = __WebhookEvent;\n export type WebhookEventTypeInfo = __WebhookEventTypeInfo;\n export type WebhookPagination = __WebhookPagination;\n export type ActorListParams = __ActorListParams;\n export type ActorCreateParams = __ActorCreateParams;\n export type ActorBatchParams = __ActorBatchParams;\n export type ActorByExternalBatchParams = __ActorByExternalBatchParams;\n export type ActorUpdateParams = __ActorUpdateParams;\n export type ActorArchivedListParams = __ActorArchivedListParams;\n export type ActorAssetListParams = __ActorAssetListParams;\n export type ActorBlockListParams = __ActorBlockListParams;\n export type ActorBookmarkListParams = __ActorBookmarkListParams;\n export type ActorCloseFriendListParams = __ActorCloseFriendListParams;\n export type ActorDismissedSuggestionListParams = __ActorDismissedSuggestionListParams;\n export type ActorDraftListParams = __ActorDraftListParams;\n export type ActorFeedListParams = __ActorFeedListParams;\n export type ActorFollowRequestListParams = __ActorFollowRequestListParams;\n export type ActorFollowerListParams = __ActorFollowerListParams;\n export type ActorFollowingListParams = __ActorFollowingListParams;\n export type ActorHashtagFollowListParams = __ActorHashtagFollowListParams;\n export type ActorHashtagFollowCreateParams = __ActorHashtagFollowCreateParams;\n export type ActorHideListParams = __ActorHideListParams;\n export type ActorInsightsParams = __ActorInsightsParams;\n export type ActorMentionListParams = __ActorMentionListParams;\n export type ActorMutedTermListParams = __ActorMutedTermListParams;\n export type ActorMutedTermCreateParams = __ActorMutedTermCreateParams;\n export type ActorMuteListParams = __ActorMuteListParams;\n export type ActorNotificationPrefUpdateParams = __ActorNotificationPrefUpdateParams;\n export type ActorNotificationListParams = __ActorNotificationListParams;\n export type ActorNotificationMarkAllReadParams = __ActorNotificationMarkAllReadParams;\n export type ActorNotificationUpdateParams = __ActorNotificationUpdateParams;\n export type ActorPostStateParams = __ActorPostStateParams;\n export type ActorRestrictListParams = __ActorRestrictListParams;\n export type ActorScheduledPostListParams = __ActorScheduledPostListParams;\n export type ActorSuggestedFollowListParams = __ActorSuggestedFollowListParams;\n export type ActorHighlightListParams = __ActorHighlightListParams;\n export type ActorRelationshipListParams = __ActorRelationshipListParams;\n export type ActorTaggedListParams = __ActorTaggedListParams;\n export type AssetCreateParams = __AssetCreateParams;\n export type BlockCreateParams = __BlockCreateParams;\n export type CloseFriendCreateParams = __CloseFriendCreateParams;\n export type CollectionListParams = __CollectionListParams;\n export type CollectionCreateParams = __CollectionCreateParams;\n export type CollectionRetrieveParams = __CollectionRetrieveParams;\n export type CollectionUpdateParams = __CollectionUpdateParams;\n export type CollectionDeleteParams = __CollectionDeleteParams;\n export type CollectionItemListParams = __CollectionItemListParams;\n export type CollectionItemCreateParams = __CollectionItemCreateParams;\n export type CollectionItemUpdateParams = __CollectionItemUpdateParams;\n export type CollectionItemDeleteParams = __CollectionItemDeleteParams;\n export type ConnectionCreateParams = __ConnectionCreateParams;\n export type ConversationListParams = __ConversationListParams;\n export type ConversationCreateParams = __ConversationCreateParams;\n export type ConversationUnreadCountParams = __ConversationUnreadCountParams;\n export type ConversationRetrieveParams = __ConversationRetrieveParams;\n export type ConversationUpdateParams = __ConversationUpdateParams;\n export type ConversationDeleteParams = __ConversationDeleteParams;\n export type ConversationMemberCreateParams = __ConversationMemberCreateParams;\n export type ConversationMemberUpdateParams = __ConversationMemberUpdateParams;\n export type ConversationMemberDeleteParams = __ConversationMemberDeleteParams;\n export type ConversationMessageListParams = __ConversationMessageListParams;\n export type ConversationMessageCreateParams = __ConversationMessageCreateParams;\n export type ConversationMessageRetrieveParams = __ConversationMessageRetrieveParams;\n export type ConversationMessageUpdateParams = __ConversationMessageUpdateParams;\n export type ConversationMessageDeleteParams = __ConversationMessageDeleteParams;\n export type ConversationMessageReactionListParams = __ConversationMessageReactionListParams;\n export type ConversationMessageReactionCreateParams = __ConversationMessageReactionCreateParams;\n export type ConversationMarkReadParams = __ConversationMarkReadParams;\n export type CounterListParams = __CounterListParams;\n export type DiscoverFeedListParams = __DiscoverFeedListParams;\n export type DismissedSuggestionCreateParams = __DismissedSuggestionCreateParams;\n export type FlagListParams = __FlagListParams;\n export type FlagCreateParams = __FlagCreateParams;\n export type FollowCreateParams = __FollowCreateParams;\n export type FollowBatchParams = __FollowBatchParams;\n export type HashtagListParams = __HashtagListParams;\n export type HashtagPostListParams = __HashtagPostListParams;\n export type HideCreateParams = __HideCreateParams;\n export type ListListParams = __ListListParams;\n export type ListCreateParams = __ListCreateParams;\n export type ListRetrieveParams = __ListRetrieveParams;\n export type ListUpdateParams = __ListUpdateParams;\n export type ListDeleteParams = __ListDeleteParams;\n export type ListFeedListParams = __ListFeedListParams;\n export type ListMemberListParams = __ListMemberListParams;\n export type ListMemberCreateParams = __ListMemberCreateParams;\n export type ListMemberDeleteParams = __ListMemberDeleteParams;\n export type MuteCreateParams = __MuteCreateParams;\n export type PostListParams = __PostListParams;\n export type PostCreateParams = __PostCreateParams;\n export type PostRecordImpressionsParams = __PostRecordImpressionsParams;\n export type PostRetrieveParams = __PostRetrieveParams;\n export type PostUpdateParams = __PostUpdateParams;\n export type PostBookmarkParams = __PostBookmarkParams;\n export type PostUnbookmarkParams = __PostUnbookmarkParams;\n export type PostCommentListParams = __PostCommentListParams;\n export type PostCommentCreateParams = __PostCommentCreateParams;\n export type PostCommentRetrieveParams = __PostCommentRetrieveParams;\n export type PostCommentUpdateParams = __PostCommentUpdateParams;\n export type PostCommentApproveParams = __PostCommentApproveParams;\n export type PostCommentPinParams = __PostCommentPinParams;\n export type PostCommentUnpinParams = __PostCommentUnpinParams;\n export type PostCommentReactionListParams = __PostCommentReactionListParams;\n export type PostCommentReactionCreateParams = __PostCommentReactionCreateParams;\n export type PostInsightsParams = __PostInsightsParams;\n export type PostQuoteListParams = __PostQuoteListParams;\n export type PostReactionListParams = __PostReactionListParams;\n export type PostReactionCreateParams = __PostReactionCreateParams;\n export type PostRepostParams = __PostRepostParams;\n export type PostUnrepostParams = __PostUnrepostParams;\n export type PostRepostListParams = __PostRepostListParams;\n export type PostRevisionListParams = __PostRevisionListParams;\n export type PostTagApproveParams = __PostTagApproveParams;\n export type PostTagDeleteParams = __PostTagDeleteParams;\n export type PostViewerListParams = __PostViewerListParams;\n export type PostRecordViewParams = __PostRecordViewParams;\n export type PostVoterListParams = __PostVoterListParams;\n export type PostVoteCreateParams = __PostVoteCreateParams;\n export type RestrictCreateParams = __RestrictCreateParams;\n export type SearchActorListParams = __SearchActorListParams;\n export type SearchHashtagListParams = __SearchHashtagListParams;\n export type SearchPostListParams = __SearchPostListParams;\n export type CommunityScopedWebhookEndpointCreateParams = __CommunityScopedWebhookEndpointCreateParams;\n export type CommunityScopedWebhookEndpointUpdateParams = __CommunityScopedWebhookEndpointUpdateParams;\n export type CommunityScopedWebhookEndpointRotateSecretParams = __CommunityScopedWebhookEndpointRotateSecretParams;\n export type CommunityScopedWebhookEndpointTestParams = __CommunityScopedWebhookEndpointTestParams;\n export type CommunityScopedWebhookEventListParams = __CommunityScopedWebhookEventListParams;\n export type CommunityScopedWebhookEventReplayParams = __CommunityScopedWebhookEventReplayParams;\n export type CommunityListParams = __CommunityListParams;\n export type CommunityCreateParams = __CommunityCreateParams;\n export type CommunityUpdateParams = __CommunityUpdateParams;\n export type CommunityActorCommentListParams = __CommunityActorCommentListParams;\n export type CommunityActorReactionListParams = __CommunityActorReactionListParams;\n export type CommunityModerationActionCreateParams = __CommunityModerationActionCreateParams;\n export type CommunityModerationActorShadowBanParams = __CommunityModerationActorShadowBanParams;\n export type CommunityModerationAuditListParams = __CommunityModerationAuditListParams;\n export type CommunityModerationBlockedTermListParams = __CommunityModerationBlockedTermListParams;\n export type CommunityModerationBlockedTermCreateParams = __CommunityModerationBlockedTermCreateParams;\n export type CommunityModerationConversationListParams = __CommunityModerationConversationListParams;\n export type CommunityModerationConversationMessageListParams = __CommunityModerationConversationMessageListParams;\n export type CommunityModerationFlagListParams = __CommunityModerationFlagListParams;\n export type CommunityModerationFlagResolveParams = __CommunityModerationFlagResolveParams;\n export type CommunityModerationShadowBannedListParams = __CommunityModerationShadowBannedListParams;\n export type CommunityWebhookEndpointCreateParams = __CommunityWebhookEndpointCreateParams;\n export type CommunityWebhookEndpointUpdateParams = __CommunityWebhookEndpointUpdateParams;\n export type CommunityWebhookEndpointRotateSecretParams = __CommunityWebhookEndpointRotateSecretParams;\n export type CommunityWebhookEndpointTestParams = __CommunityWebhookEndpointTestParams;\n export type CommunityWebhookEventListParams = __CommunityWebhookEventListParams;\n export type CommunityWebhookEventReplayParams = __CommunityWebhookEventReplayParams;\n export type StatsRetrieveParams = __StatsRetrieveParams;\n export type WebhookEndpointCreateParams = __WebhookEndpointCreateParams;\n export type WebhookEndpointUpdateParams = __WebhookEndpointUpdateParams;\n export type WebhookEndpointRotateSecretParams = __WebhookEndpointRotateSecretParams;\n export type WebhookEndpointTestParams = __WebhookEndpointTestParams;\n export type WebhookEventListParams = __WebhookEventListParams;\n export type WebhookEventReplayParams = __WebhookEventReplayParams;\n export type ErrorCode = __ErrorCode;\n export type ActorUpdatedEvent = __ActorUpdatedEvent;\n export type AssetFailedEvent = __AssetFailedEvent;\n export type AssetReadyEvent = __AssetReadyEvent;\n export type CommentCreatedEvent = __CommentCreatedEvent;\n export type CommentDeletedEvent = __CommentDeletedEvent;\n export type CommentReactionCreatedEvent = __CommentReactionCreatedEvent;\n export type CommentUpdatedEvent = __CommentUpdatedEvent;\n export type DmMessageCreatedEvent = __DmMessageCreatedEvent;\n export type EdgeFollowCreatedEvent = __EdgeFollowCreatedEvent;\n export type EdgeFollowDeletedEvent = __EdgeFollowDeletedEvent;\n export type EdgeFollowRequestApprovedEvent = __EdgeFollowRequestApprovedEvent;\n export type EdgeFollowRequestedEvent = __EdgeFollowRequestedEvent;\n export type FlagCreatedEvent = __FlagCreatedEvent;\n export type FlagUpdatedEvent = __FlagUpdatedEvent;\n export type ModerationActionAppliedEvent = __ModerationActionAppliedEvent;\n export type PostCreatedEvent = __PostCreatedEvent;\n export type PostDeletedEvent = __PostDeletedEvent;\n export type PostReactionCreatedEvent = __PostReactionCreatedEvent;\n export type PostUpdatedEvent = __PostUpdatedEvent;\n export type RepostCreatedEvent = __RepostCreatedEvent;\n export type TagCreatedEvent = __TagCreatedEvent;\n export type UnknownWebhookEvent = __UnknownWebhookEvent;\n export type UnwrapWebhookEvent = __UnwrapWebhookEvent;\n export type WebhookSignParams = __WebhookSignParams;\n export type WebhookUnwrapParams = __WebhookUnwrapParams;\n}\n","// Generated by scripts/gen-sdk.mjs from Specs/social.json. Do not edit.\n\nexport { APIConnectionError, APIError, APITimeoutError, APIUserAbortError, AuthenticationError, BadRequestError, ConfigurationError, ConflictError, IdempotencyKeyReuseError, InternalServerError, NotFoundError, PermissionDeniedError, ProductCraftError, RateLimitError, UnprocessableEntityError, WebhookVerificationError } from \"@productcraft/core\";\n\n/** Error codes this API documents. Open: codes added later still type-check. See https://productcraft.co/docs/errors. */\nexport type SocialErrorCode = \"BAD_REQUEST\" | \"VALIDATION_ERROR\" | \"UNAUTHORIZED\" | \"PAYMENT_REQUIRED\" | \"FORBIDDEN\" | \"NOT_FOUND\" | \"METHOD_NOT_ALLOWED\" | \"NOT_ACCEPTABLE\" | \"REQUEST_TIMEOUT\" | \"CONFLICT\" | \"GONE\" | \"PRECONDITION_FAILED\" | \"PAYLOAD_TOO_LARGE\" | \"UNSUPPORTED_MEDIA_TYPE\" | \"UNPROCESSABLE_ENTITY\" | \"PRECONDITION_REQUIRED\" | \"RATE_LIMITED\" | \"INTERNAL_SERVER_ERROR\" | \"NOT_IMPLEMENTED\" | \"BAD_GATEWAY\" | \"SERVICE_UNAVAILABLE\" | \"GATEWAY_TIMEOUT\" | \"SERVICE_NOT_ENABLED\" | \"INVALID_CREDENTIALS\" | \"SESSION_REVOKED\" | \"MCP_NOT_PERMITTED\" | \"MCP_WORKSPACE_MISMATCH\" | \"PAK_NOT_PERMITTED\" | \"ACTIONS_NOT_GRANTABLE\" | \"IDEMPOTENCY_KEY_REUSE\" | \"IDEMPOTENCY_KEY_REQUIRED\" | \"IDEMPOTENCY_IN_PROGRESS\" | \"WEBHOOK_ENDPOINT_LIMIT\" | \"WEBHOOK_ENDPOINT_NOT_FOUND\" | \"WEBHOOK_ENDPOINT_NOT_SUBSCRIBED\" | \"WEBHOOK_EVENT_NOT_FOUND\" | \"WEBHOOK_EVENT_TYPE_UNKNOWN\" | \"ASSET_INVALID_CONTAINER\" | \"ASSET_INVALID_SIZE\" | \"ASSET_INVALID_TYPE\" | \"ASSET_MAGIC_MISMATCH\" | \"ASSET_NOT_OWNED\" | \"ASSET_NOT_READY\" | \"ASSET_NOT_VIDEO\" | \"ASSET_PROCESSING_FAILED\" | \"ASSET_TOO_LARGE\" | \"ASSET_TRANSCODE_FAILED\" | \"ASSET_UPLOAD_INCOMPLETE\" | \"CANNOT_QUOTE_PRIVATE\" | \"CANNOT_QUOTE_SELF\" | \"CANNOT_REPOST_PRIVATE\" | \"CANNOT_REPOST_SELF\" | \"COMMENTS_DISABLED\" | \"COMMENTS_FOLLOWERS_ONLY\" | \"COMMENTS_MENTIONED_ONLY\" | \"EDIT_WINDOW_EXPIRED\" | \"INVALID_CURSOR\" | \"INVALID_DATE_FILTER\" | \"INVALID_EXPAND\" | \"INVALID_IDENTIFIER\" | \"INVALID_ID_LIST\" | \"INVALID_NOTIFICATION_KIND\" | \"INVALID_ORDER\" | \"INVALID_SEARCH_QUERY\" | \"PIN_CAP_REACHED\" | \"POLL_CLOSED\" | \"QUOTE_NOT_ALLOWED\" | \"QUOTE_REQUIRES_BODY\" | \"QUOTE_REQUIRES_SOURCE\" | \"REPOST_NOT_ALLOWED\" | \"SOURCE_POST_ID_REQUIRES_QUOTE\" | \"TOO_MANY_ACTIVE_UPLOADS\" | \"TOO_MANY_ATTACHMENTS\" | \"TOO_MANY_IDS\" | (string & {});\nexport const SocialErrorCode = { values: [\"BAD_REQUEST\", \"VALIDATION_ERROR\", \"UNAUTHORIZED\", \"PAYMENT_REQUIRED\", \"FORBIDDEN\", \"NOT_FOUND\", \"METHOD_NOT_ALLOWED\", \"NOT_ACCEPTABLE\", \"REQUEST_TIMEOUT\", \"CONFLICT\", \"GONE\", \"PRECONDITION_FAILED\", \"PAYLOAD_TOO_LARGE\", \"UNSUPPORTED_MEDIA_TYPE\", \"UNPROCESSABLE_ENTITY\", \"PRECONDITION_REQUIRED\", \"RATE_LIMITED\", \"INTERNAL_SERVER_ERROR\", \"NOT_IMPLEMENTED\", \"BAD_GATEWAY\", \"SERVICE_UNAVAILABLE\", \"GATEWAY_TIMEOUT\", \"SERVICE_NOT_ENABLED\", \"INVALID_CREDENTIALS\", \"SESSION_REVOKED\", \"MCP_NOT_PERMITTED\", \"MCP_WORKSPACE_MISMATCH\", \"PAK_NOT_PERMITTED\", \"ACTIONS_NOT_GRANTABLE\", \"IDEMPOTENCY_KEY_REUSE\", \"IDEMPOTENCY_KEY_REQUIRED\", \"IDEMPOTENCY_IN_PROGRESS\", \"WEBHOOK_ENDPOINT_LIMIT\", \"WEBHOOK_ENDPOINT_NOT_FOUND\", \"WEBHOOK_ENDPOINT_NOT_SUBSCRIBED\", \"WEBHOOK_EVENT_NOT_FOUND\", \"WEBHOOK_EVENT_TYPE_UNKNOWN\", \"ASSET_INVALID_CONTAINER\", \"ASSET_INVALID_SIZE\", \"ASSET_INVALID_TYPE\", \"ASSET_MAGIC_MISMATCH\", \"ASSET_NOT_OWNED\", \"ASSET_NOT_READY\", \"ASSET_NOT_VIDEO\", \"ASSET_PROCESSING_FAILED\", \"ASSET_TOO_LARGE\", \"ASSET_TRANSCODE_FAILED\", \"ASSET_UPLOAD_INCOMPLETE\", \"CANNOT_QUOTE_PRIVATE\", \"CANNOT_QUOTE_SELF\", \"CANNOT_REPOST_PRIVATE\", \"CANNOT_REPOST_SELF\", \"COMMENTS_DISABLED\", \"COMMENTS_FOLLOWERS_ONLY\", \"COMMENTS_MENTIONED_ONLY\", \"EDIT_WINDOW_EXPIRED\", \"INVALID_CURSOR\", \"INVALID_DATE_FILTER\", \"INVALID_EXPAND\", \"INVALID_IDENTIFIER\", \"INVALID_ID_LIST\", \"INVALID_NOTIFICATION_KIND\", \"INVALID_ORDER\", \"INVALID_SEARCH_QUERY\", \"PIN_CAP_REACHED\", \"POLL_CLOSED\", \"QUOTE_NOT_ALLOWED\", \"QUOTE_REQUIRES_BODY\", \"QUOTE_REQUIRES_SOURCE\", \"REPOST_NOT_ALLOWED\", \"SOURCE_POST_ID_REQUIRES_QUOTE\", \"TOO_MANY_ACTIVE_UPLOADS\", \"TOO_MANY_ATTACHMENTS\", \"TOO_MANY_IDS\"] as const };\n"]}