@productcraft/social 0.1.1 → 0.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.
Files changed (3) hide show
  1. package/dist/index.d.cts +512 -747
  2. package/dist/index.d.ts +512 -747
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1740,6 +1740,12 @@ interface paths {
1740
1740
  }
1741
1741
  interface components {
1742
1742
  schemas: {
1743
+ ActOnFlagResponseDto: {
1744
+ /** @description The flag after the action (status flipped to actioned/dismissed for punitive/dismiss actions; reversals re-resolve it too). */
1745
+ flag: components["schemas"]["FlagResponseDto"];
1746
+ /** @description The audit row this action recorded. */
1747
+ moderation_action: components["schemas"]["ModerationActionResponseDto"];
1748
+ };
1743
1749
  ActorCountersResponseDto: {
1744
1750
  /**
1745
1751
  * @description Actor UUID.
@@ -1827,11 +1833,62 @@ interface components {
1827
1833
  list_id: string;
1828
1834
  };
1829
1835
  ActorListResponseDto: {
1836
+ /**
1837
+ * @description Owning community UUID.
1838
+ * @example cccccccc-cccc-cccc-cccc-cccccccccccc
1839
+ */
1840
+ community_id: string;
1841
+ /**
1842
+ * @description ISO timestamp.
1843
+ * @example 2026-05-01T12:00:00.000Z
1844
+ */
1845
+ created_at: string;
1846
+ /**
1847
+ * @description Optional description.
1848
+ * @example Curated tech accounts I follow.
1849
+ */
1850
+ description: string | null;
1851
+ /**
1852
+ * @description List UUID.
1853
+ * @example llllllll-0000-0000-0000-000000000001
1854
+ */
1855
+ id: string;
1856
+ /**
1857
+ * @description Current member count.
1858
+ * @example 12
1859
+ */
1860
+ member_count: number;
1861
+ /**
1862
+ * @description List display name.
1863
+ * @example Tech news
1864
+ */
1865
+ name: string;
1866
+ /**
1867
+ * @description List owner — social actor UUID.
1868
+ * @example aaaaaaaa-0000-0000-0000-000000000001
1869
+ */
1870
+ owner_id: string;
1871
+ /**
1872
+ * @description ISO timestamp.
1873
+ * @example 2026-05-01T12:00:00.000Z
1874
+ */
1875
+ updated_at: string;
1876
+ /**
1877
+ * @description public = discoverable; private = owner-only.
1878
+ * @example public
1879
+ * @enum {string}
1880
+ */
1881
+ visibility: "public" | "private";
1882
+ };
1883
+ ActorPageResponseDto: {
1830
1884
  data: components["schemas"]["ActorResponseDto"][];
1831
1885
  pagination: components["schemas"]["PaginationResponseDto"];
1832
1886
  };
1833
1887
  ActorResponseDto: {
1834
- /** @description Avatar URL. */
1888
+ /**
1889
+ * @description Avatar URL.
1890
+ * @example https://cdn.example.com/avatars/ada.png
1891
+ */
1835
1892
  avatar_url: string | null;
1836
1893
  /**
1837
1894
  * @description Owning community UUID.
@@ -1839,43 +1896,46 @@ interface components {
1839
1896
  */
1840
1897
  community_id: string;
1841
1898
  /**
1842
- * @description ISO timestamp.
1899
+ * @description ISO timestamp the row was inserted.
1843
1900
  * @example 2026-05-01T12:00:00.000Z
1844
1901
  */
1845
1902
  created_at: string;
1846
1903
  /**
1847
1904
  * @description Display name.
1848
- * @example Alice
1905
+ * @example Ada Lovelace
1849
1906
  */
1850
1907
  display_name: string | null;
1851
1908
  /**
1852
- * @description Customer-supplied stable id.
1853
- * @example user-42
1909
+ * @description Customer-supplied stable identifier (your user id).
1910
+ * @example user_abc123
1854
1911
  */
1855
1912
  external_id: string;
1856
1913
  /**
1857
- * @description Actor UUID.
1858
- * @example aaaaaaaa-0000-0000-0000-000000000001
1914
+ * @description Social actor UUID.
1915
+ * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
1859
1916
  */
1860
1917
  id: string;
1861
- /** @description Free-form metadata. */
1918
+ /**
1919
+ * @description Free-form metadata blob.
1920
+ * @example {
1921
+ * "tier": "pro"
1922
+ * }
1923
+ */
1862
1924
  metadata: Record<string, never>;
1863
- /** @description ISO timestamp the shadow ban was applied, or null. */
1864
- shadow_banned_at: string | null;
1865
- /** @description Moderator note attached to the ban. */
1866
- shadow_banned_reason: string | null;
1867
- /** @description ISO timestamp the shadow ban auto-expires, or null for indefinite. */
1868
- shadow_banned_until: string | null;
1869
- /** @enum {string} */
1925
+ /**
1926
+ * @description Lifecycle status. `suspended` is moderator-applied via PATCH `status=suspended`; `deleted` is soft-deletion. Shadow-banning is a separate moderation mechanism that does not change `status`.
1927
+ * @example active
1928
+ * @enum {string}
1929
+ */
1870
1930
  status: "active" | "suspended" | "deleted";
1871
1931
  /**
1872
- * @description ISO timestamp.
1932
+ * @description ISO timestamp of the last update.
1873
1933
  * @example 2026-05-01T12:00:00.000Z
1874
1934
  */
1875
1935
  updated_at: string;
1876
1936
  };
1877
1937
  ActorSearchHitDto: {
1878
- actor: components["schemas"]["SearchActorResponseDto"];
1938
+ actor: components["schemas"]["ActorResponseDto"];
1879
1939
  /**
1880
1940
  * @description PG `ts_rank` score on the (display_name A, external_id B, bio C) tsvector. Higher = more relevant.
1881
1941
  * @example 0.6079
@@ -1901,6 +1961,18 @@ interface components {
1901
1961
  */
1902
1962
  reaction_counts: Record<string, never>;
1903
1963
  };
1964
+ AddListMemberDto: {
1965
+ /**
1966
+ * @description New member — social actor UUID.
1967
+ * @example aaaaaaaa-0000-0000-0000-000000000002
1968
+ */
1969
+ actor_id: string;
1970
+ /**
1971
+ * @description Caller — social actor UUID. Must equal the list owner.
1972
+ * @example aaaaaaaa-0000-0000-0000-000000000001
1973
+ */
1974
+ caller_actor_id: string;
1975
+ };
1904
1976
  AddMemberDto: {
1905
1977
  /**
1906
1978
  * @description The new member — social actor UUID.
@@ -2019,7 +2091,7 @@ interface components {
2019
2091
  };
2020
2092
  CloseFriendsListResponse: {
2021
2093
  data: components["schemas"]["CloseFriendResponse"][];
2022
- pagination: components["schemas"]["CursorPagination"];
2094
+ pagination: components["schemas"]["PaginationResponseDto"];
2023
2095
  };
2024
2096
  CommentListResponseDto: {
2025
2097
  data: components["schemas"]["CommentResponseDto"][];
@@ -2107,11 +2179,18 @@ interface components {
2107
2179
  */
2108
2180
  post_id: string;
2109
2181
  /**
2110
- * @description Lifecycle status. `removed` rows are hidden from public reads.
2182
+ * @description Map of reaction type to count, denormalised on the comment row in lock-step with the comment-reaction writes.
2183
+ * @example {
2184
+ * "like": 2
2185
+ * }
2186
+ */
2187
+ reaction_counts: Record<string, never>;
2188
+ /**
2189
+ * @description Lifecycle status. `pending_approval` = held by restricted-commenter pre-moderation; list endpoints surface these rows only to the comment author and the post-author (who publishes them via POST :commentId/approve). `removed` rows are hidden from public reads.
2111
2190
  * @example published
2112
2191
  * @enum {string}
2113
2192
  */
2114
- status: "published" | "hidden" | "removed";
2193
+ status: "published" | "hidden" | "removed" | "pending_approval";
2115
2194
  /**
2116
2195
  * @description ISO timestamp of the last update.
2117
2196
  * @example 2026-05-01T12:00:00.000Z
@@ -2514,6 +2593,20 @@ interface components {
2514
2593
  */
2515
2594
  target_kind: "post" | "comment";
2516
2595
  };
2596
+ CreateFlagResponseDto: {
2597
+ /**
2598
+ * @description `true` when this flag pushed the target over the community's `auto_hide_flag_threshold` and the target was auto-hidden as a side effect.
2599
+ * @example false
2600
+ */
2601
+ auto_hidden: boolean;
2602
+ /**
2603
+ * @description `true` when this call inserted a new flag; `false` when de-duplicated to an existing open flag from the same reporter on the same target.
2604
+ * @example true
2605
+ */
2606
+ created: boolean;
2607
+ /** @description The flag row (existing open flag on de-duplicated retry). */
2608
+ flag: components["schemas"]["FlagResponseDto"];
2609
+ };
2517
2610
  CreateHashtagFollowDto: {
2518
2611
  /**
2519
2612
  * @description Lowercase tag (without `#`). Must already exist in the community directory.
@@ -2618,9 +2711,9 @@ interface components {
2618
2711
  */
2619
2712
  created: boolean;
2620
2713
  /** @description The newly-created (or existing) repost post row. */
2621
- repost: components["schemas"]["RepostPostResponseDto"];
2714
+ repost: components["schemas"]["PostResponseDto"];
2622
2715
  /** @description The source post, with refreshed `repost_count`. */
2623
- source: components["schemas"]["RepostPostResponseDto"];
2716
+ source: components["schemas"]["PostResponseDto"];
2624
2717
  };
2625
2718
  CreateWebhookDto: {
2626
2719
  /**
@@ -2707,18 +2800,6 @@ interface components {
2707
2800
  */
2708
2801
  url: string;
2709
2802
  };
2710
- CursorPagination: {
2711
- /**
2712
- * @description Whether more pages exist after this one.
2713
- * @example false
2714
- */
2715
- has_more: boolean;
2716
- /**
2717
- * @description Opaque base64url cursor; null when no further pages.
2718
- * @example null
2719
- */
2720
- next_cursor: string | null;
2721
- };
2722
2803
  DeleteActorListDto: {
2723
2804
  /**
2724
2805
  * @description Caller — social actor UUID. Must equal the list owner.
@@ -2766,10 +2847,10 @@ interface components {
2766
2847
  /** @description Delivery row UUID. */
2767
2848
  id: string;
2768
2849
  /**
2769
- * @description Total round-trip time in ms.
2850
+ * @description Total round-trip time in ms. Null on transport-level failure.
2770
2851
  * @example 67
2771
2852
  */
2772
- latency_ms: number;
2853
+ latency_ms: number | null;
2773
2854
  /**
2774
2855
  * @description Signed request body that was sent.
2775
2856
  * @example {}
@@ -2843,6 +2924,13 @@ interface components {
2843
2924
  * @enum {string}
2844
2925
  */
2845
2926
  kind: "text" | "image" | "video" | "audio" | "system";
2927
+ /**
2928
+ * @description Map of reaction type to count, denormalised on the message row in lock-step with the DM-reaction writes.
2929
+ * @example {
2930
+ * "like": 1
2931
+ * }
2932
+ */
2933
+ reaction_counts: Record<string, never>;
2846
2934
  /**
2847
2935
  * @description Threaded inline reply target.
2848
2936
  * @example null
@@ -2968,6 +3056,13 @@ interface components {
2968
3056
  * @enum {string}
2969
3057
  */
2970
3058
  kind: "text" | "image" | "video" | "audio" | "system";
3059
+ /**
3060
+ * @description Map of reaction type to count, denormalised on the message row in lock-step with the DM-reaction writes.
3061
+ * @example {
3062
+ * "like": 1
3063
+ * }
3064
+ */
3065
+ reaction_counts: Record<string, never>;
2971
3066
  /**
2972
3067
  * @description Threaded inline reply target.
2973
3068
  * @example null
@@ -2980,93 +3075,10 @@ interface components {
2980
3075
  sender_id: string;
2981
3076
  };
2982
3077
  DraftListResponseDto: {
2983
- data: components["schemas"]["DraftPostResponseDto"][];
3078
+ /** @description Draft post rows — status is always 'draft' on this endpoint. */
3079
+ data: components["schemas"]["PostResponseDto"][];
2984
3080
  pagination: components["schemas"]["PaginationResponseDto"];
2985
3081
  };
2986
- DraftPostResponseDto: {
2987
- /**
2988
- * @description Author actor UUID.
2989
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
2990
- */
2991
- actor_id: string;
2992
- /**
2993
- * @description Free-form attributes blob.
2994
- * @example {}
2995
- */
2996
- attributes: Record<string, never>;
2997
- /**
2998
- * @description Body draft text.
2999
- * @example WIP — half a thought…
3000
- */
3001
- body: string | null;
3002
- /**
3003
- * @description Always 0 for drafts.
3004
- * @example 0
3005
- */
3006
- comment_count: number;
3007
- /**
3008
- * @description Owning community UUID.
3009
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3010
- */
3011
- community_id: string;
3012
- /**
3013
- * @description ISO timestamp the draft was created.
3014
- * @example 2026-05-01T12:00:00.000Z
3015
- */
3016
- created_at: string;
3017
- /**
3018
- * @description Optional expires_at carried into the published post.
3019
- * @example null
3020
- */
3021
- expires_at: string | null;
3022
- /**
3023
- * @description Draft post UUID.
3024
- * @example bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
3025
- */
3026
- id: string;
3027
- /**
3028
- * @description Free-form post kind.
3029
- * @example text
3030
- */
3031
- kind: string;
3032
- /**
3033
- * @description Pinned flag carried into the published post.
3034
- * @example false
3035
- */
3036
- pinned: boolean;
3037
- /**
3038
- * @description Empty for drafts (engagement begins at publish).
3039
- * @example {}
3040
- */
3041
- reaction_counts: Record<string, never>;
3042
- /**
3043
- * @description Always 'draft' for this endpoint.
3044
- * @example draft
3045
- * @enum {string}
3046
- */
3047
- status: "draft";
3048
- /**
3049
- * @description Optional title.
3050
- * @example null
3051
- */
3052
- title: string | null;
3053
- /**
3054
- * @description ISO timestamp of the last update.
3055
- * @example 2026-05-01T12:00:00.000Z
3056
- */
3057
- updated_at: string;
3058
- /**
3059
- * @description Optional URL.
3060
- * @example null
3061
- */
3062
- url: string | null;
3063
- /**
3064
- * @description Visibility scope chosen at draft time. Applies once promoted to published.
3065
- * @example public
3066
- * @enum {string}
3067
- */
3068
- visibility: "public" | "followers" | "close_friends" | "private";
3069
- };
3070
3082
  EdgeListResponseDto: {
3071
3083
  data: components["schemas"]["EdgeResponseDto"][];
3072
3084
  pagination: components["schemas"]["PaginationResponseDto"];
@@ -3098,10 +3110,11 @@ interface components {
3098
3110
  */
3099
3111
  id: string;
3100
3112
  /**
3101
- * @description Edge kind. `follow`, `mute`, `block`, `save`, or `reaction:<type>` for post reactions.
3113
+ * @description Edge kind. The actor-edge routes emit exactly these four; post reactions and bookmarks have their own response shapes.
3102
3114
  * @example follow
3115
+ * @enum {string}
3103
3116
  */
3104
- kind: string;
3117
+ kind: "follow" | "mute" | "block" | "restrict";
3105
3118
  /**
3106
3119
  * @description Free-form payload stored on the edge (e.g. mute reason).
3107
3120
  * @example {}
@@ -3113,23 +3126,6 @@ interface components {
3113
3126
  */
3114
3127
  src_actor_id: string;
3115
3128
  };
3116
- ErrorResponse: {
3117
- /**
3118
- * @description Stable error code.
3119
- * @example NOT_FOUND
3120
- */
3121
- code?: string;
3122
- /**
3123
- * @description Human-readable error message.
3124
- * @example Post not found
3125
- */
3126
- message: Record<string, never>;
3127
- /**
3128
- * @description HTTP status code echoed in the body.
3129
- * @example 404
3130
- */
3131
- statusCode: number;
3132
- };
3133
3129
  ErrorResponseDto: {
3134
3130
  /**
3135
3131
  * @description Stable error code for programmatic handling. Optional — newer routes set it where the message alone is ambiguous.
@@ -3147,130 +3143,44 @@ interface components {
3147
3143
  */
3148
3144
  statusCode: number;
3149
3145
  };
3150
- FeedPostResponseDto: {
3151
- /**
3152
- * @description Author actor UUID.
3153
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
3154
- */
3155
- actor_id: string;
3156
- /**
3157
- * @description Free-form attributes blob.
3158
- * @example {}
3159
- */
3160
- attributes: Record<string, never>;
3161
- /**
3162
- * @description Body text/markdown.
3163
- * @example Stories are live!
3164
- */
3165
- body: string | null;
3166
- /**
3167
- * @description Live denormalised comment count.
3168
- * @example 4
3169
- */
3170
- comment_count: number;
3146
+ FeedResponseDto: {
3147
+ data: components["schemas"]["PostResponseDto"][];
3148
+ /** @description Cursor encodes `(score, id)` for `ranked` feeds and `(created_at, id)` for `chronological` feeds. Cursors are NOT interchangeable between modes. */
3149
+ pagination: components["schemas"]["PaginationResponseDto"];
3150
+ };
3151
+ FlagListResponseDto: {
3152
+ data: components["schemas"]["FlagResponseDto"][];
3153
+ pagination: components["schemas"]["PaginationResponseDto"];
3154
+ };
3155
+ FlagResponseDto: {
3171
3156
  /**
3172
3157
  * @description Owning community UUID.
3173
3158
  * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3174
3159
  */
3175
3160
  community_id: string;
3176
3161
  /**
3177
- * @description ISO timestamp the post was created.
3162
+ * @description ISO timestamp the row was inserted.
3178
3163
  * @example 2026-05-01T12:00:00.000Z
3179
3164
  */
3180
3165
  created_at: string;
3181
3166
  /**
3182
- * @description ISO timestamp; null = no expiry.
3183
- * @example null
3184
- */
3185
- expires_at: string | null;
3186
- /**
3187
- * @description Post UUID.
3188
- * @example bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
3167
+ * @description Flag UUID.
3168
+ * @example ffffffff-0000-0000-0000-000000000001
3189
3169
  */
3190
3170
  id: string;
3191
3171
  /**
3192
- * @description Free-form post kind.
3193
- * @example text
3194
- */
3195
- kind: string;
3196
- /**
3197
- * @description Pinned for highlights.
3198
- * @example false
3172
+ * @description Free-text reason; empty string when none provided.
3173
+ * @example Spam — same link posted 6 times in 5 minutes.
3199
3174
  */
3200
- pinned: boolean;
3175
+ reason: string;
3201
3176
  /**
3202
- * @description Live denormalised reaction counts.
3203
- * @example {
3204
- * "like": 12
3205
- * }
3177
+ * @description Social actor UUID who reported.
3178
+ * @example aaaaaaaa-0000-0000-0000-000000000001
3206
3179
  */
3207
- reaction_counts: Record<string, never>;
3180
+ reporter_actor_id: string;
3208
3181
  /**
3209
- * @description Lifecycle status. Feed only returns `published`.
3210
- * @example published
3211
- * @enum {string}
3212
- */
3213
- status: "published" | "hidden" | "removed";
3214
- /**
3215
- * @description Optional title.
3216
- * @example null
3217
- */
3218
- title: string | null;
3219
- /**
3220
- * @description ISO timestamp of the last update.
3221
- * @example 2026-05-01T12:00:00.000Z
3222
- */
3223
- updated_at: string;
3224
- /**
3225
- * @description Optional URL.
3226
- * @example null
3227
- */
3228
- url: string | null;
3229
- /**
3230
- * @description Visibility scope; the feed is already filtered to what the requester can see.
3231
- * @example public
3232
- * @enum {string}
3233
- */
3234
- visibility: "public" | "followers" | "close_friends" | "private";
3235
- };
3236
- FeedResponseDto: {
3237
- data: components["schemas"]["FeedPostResponseDto"][];
3238
- /** @description Cursor encodes `(score, id)` for `ranked` feeds and `(created_at, id)` for `chronological` feeds. Cursors are NOT interchangeable between modes. */
3239
- pagination: components["schemas"]["PaginationResponseDto"];
3240
- };
3241
- FlagListResponseDto: {
3242
- data: components["schemas"]["FlagResponseDto"][];
3243
- pagination: components["schemas"]["PaginationResponseDto"];
3244
- };
3245
- FlagResponseDto: {
3246
- /**
3247
- * @description Owning community UUID.
3248
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3249
- */
3250
- community_id: string;
3251
- /**
3252
- * @description ISO timestamp the row was inserted.
3253
- * @example 2026-05-01T12:00:00.000Z
3254
- */
3255
- created_at: string;
3256
- /**
3257
- * @description Flag UUID.
3258
- * @example ffffffff-0000-0000-0000-000000000001
3259
- */
3260
- id: string;
3261
- /**
3262
- * @description Free-text reason; empty string when none provided.
3263
- * @example Spam — same link posted 6 times in 5 minutes.
3264
- */
3265
- reason: string;
3266
- /**
3267
- * @description Social actor UUID who reported.
3268
- * @example aaaaaaaa-0000-0000-0000-000000000001
3269
- */
3270
- reporter_actor_id: string;
3271
- /**
3272
- * @description Lifecycle. `open` is in the queue; admins close to `dismissed` or `actioned`.
3273
- * @example open
3182
+ * @description Lifecycle. `open` is in the queue; admins close to `dismissed` or `actioned`.
3183
+ * @example open
3274
3184
  * @enum {string}
3275
3185
  */
3276
3186
  status: "open" | "dismissed" | "actioned";
@@ -3368,12 +3278,9 @@ interface components {
3368
3278
  tag: string;
3369
3279
  };
3370
3280
  HighlightsResponse: {
3371
- /**
3372
- * @description Page of pinned posts.
3373
- * @example []
3374
- */
3375
- data: string[];
3376
- pagination: components["schemas"]["CursorPagination"];
3281
+ /** @description Page of pinned posts (full post rows; expiry is bypassed for pinned rows). */
3282
+ data: components["schemas"]["PostResponseDto"][];
3283
+ pagination: components["schemas"]["PaginationResponseDto"];
3377
3284
  };
3378
3285
  LeaveConversationDto: {
3379
3286
  /**
@@ -3443,7 +3350,7 @@ interface components {
3443
3350
  };
3444
3351
  ModerationActionDto: {
3445
3352
  /**
3446
- * @description Action to apply. `hide`/`remove` transition target status; `unhide`/`restore` reverse them. `warn`/`ban` are audit-only. `dismiss` closes the flag with no target change.
3353
+ * @description Action to apply. `hide`/`remove` transition target status; `unhide`/`restore` reverse them. `warn`/`ban` are audit-only — they record the decision without touching the target; for actor-level enforcement use PATCH `/actors/:actorId` with `status=suspended` or the shadow-ban endpoints on this controller. `dismiss` closes the flag with no target change.
3447
3354
  * @example hide
3448
3355
  * @enum {string}
3449
3356
  */
@@ -3472,7 +3379,7 @@ interface components {
3472
3379
  */
3473
3380
  created_at: string;
3474
3381
  /**
3475
- * @description Flag UUID this action closed; `null` for unsolicited mod actions.
3382
+ * @description Flag UUID this action was applied to.
3476
3383
  * @example ffffffff-0000-0000-0000-000000000001
3477
3384
  */
3478
3385
  flag_id: string | null;
@@ -3502,6 +3409,66 @@ interface components {
3502
3409
  */
3503
3410
  target_kind: "post" | "comment";
3504
3411
  };
3412
+ ModerationActorListResponseDto: {
3413
+ data: components["schemas"]["ModerationActorResponseDto"][];
3414
+ pagination: components["schemas"]["PaginationResponseDto"];
3415
+ };
3416
+ ModerationActorResponseDto: {
3417
+ /**
3418
+ * @description Avatar URL.
3419
+ * @example https://cdn.example.com/avatars/ada.png
3420
+ */
3421
+ avatar_url: string | null;
3422
+ /**
3423
+ * @description Owning community UUID.
3424
+ * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3425
+ */
3426
+ community_id: string;
3427
+ /**
3428
+ * @description ISO timestamp the row was inserted.
3429
+ * @example 2026-05-01T12:00:00.000Z
3430
+ */
3431
+ created_at: string;
3432
+ /**
3433
+ * @description Display name.
3434
+ * @example Ada Lovelace
3435
+ */
3436
+ display_name: string | null;
3437
+ /**
3438
+ * @description Customer-supplied stable identifier (your user id).
3439
+ * @example user_abc123
3440
+ */
3441
+ external_id: string;
3442
+ /**
3443
+ * @description Social actor UUID.
3444
+ * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
3445
+ */
3446
+ id: string;
3447
+ /**
3448
+ * @description Free-form metadata blob.
3449
+ * @example {
3450
+ * "tier": "pro"
3451
+ * }
3452
+ */
3453
+ metadata: Record<string, never>;
3454
+ /** @description ISO timestamp the shadow ban was applied, or null. */
3455
+ shadow_banned_at: string | null;
3456
+ /** @description Moderator note attached to the ban. */
3457
+ shadow_banned_reason: string | null;
3458
+ /** @description ISO timestamp the shadow ban auto-expires, or null for indefinite. */
3459
+ shadow_banned_until: string | null;
3460
+ /**
3461
+ * @description Lifecycle status. `suspended` is moderator-applied via PATCH `status=suspended`; `deleted` is soft-deletion. Shadow-banning is a separate moderation mechanism that does not change `status`.
3462
+ * @example active
3463
+ * @enum {string}
3464
+ */
3465
+ status: "active" | "suspended" | "deleted";
3466
+ /**
3467
+ * @description ISO timestamp of the last update.
3468
+ * @example 2026-05-01T12:00:00.000Z
3469
+ */
3470
+ updated_at: string;
3471
+ };
3505
3472
  MutedTermResponseDto: {
3506
3473
  /**
3507
3474
  * @description Owning actor UUID.
@@ -3535,22 +3502,10 @@ interface components {
3535
3502
  */
3536
3503
  term: string;
3537
3504
  };
3538
- NotificationListPagination: {
3539
- /**
3540
- * @description Whether more pages exist after this one.
3541
- * @example false
3542
- */
3543
- has_more: boolean;
3544
- /**
3545
- * @description Opaque base64url cursor for the next page; `null` when no further pages.
3546
- * @example eyJjcmVhdGVkX2F0IjoiMjAyNi0wNS0wMVQxMjowMDowMC4wMDBaIiwiaWQiOiIxMTExMSJ9
3547
- */
3548
- next_cursor: string | null;
3549
- };
3550
3505
  NotificationListResponse: {
3551
3506
  /** @description Page of notifications, newest first. */
3552
3507
  data: components["schemas"]["NotificationResponse"][];
3553
- pagination: components["schemas"]["NotificationListPagination"];
3508
+ pagination: components["schemas"]["PaginationResponseDto"];
3554
3509
  };
3555
3510
  NotificationPrefListResponseDto: {
3556
3511
  /** @description One row per known NotificationKind. Kinds the actor has not explicitly toggled report `enabled=true` and an epoch `updated_at`, so the client always sees the full catalogue with effective state. */
@@ -3572,7 +3527,7 @@ interface components {
3572
3527
  * @example follow
3573
3528
  * @enum {string}
3574
3529
  */
3575
- kind: "follow" | "reaction" | "comment_on_post" | "reply_to_comment" | "mention" | "vote" | "repost" | "quote_post";
3530
+ kind: "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";
3576
3531
  /**
3577
3532
  * @description ISO timestamp of the last update. Synthesised entries (no explicit row) report epoch.
3578
3533
  * @example 2026-05-01T12:00:00.000Z
@@ -3601,13 +3556,13 @@ interface components {
3601
3556
  */
3602
3557
  id: string;
3603
3558
  /**
3604
- * @description What happened. `follow` / `reaction` / `comment_on_post` / `reply_to_comment`. `mention` is reserved.
3559
+ * @description What happened. Content kinds (`follow`, `reaction`, `comment_on_post`, `reply_to_comment`, `mention`, `vote`, `repost`, `quote_post`) plus the DM kinds (`dm_new_message`, `dm_added_to_group`, `dm_role_changed`, `dm_reaction`).
3605
3560
  * @example reaction
3606
3561
  * @enum {string}
3607
3562
  */
3608
- kind: "follow" | "reaction" | "comment_on_post" | "reply_to_comment" | "mention";
3563
+ kind: "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";
3609
3564
  /**
3610
- * @description Kind-specific extras. `reaction`: `{type}`. `comment_on_post` / `reply_to_comment`: `{comment_id}`.
3565
+ * @description Kind-specific extras. `reaction`: `{type}` (+ `{post_id}` when the target is a comment). `comment_on_post` / `reply_to_comment`: `{comment_id}`. `mention`: `{post_id}` (+ `{comment_id}` for comment mentions).
3611
3566
  * @example {
3612
3567
  * "type": "like"
3613
3568
  * }
@@ -3623,17 +3578,22 @@ interface components {
3623
3578
  * @example aaaaaaaa-0000-0000-0000-000000000001
3624
3579
  */
3625
3580
  recipient_actor_id: string;
3581
+ /**
3582
+ * @description When `true`, the recipient has restricted the triggering actor — the row is hidden from the default `inbox` slice and surfaces on `?status=requests` (or `all`).
3583
+ * @example false
3584
+ */
3585
+ suppressed: boolean;
3626
3586
  /**
3627
3587
  * @description id of the actor / post / comment the event happened on.
3628
3588
  * @example bbbbbbbb-0000-0000-0000-000000000001
3629
3589
  */
3630
3590
  target_id: string;
3631
3591
  /**
3632
- * @description Switches what `target_id` references. `actor` for follow; `post` for reaction / comment_on_post; `comment` for reply_to_comment.
3592
+ * @description Switches what `target_id` references. `actor` for follow; `post` for vote / repost / quote_post / comment_on_post and post-targeted reactions/mentions; `comment` for reply_to_comment and comment-targeted reactions/mentions; `direct_message` for the dm_* kinds.
3633
3593
  * @example post
3634
3594
  * @enum {string}
3635
3595
  */
3636
- target_kind: "actor" | "post" | "comment";
3596
+ target_kind: "actor" | "post" | "comment" | "direct_message";
3637
3597
  };
3638
3598
  PaginationResponseDto: {
3639
3599
  /**
@@ -3760,7 +3720,7 @@ interface components {
3760
3720
  */
3761
3721
  id: string;
3762
3722
  /**
3763
- * @description Free-form post kind. Common: text, link, image, story.
3723
+ * @description Free-form post kind. Common: text, link, image, story, repost, quote.
3764
3724
  * @example text
3765
3725
  */
3766
3726
  kind: string;
@@ -3787,17 +3747,22 @@ interface components {
3787
3747
  * @example 0
3788
3748
  */
3789
3749
  repost_count: number;
3750
+ /**
3751
+ * @description ISO publish-at timestamp, set while status='scheduled'. The scheduler cron promotes the post to published and clears this field; a manual PATCH promotion leaves the last value in place unless the caller also passes scheduled_for: null.
3752
+ * @example null
3753
+ */
3754
+ scheduled_for: string | null;
3790
3755
  /**
3791
3756
  * @description For kind='repost' / 'quote': the source post UUID.
3792
3757
  * @example null
3793
3758
  */
3794
3759
  source_post_id: string | null;
3795
3760
  /**
3796
- * @description Lifecycle status. `removed` rows are hidden from public reads.
3761
+ * @description Lifecycle status. Public list/feed surfaces only return `published`; `draft` and `scheduled` rows surface exclusively on the author-scoped drafts / scheduled-posts listings and author reads. `removed` rows are hidden from reads.
3797
3762
  * @example published
3798
3763
  * @enum {string}
3799
3764
  */
3800
- status: "published" | "hidden" | "removed";
3765
+ status: "published" | "hidden" | "removed" | "draft" | "scheduled";
3801
3766
  /**
3802
3767
  * @description Optional title (1-240 chars).
3803
3768
  * @example Shipping Phase 8
@@ -3814,7 +3779,7 @@ interface components {
3814
3779
  */
3815
3780
  url: string | null;
3816
3781
  /**
3817
- * @description Denormalised impression count, bumped via POST /posts/views.
3782
+ * @description Denormalised impression count, bumped via the batch POST /posts/views endpoint.
3818
3783
  * @example 0
3819
3784
  */
3820
3785
  view_count: number;
@@ -3862,7 +3827,7 @@ interface components {
3862
3827
  title: string | null;
3863
3828
  };
3864
3829
  PostSearchHitDto: {
3865
- post: components["schemas"]["SearchPostResponseDto"];
3830
+ post: components["schemas"]["PostResponseDto"];
3866
3831
  /**
3867
3832
  * @description PG ts_rank score on the (title A, body B) tsvector. Higher = more relevant. Returned even when order='recent' so clients can render a relevance badge.
3868
3833
  * @example 0.6079
@@ -3882,13 +3847,55 @@ interface components {
3882
3847
  */
3883
3848
  reaction_counts: Record<string, never>;
3884
3849
  };
3850
+ ReactionEdgeResponseDto: {
3851
+ /**
3852
+ * @description Owning community UUID.
3853
+ * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3854
+ */
3855
+ community_id: string;
3856
+ /**
3857
+ * @description ISO timestamp.
3858
+ * @example 2026-05-01T12:00:00.000Z
3859
+ */
3860
+ created_at: string;
3861
+ /**
3862
+ * @description Destination actor UUID — always `null` for post reactions (the target is `dst_post_id`).
3863
+ * @example null
3864
+ */
3865
+ dst_actor_id: string | null;
3866
+ /**
3867
+ * @description Target post UUID.
3868
+ * @example pppppppp-pppp-pppp-pppp-pppppppppppp
3869
+ */
3870
+ dst_post_id: string;
3871
+ /**
3872
+ * @description Edge UUID.
3873
+ * @example eeeeeeee-0000-0000-0000-000000000001
3874
+ */
3875
+ id: string;
3876
+ /**
3877
+ * @description Edge kind (`reaction:<type>`).
3878
+ * @example reaction:like
3879
+ */
3880
+ kind: string;
3881
+ /**
3882
+ * @description Free-form payload.
3883
+ * @example {}
3884
+ */
3885
+ payload: Record<string, never>;
3886
+ /**
3887
+ * @description Reactor actor UUID.
3888
+ * @example aaaaaaaa-0000-0000-0000-000000000001
3889
+ */
3890
+ src_actor_id: string;
3891
+ };
3885
3892
  ReactionResponseDto: {
3886
3893
  /**
3887
3894
  * @description `true` on first call; `false` on idempotent retry.
3888
3895
  * @example true
3889
3896
  */
3890
3897
  created: boolean;
3891
- edge: components["schemas"]["EdgeResponseDto"];
3898
+ edge: components["schemas"]["ReactionEdgeResponseDto"];
3892
3899
  /**
3893
3900
  * @description Denormalised reaction counts after the write.
3894
3901
  * @example {
@@ -3915,6 +3922,13 @@ interface components {
3915
3922
  */
3916
3923
  post_ids: string[];
3917
3924
  };
3925
+ RemoveListMemberDto: {
3926
+ /**
3927
+ * @description Caller — social actor UUID. Must equal the list owner.
3928
+ * @example aaaaaaaa-0000-0000-0000-000000000001
3929
+ */
3930
+ caller_actor_id: string;
3931
+ };
3918
3932
  RemoveMemberDto: {
3919
3933
  /**
3920
3934
  * @description Social actor UUID of the acting party. Equal to the target for self-leave.
@@ -3933,235 +3947,9 @@ interface components {
3933
3947
  };
3934
3948
  RepostListResponseDto: {
3935
3949
  /** @description Page of repost post rows, each carrying the reposting actor_id. */
3936
- data: components["schemas"]["RepostPostResponseDto"][];
3950
+ data: components["schemas"]["PostResponseDto"][];
3937
3951
  pagination: components["schemas"]["PaginationResponseDto"];
3938
3952
  };
3939
- RepostPostResponseDto: {
3940
- /**
3941
- * @description Author actor UUID.
3942
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
3943
- */
3944
- actor_id: string;
3945
- /**
3946
- * @description Free-form attributes blob.
3947
- * @example {}
3948
- */
3949
- attributes: Record<string, never>;
3950
- /**
3951
- * @description Body. Always null for reposts.
3952
- * @example null
3953
- */
3954
- body: string | null;
3955
- /**
3956
- * @description Live denormalised comment count.
3957
- * @example 0
3958
- */
3959
- comment_count: number;
3960
- /**
3961
- * @description Owning community UUID.
3962
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
3963
- */
3964
- community_id: string;
3965
- /**
3966
- * @description ISO timestamp.
3967
- * @example 2026-05-01T12:00:00.000Z
3968
- */
3969
- created_at: string;
3970
- /**
3971
- * @description ISO timestamp; null = no expiry.
3972
- * @example null
3973
- */
3974
- expires_at: string | null;
3975
- /**
3976
- * @description Post UUID.
3977
- * @example bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
3978
- */
3979
- id: string;
3980
- /**
3981
- * @description Post kind. 'repost' for repost rows.
3982
- * @example repost
3983
- */
3984
- kind: string;
3985
- /**
3986
- * @description Pinned for highlights.
3987
- * @example false
3988
- */
3989
- pinned: boolean;
3990
- /**
3991
- * @description Live denormalised reaction counts.
3992
- * @example {}
3993
- */
3994
- reaction_counts: Record<string, never>;
3995
- /**
3996
- * @description Reposts of this post (always 0 for the repost row itself).
3997
- * @example 0
3998
- */
3999
- repost_count: number;
4000
- /**
4001
- * @description For reposts: source post UUID.
4002
- * @example bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
4003
- */
4004
- source_post_id: string | null;
4005
- /**
4006
- * @description Lifecycle status.
4007
- * @example published
4008
- * @enum {string}
4009
- */
4010
- status: "published" | "hidden" | "removed" | "draft";
4011
- /**
4012
- * @description Optional title.
4013
- * @example null
4014
- */
4015
- title: string | null;
4016
- /**
4017
- * @description ISO timestamp.
4018
- * @example 2026-05-01T12:00:00.000Z
4019
- */
4020
- updated_at: string;
4021
- /**
4022
- * @description Optional URL.
4023
- * @example null
4024
- */
4025
- url: string | null;
4026
- /**
4027
- * @description Visibility scope (inherited from the source).
4028
- * @example public
4029
- * @enum {string}
4030
- */
4031
- visibility: "public" | "followers" | "close_friends" | "private";
4032
- };
4033
- SearchActorResponseDto: {
4034
- /**
4035
- * @description Avatar URL.
4036
- * @example https://...
4037
- */
4038
- avatar_url: string | null;
4039
- /**
4040
- * @description Owning community UUID.
4041
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
4042
- */
4043
- community_id: string;
4044
- /**
4045
- * @description ISO timestamp.
4046
- * @example 2026-05-01T12:00:00.000Z
4047
- */
4048
- created_at: string;
4049
- /**
4050
- * @description Display name.
4051
- * @example Ada Lovelace
4052
- */
4053
- display_name: string | null;
4054
- /**
4055
- * @description Customer-supplied stable identifier.
4056
- * @example ada
4057
- */
4058
- external_id: string;
4059
- /**
4060
- * @description Social actor UUID.
4061
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
4062
- */
4063
- id: string;
4064
- /**
4065
- * @description Free-form metadata.
4066
- * @example {}
4067
- */
4068
- metadata: Record<string, never>;
4069
- /**
4070
- * @description Lifecycle status. Search only surfaces `active` actors.
4071
- * @example active
4072
- * @enum {string}
4073
- */
4074
- status: "active" | "suspended" | "deleted";
4075
- /**
4076
- * @description ISO timestamp.
4077
- * @example 2026-05-01T12:00:00.000Z
4078
- */
4079
- updated_at: string;
4080
- };
4081
- SearchPostResponseDto: {
4082
- /**
4083
- * @description Author actor UUID.
4084
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
4085
- */
4086
- actor_id: string;
4087
- /**
4088
- * @description Free-form attributes blob.
4089
- * @example {}
4090
- */
4091
- attributes: Record<string, never>;
4092
- /**
4093
- * @description Body text.
4094
- * @example shipping today.
4095
- */
4096
- body: string | null;
4097
- /**
4098
- * @description Live denormalised comment count.
4099
- * @example 0
4100
- */
4101
- comment_count: number;
4102
- /**
4103
- * @description Owning community UUID.
4104
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
4105
- */
4106
- community_id: string;
4107
- /**
4108
- * @description ISO timestamp.
4109
- * @example 2026-05-01T12:00:00.000Z
4110
- */
4111
- created_at: string;
4112
- /**
4113
- * @description ISO timestamp; null = no expiry.
4114
- * @example null
4115
- */
4116
- expires_at: string | null;
4117
- /**
4118
- * @description Post UUID.
4119
- * @example bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
4120
- */
4121
- id: string;
4122
- /**
4123
- * @description Free-form post kind.
4124
- * @example text
4125
- */
4126
- kind: string;
4127
- /**
4128
- * @description Pinned for highlights.
4129
- * @example false
4130
- */
4131
- pinned: boolean;
4132
- /**
4133
- * @description Live denormalised reaction counts.
4134
- * @example {}
4135
- */
4136
- reaction_counts: Record<string, never>;
4137
- /**
4138
- * @description Lifecycle status. Search only surfaces 'published'.
4139
- * @example published
4140
- * @enum {string}
4141
- */
4142
- status: "published" | "hidden" | "removed" | "draft";
4143
- /**
4144
- * @description Optional title.
4145
- * @example null
4146
- */
4147
- title: string | null;
4148
- /**
4149
- * @description ISO timestamp.
4150
- * @example 2026-05-01T12:00:00.000Z
4151
- */
4152
- updated_at: string;
4153
- /**
4154
- * @description Optional URL.
4155
- * @example null
4156
- */
4157
- url: string | null;
4158
- /**
4159
- * @description Visibility scope.
4160
- * @example public
4161
- * @enum {string}
4162
- */
4163
- visibility: "public" | "followers" | "close_friends" | "private";
4164
- };
4165
3953
  SendMessageDto: {
4166
3954
  attachments?: components["schemas"]["DirectMessageAttachmentDto"][];
4167
3955
  /**
@@ -4251,60 +4039,10 @@ interface components {
4251
4039
  };
4252
4040
  StoryViewersResponse: {
4253
4041
  data: components["schemas"]["StoryViewerResponse"][];
4254
- pagination: components["schemas"]["CursorPagination"];
4255
- };
4256
- SuggestedActorResponseDto: {
4257
- /**
4258
- * @description Avatar URL.
4259
- * @example https://cdn.example.com/avatars/ada.png
4260
- */
4261
- avatar_url: string | null;
4262
- /**
4263
- * @description Owning community UUID.
4264
- * @example cccccccc-cccc-cccc-cccc-cccccccccccc
4265
- */
4266
- community_id: string;
4267
- /**
4268
- * @description ISO timestamp.
4269
- * @example 2026-05-01T12:00:00.000Z
4270
- */
4271
- created_at: string;
4272
- /**
4273
- * @description Display name.
4274
- * @example Ada Lovelace
4275
- */
4276
- display_name: string | null;
4277
- /**
4278
- * @description Customer-supplied stable identifier.
4279
- * @example user_abc123
4280
- */
4281
- external_id: string;
4282
- /**
4283
- * @description Social actor UUID.
4284
- * @example aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
4285
- */
4286
- id: string;
4287
- /**
4288
- * @description Free-form metadata blob.
4289
- * @example {
4290
- * "tier": "pro"
4291
- * }
4292
- */
4293
- metadata: Record<string, never>;
4294
- /**
4295
- * @description Lifecycle status. Suggestions only surface `active` actors.
4296
- * @example active
4297
- * @enum {string}
4298
- */
4299
- status: "active" | "suspended" | "deleted";
4300
- /**
4301
- * @description ISO timestamp.
4302
- * @example 2026-05-01T12:00:00.000Z
4303
- */
4304
- updated_at: string;
4042
+ pagination: components["schemas"]["PaginationResponseDto"];
4305
4043
  };
4306
4044
  SuggestedFollowResponseDto: {
4307
- actor: components["schemas"]["SuggestedActorResponseDto"];
4045
+ actor: components["schemas"]["ActorResponseDto"];
4308
4046
  /**
4309
4047
  * @description Why this candidate surfaced. `followed_by_friends` is the friend-of-a-friend signal; `top_in_community` is the cold-start fallback used when FoF doesn't fill the requested limit.
4310
4048
  * @example followed_by_friends
@@ -4439,7 +4177,7 @@ interface components {
4439
4177
  /** @description ISO-8601 publish-at timestamp. Updating only valid while the post is `status="scheduled"`. Pass null to clear (typically only the scheduler does this on promotion). */
4440
4178
  scheduled_for?: string | null;
4441
4179
  /**
4442
- * @description Direct status transition. Pass `published` to promote a `draft` or `scheduled`. Prefer the moderation lane for `hidden`/`removed`. Transitions to/from `draft`/`scheduled` other than to `published` are 422.
4180
+ * @description Direct status transition. Pass `published` to promote a `draft` or `scheduled`. Prefer the moderation lane for `hidden`/`removed`.
4443
4181
  * @enum {string}
4444
4182
  */
4445
4183
  status?: "published" | "hidden" | "removed" | "draft" | "scheduled";
@@ -4584,10 +4322,19 @@ interface operations {
4584
4322
  [name: string]: unknown;
4585
4323
  };
4586
4324
  content: {
4587
- "application/json": components["schemas"]["ActorListResponseDto"];
4325
+ "application/json": components["schemas"]["ActorPageResponseDto"];
4588
4326
  };
4589
4327
  };
4590
- /** @description PAK lacks `social.read`. */
4328
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
4329
+ 400: {
4330
+ headers: {
4331
+ [name: string]: unknown;
4332
+ };
4333
+ content: {
4334
+ "application/json": components["schemas"]["ErrorResponseDto"];
4335
+ };
4336
+ };
4337
+ /** @description PAK lacks `social.list`. */
4591
4338
  403: {
4592
4339
  headers: {
4593
4340
  [name: string]: unknown;
@@ -4861,7 +4608,16 @@ interface operations {
4861
4608
  "application/json": components["schemas"]["EdgeListResponseDto"];
4862
4609
  };
4863
4610
  };
4864
- /** @description PAK lacks `social.read`. */
4611
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
4612
+ 400: {
4613
+ headers: {
4614
+ [name: string]: unknown;
4615
+ };
4616
+ content: {
4617
+ "application/json": components["schemas"]["ErrorResponseDto"];
4618
+ };
4619
+ };
4620
+ /** @description PAK lacks `social.list`. */
4865
4621
  403: {
4866
4622
  headers: {
4867
4623
  [name: string]: unknown;
@@ -4954,13 +4710,13 @@ interface operations {
4954
4710
  "application/json": components["schemas"]["CloseFriendsListResponse"];
4955
4711
  };
4956
4712
  };
4957
- /** @description Missing or invalid PAK. */
4958
- 401: {
4713
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
4714
+ 400: {
4959
4715
  headers: {
4960
4716
  [name: string]: unknown;
4961
4717
  };
4962
4718
  content: {
4963
- "application/json": components["schemas"]["ErrorResponse"];
4719
+ "application/json": components["schemas"]["ErrorResponseDto"];
4964
4720
  };
4965
4721
  };
4966
4722
  /** @description PAK lacks `social.close-friend.read`. */
@@ -4969,7 +4725,7 @@ interface operations {
4969
4725
  [name: string]: unknown;
4970
4726
  };
4971
4727
  content: {
4972
- "application/json": components["schemas"]["ErrorResponse"];
4728
+ "application/json": components["schemas"]["ErrorResponseDto"];
4973
4729
  };
4974
4730
  };
4975
4731
  /** @description Community or actor not found. */
@@ -4978,7 +4734,7 @@ interface operations {
4978
4734
  [name: string]: unknown;
4979
4735
  };
4980
4736
  content: {
4981
- "application/json": components["schemas"]["ErrorResponse"];
4737
+ "application/json": components["schemas"]["ErrorResponseDto"];
4982
4738
  };
4983
4739
  };
4984
4740
  };
@@ -5110,7 +4866,7 @@ interface operations {
5110
4866
  "application/json": components["schemas"]["ErrorResponseDto"];
5111
4867
  };
5112
4868
  };
5113
- /** @description PAK lacks `social.read`. */
4869
+ /** @description PAK lacks `social.list`. */
5114
4870
  403: {
5115
4871
  headers: {
5116
4872
  [name: string]: unknown;
@@ -5156,7 +4912,16 @@ interface operations {
5156
4912
  "application/json": components["schemas"]["EdgeListResponseDto"];
5157
4913
  };
5158
4914
  };
5159
- /** @description PAK lacks `social.read`. */
4915
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
4916
+ 400: {
4917
+ headers: {
4918
+ [name: string]: unknown;
4919
+ };
4920
+ content: {
4921
+ "application/json": components["schemas"]["ErrorResponseDto"];
4922
+ };
4923
+ };
4924
+ /** @description PAK lacks `social.list`. */
5160
4925
  403: {
5161
4926
  headers: {
5162
4927
  [name: string]: unknown;
@@ -5202,7 +4967,16 @@ interface operations {
5202
4967
  "application/json": components["schemas"]["EdgeListResponseDto"];
5203
4968
  };
5204
4969
  };
5205
- /** @description PAK lacks `social.read`. */
4970
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
4971
+ 400: {
4972
+ headers: {
4973
+ [name: string]: unknown;
4974
+ };
4975
+ content: {
4976
+ "application/json": components["schemas"]["ErrorResponseDto"];
4977
+ };
4978
+ };
4979
+ /** @description PAK lacks `social.list`. */
5206
4980
  403: {
5207
4981
  headers: {
5208
4982
  [name: string]: unknown;
@@ -5383,7 +5157,7 @@ interface operations {
5383
5157
  limit?: number;
5384
5158
  /** @description Cursor from the prior page. */
5385
5159
  cursor?: string;
5386
- /** @description Requester's external_id. Without it, only public pinned posts surface. */
5160
+ /** @description Requester social actor UUID. Without it, only public pinned posts surface. */
5387
5161
  requester_id?: string;
5388
5162
  };
5389
5163
  header?: never;
@@ -5406,22 +5180,13 @@ interface operations {
5406
5180
  "application/json": components["schemas"]["HighlightsResponse"];
5407
5181
  };
5408
5182
  };
5409
- /** @description Missing or invalid PAK. */
5410
- 401: {
5411
- headers: {
5412
- [name: string]: unknown;
5413
- };
5414
- content: {
5415
- "application/json": components["schemas"]["ErrorResponse"];
5416
- };
5417
- };
5418
- /** @description PAK lacks `social.read`. */
5183
+ /** @description PAK lacks `social.list`. */
5419
5184
  403: {
5420
5185
  headers: {
5421
5186
  [name: string]: unknown;
5422
5187
  };
5423
5188
  content: {
5424
- "application/json": components["schemas"]["ErrorResponse"];
5189
+ "application/json": components["schemas"]["ErrorResponseDto"];
5425
5190
  };
5426
5191
  };
5427
5192
  /** @description Community or actor not found. */
@@ -5430,7 +5195,7 @@ interface operations {
5430
5195
  [name: string]: unknown;
5431
5196
  };
5432
5197
  content: {
5433
- "application/json": components["schemas"]["ErrorResponse"];
5198
+ "application/json": components["schemas"]["ErrorResponseDto"];
5434
5199
  };
5435
5200
  };
5436
5201
  };
@@ -5650,7 +5415,16 @@ interface operations {
5650
5415
  "application/json": components["schemas"]["EdgeListResponseDto"];
5651
5416
  };
5652
5417
  };
5653
- /** @description PAK lacks `social.read`. */
5418
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
5419
+ 400: {
5420
+ headers: {
5421
+ [name: string]: unknown;
5422
+ };
5423
+ content: {
5424
+ "application/json": components["schemas"]["ErrorResponseDto"];
5425
+ };
5426
+ };
5427
+ /** @description PAK lacks `social.list`. */
5654
5428
  403: {
5655
5429
  headers: {
5656
5430
  [name: string]: unknown;
@@ -5722,8 +5496,8 @@ interface operations {
5722
5496
  communityId: string;
5723
5497
  /** @description Social actor UUID. */
5724
5498
  actorId: string;
5725
- /** @description NotificationKind label (`follow` | `reaction` | `comment_on_post` | `reply_to_comment` | `mention` | `vote`). */
5726
- kind: string;
5499
+ /** @description NotificationKind label. */
5500
+ kind: "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";
5727
5501
  };
5728
5502
  cookie?: never;
5729
5503
  };
@@ -5803,22 +5577,13 @@ interface operations {
5803
5577
  "application/json": components["schemas"]["NotificationListResponse"];
5804
5578
  };
5805
5579
  };
5806
- /** @description Missing or invalid PAK. */
5807
- 401: {
5808
- headers: {
5809
- [name: string]: unknown;
5810
- };
5811
- content: {
5812
- "application/json": components["schemas"]["ErrorResponse"];
5813
- };
5814
- };
5815
5580
  /** @description PAK lacks `social.notify.read` for this community. */
5816
5581
  403: {
5817
5582
  headers: {
5818
5583
  [name: string]: unknown;
5819
5584
  };
5820
5585
  content: {
5821
- "application/json": components["schemas"]["ErrorResponse"];
5586
+ "application/json": components["schemas"]["ErrorResponseDto"];
5822
5587
  };
5823
5588
  };
5824
5589
  /** @description Community or actor not found (also returned for cross-workspace probes). */
@@ -5827,7 +5592,7 @@ interface operations {
5827
5592
  [name: string]: unknown;
5828
5593
  };
5829
5594
  content: {
5830
- "application/json": components["schemas"]["ErrorResponse"];
5595
+ "application/json": components["schemas"]["ErrorResponseDto"];
5831
5596
  };
5832
5597
  };
5833
5598
  };
@@ -5865,16 +5630,7 @@ interface operations {
5865
5630
  [name: string]: unknown;
5866
5631
  };
5867
5632
  content: {
5868
- "application/json": components["schemas"]["ErrorResponse"];
5869
- };
5870
- };
5871
- /** @description Missing or invalid PAK. */
5872
- 401: {
5873
- headers: {
5874
- [name: string]: unknown;
5875
- };
5876
- content: {
5877
- "application/json": components["schemas"]["ErrorResponse"];
5633
+ "application/json": components["schemas"]["ErrorResponseDto"];
5878
5634
  };
5879
5635
  };
5880
5636
  /** @description PAK lacks `social.notify.update` for this community. */
@@ -5883,7 +5639,7 @@ interface operations {
5883
5639
  [name: string]: unknown;
5884
5640
  };
5885
5641
  content: {
5886
- "application/json": components["schemas"]["ErrorResponse"];
5642
+ "application/json": components["schemas"]["ErrorResponseDto"];
5887
5643
  };
5888
5644
  };
5889
5645
  /** @description Community or actor not found. */
@@ -5892,7 +5648,7 @@ interface operations {
5892
5648
  [name: string]: unknown;
5893
5649
  };
5894
5650
  content: {
5895
- "application/json": components["schemas"]["ErrorResponse"];
5651
+ "application/json": components["schemas"]["ErrorResponseDto"];
5896
5652
  };
5897
5653
  };
5898
5654
  };
@@ -5920,22 +5676,13 @@ interface operations {
5920
5676
  "application/json": components["schemas"]["UnreadCountResponse"];
5921
5677
  };
5922
5678
  };
5923
- /** @description Missing or invalid PAK. */
5924
- 401: {
5925
- headers: {
5926
- [name: string]: unknown;
5927
- };
5928
- content: {
5929
- "application/json": components["schemas"]["ErrorResponse"];
5930
- };
5931
- };
5932
5679
  /** @description PAK lacks `social.notify.read` for this community. */
5933
5680
  403: {
5934
5681
  headers: {
5935
5682
  [name: string]: unknown;
5936
5683
  };
5937
5684
  content: {
5938
- "application/json": components["schemas"]["ErrorResponse"];
5685
+ "application/json": components["schemas"]["ErrorResponseDto"];
5939
5686
  };
5940
5687
  };
5941
5688
  /** @description Community or actor not found. */
@@ -5944,7 +5691,7 @@ interface operations {
5944
5691
  [name: string]: unknown;
5945
5692
  };
5946
5693
  content: {
5947
- "application/json": components["schemas"]["ErrorResponse"];
5694
+ "application/json": components["schemas"]["ErrorResponseDto"];
5948
5695
  };
5949
5696
  };
5950
5697
  };
@@ -5982,16 +5729,7 @@ interface operations {
5982
5729
  [name: string]: unknown;
5983
5730
  };
5984
5731
  content: {
5985
- "application/json": components["schemas"]["ErrorResponse"];
5986
- };
5987
- };
5988
- /** @description Missing or invalid PAK. */
5989
- 401: {
5990
- headers: {
5991
- [name: string]: unknown;
5992
- };
5993
- content: {
5994
- "application/json": components["schemas"]["ErrorResponse"];
5732
+ "application/json": components["schemas"]["ErrorResponseDto"];
5995
5733
  };
5996
5734
  };
5997
5735
  /** @description PAK lacks `social.notify.update` for this community. */
@@ -6000,7 +5738,7 @@ interface operations {
6000
5738
  [name: string]: unknown;
6001
5739
  };
6002
5740
  content: {
6003
- "application/json": components["schemas"]["ErrorResponse"];
5741
+ "application/json": components["schemas"]["ErrorResponseDto"];
6004
5742
  };
6005
5743
  };
6006
5744
  /** @description Notification not found, or belongs to a different actor. */
@@ -6009,7 +5747,7 @@ interface operations {
6009
5747
  [name: string]: unknown;
6010
5748
  };
6011
5749
  content: {
6012
- "application/json": components["schemas"]["ErrorResponse"];
5750
+ "application/json": components["schemas"]["ErrorResponseDto"];
6013
5751
  };
6014
5752
  };
6015
5753
  };
@@ -6040,7 +5778,16 @@ interface operations {
6040
5778
  "application/json": components["schemas"]["EdgeListResponseDto"];
6041
5779
  };
6042
5780
  };
6043
- /** @description PAK lacks `social.read`. */
5781
+ /** @description Invalid cursor (`INVALID_CURSOR`) — legacy raw-id cursors are rejected; restart from the first page and follow `pagination.next_cursor`. */
5782
+ 400: {
5783
+ headers: {
5784
+ [name: string]: unknown;
5785
+ };
5786
+ content: {
5787
+ "application/json": components["schemas"]["ErrorResponseDto"];
5788
+ };
5789
+ };
5790
+ /** @description PAK lacks `social.list`. */
6044
5791
  403: {
6045
5792
  headers: {
6046
5793
  [name: string]: unknown;
@@ -6129,22 +5876,13 @@ interface operations {
6129
5876
  "application/json": components["schemas"]["StoryTrayResponse"];
6130
5877
  };
6131
5878
  };
6132
- /** @description Missing or invalid PAK. */
6133
- 401: {
6134
- headers: {
6135
- [name: string]: unknown;
6136
- };
6137
- content: {
6138
- "application/json": components["schemas"]["ErrorResponse"];
6139
- };
6140
- };
6141
- /** @description PAK lacks `social.read`. */
5879
+ /** @description PAK lacks `social.list`. */
6142
5880
  403: {
6143
5881
  headers: {
6144
5882
  [name: string]: unknown;
6145
5883
  };
6146
5884
  content: {
6147
- "application/json": components["schemas"]["ErrorResponse"];
5885
+ "application/json": components["schemas"]["ErrorResponseDto"];
6148
5886
  };
6149
5887
  };
6150
5888
  /** @description Community or actor not found. */
@@ -6153,7 +5891,7 @@ interface operations {
6153
5891
  [name: string]: unknown;
6154
5892
  };
6155
5893
  content: {
6156
- "application/json": components["schemas"]["ErrorResponse"];
5894
+ "application/json": components["schemas"]["ErrorResponseDto"];
6157
5895
  };
6158
5896
  };
6159
5897
  };
@@ -6256,6 +5994,15 @@ interface operations {
6256
5994
  "application/json": components["schemas"]["ErrorResponseDto"];
6257
5995
  };
6258
5996
  };
5997
+ /** @description Cannot block yourself. */
5998
+ 422: {
5999
+ headers: {
6000
+ [name: string]: unknown;
6001
+ };
6002
+ content: {
6003
+ "application/json": components["schemas"]["ErrorResponseDto"];
6004
+ };
6005
+ };
6259
6006
  };
6260
6007
  };
6261
6008
  EdgeController_unblock: {
@@ -6274,7 +6021,7 @@ interface operations {
6274
6021
  };
6275
6022
  requestBody?: never;
6276
6023
  responses: {
6277
- /** @description Unblocked. */
6024
+ /** @description Unblocked (or no edge to remove). */
6278
6025
  204: {
6279
6026
  headers: {
6280
6027
  [name: string]: unknown;
@@ -6290,7 +6037,7 @@ interface operations {
6290
6037
  "application/json": components["schemas"]["ErrorResponseDto"];
6291
6038
  };
6292
6039
  };
6293
- /** @description Community not found. */
6040
+ /** @description Community or actor not found. */
6294
6041
  404: {
6295
6042
  headers: {
6296
6043
  [name: string]: unknown;
@@ -6330,16 +6077,7 @@ interface operations {
6330
6077
  [name: string]: unknown;
6331
6078
  };
6332
6079
  content: {
6333
- "application/json": components["schemas"]["ErrorResponse"];
6334
- };
6335
- };
6336
- /** @description Missing or invalid PAK. */
6337
- 401: {
6338
- headers: {
6339
- [name: string]: unknown;
6340
- };
6341
- content: {
6342
- "application/json": components["schemas"]["ErrorResponse"];
6080
+ "application/json": components["schemas"]["ErrorResponseDto"];
6343
6081
  };
6344
6082
  };
6345
6083
  /** @description PAK lacks `social.close-friend.manage`. */
@@ -6348,7 +6086,7 @@ interface operations {
6348
6086
  [name: string]: unknown;
6349
6087
  };
6350
6088
  content: {
6351
- "application/json": components["schemas"]["ErrorResponse"];
6089
+ "application/json": components["schemas"]["ErrorResponseDto"];
6352
6090
  };
6353
6091
  };
6354
6092
  /** @description Community / owner / member not found. */
@@ -6357,7 +6095,7 @@ interface operations {
6357
6095
  [name: string]: unknown;
6358
6096
  };
6359
6097
  content: {
6360
- "application/json": components["schemas"]["ErrorResponse"];
6098
+ "application/json": components["schemas"]["ErrorResponseDto"];
6361
6099
  };
6362
6100
  };
6363
6101
  /** @description Block in place between owner and member. */
@@ -6366,7 +6104,7 @@ interface operations {
6366
6104
  [name: string]: unknown;
6367
6105
  };
6368
6106
  content: {
6369
- "application/json": components["schemas"]["ErrorResponse"];
6107
+ "application/json": components["schemas"]["ErrorResponseDto"];
6370
6108
  };
6371
6109
  };
6372
6110
  /** @description Cannot add yourself as a close friend. */
@@ -6375,7 +6113,7 @@ interface operations {
6375
6113
  [name: string]: unknown;
6376
6114
  };
6377
6115
  content: {
6378
- "application/json": components["schemas"]["ErrorResponse"];
6116
+ "application/json": components["schemas"]["ErrorResponseDto"];
6379
6117
  };
6380
6118
  };
6381
6119
  };
@@ -6403,22 +6141,13 @@ interface operations {
6403
6141
  };
6404
6142
  content?: never;
6405
6143
  };
6406
- /** @description Missing or invalid PAK. */
6407
- 401: {
6408
- headers: {
6409
- [name: string]: unknown;
6410
- };
6411
- content: {
6412
- "application/json": components["schemas"]["ErrorResponse"];
6413
- };
6414
- };
6415
6144
  /** @description PAK lacks `social.close-friend.manage`. */
6416
6145
  403: {
6417
6146
  headers: {
6418
6147
  [name: string]: unknown;
6419
6148
  };
6420
6149
  content: {
6421
- "application/json": components["schemas"]["ErrorResponse"];
6150
+ "application/json": components["schemas"]["ErrorResponseDto"];
6422
6151
  };
6423
6152
  };
6424
6153
  /** @description Community not found. */
@@ -6427,7 +6156,7 @@ interface operations {
6427
6156
  [name: string]: unknown;
6428
6157
  };
6429
6158
  content: {
6430
- "application/json": components["schemas"]["ErrorResponse"];
6159
+ "application/json": components["schemas"]["ErrorResponseDto"];
6431
6160
  };
6432
6161
  };
6433
6162
  };
@@ -7489,13 +7218,13 @@ interface operations {
7489
7218
  };
7490
7219
  };
7491
7220
  responses: {
7492
- /** @description Flag created (or de-duplicated to existing open flag). */
7221
+ /** @description Flag created (or de-duplicated to existing open flag). `auto_hidden` reports whether the auto-hide threshold tripped. */
7493
7222
  201: {
7494
7223
  headers: {
7495
7224
  [name: string]: unknown;
7496
7225
  };
7497
7226
  content: {
7498
- "application/json": components["schemas"]["FlagResponseDto"];
7227
+ "application/json": components["schemas"]["CreateFlagResponseDto"];
7499
7228
  };
7500
7229
  };
7501
7230
  /** @description Validation failure (bad reporter / target / reason). */
@@ -7525,7 +7254,16 @@ interface operations {
7525
7254
  "application/json": components["schemas"]["ErrorResponseDto"];
7526
7255
  };
7527
7256
  };
7528
- /** @description Cannot flag your own content, or the target post/comment is already removed. */
7257
+ /** @description The target post/comment is already removed; nothing to flag. */
7258
+ 409: {
7259
+ headers: {
7260
+ [name: string]: unknown;
7261
+ };
7262
+ content: {
7263
+ "application/json": components["schemas"]["ErrorResponseDto"];
7264
+ };
7265
+ };
7266
+ /** @description Cannot flag your own content. */
7529
7267
  422: {
7530
7268
  headers: {
7531
7269
  [name: string]: unknown;
@@ -7597,6 +7335,15 @@ interface operations {
7597
7335
  "application/json": components["schemas"]["ErrorResponseDto"];
7598
7336
  };
7599
7337
  };
7338
+ /** @description Cannot follow yourself. */
7339
+ 422: {
7340
+ headers: {
7341
+ [name: string]: unknown;
7342
+ };
7343
+ content: {
7344
+ "application/json": components["schemas"]["ErrorResponseDto"];
7345
+ };
7346
+ };
7600
7347
  };
7601
7348
  };
7602
7349
  EdgeController_unfollow: {
@@ -7631,7 +7378,7 @@ interface operations {
7631
7378
  "application/json": components["schemas"]["ErrorResponseDto"];
7632
7379
  };
7633
7380
  };
7634
- /** @description Community not found. */
7381
+ /** @description Community or actor not found. */
7635
7382
  404: {
7636
7383
  headers: {
7637
7384
  [name: string]: unknown;
@@ -7764,6 +7511,15 @@ interface operations {
7764
7511
  "application/json": components["schemas"]["HashtagPostListResponseDto"];
7765
7512
  };
7766
7513
  };
7514
+ /** @description Invalid tag (empty after normalisation, or longer than 32 chars). */
7515
+ 400: {
7516
+ headers: {
7517
+ [name: string]: unknown;
7518
+ };
7519
+ content: {
7520
+ "application/json": components["schemas"]["ErrorResponseDto"];
7521
+ };
7522
+ };
7767
7523
  /** @description PAK lacks `social.list`. */
7768
7524
  403: {
7769
7525
  headers: {
@@ -8144,7 +7900,7 @@ interface operations {
8144
7900
  };
8145
7901
  requestBody: {
8146
7902
  content: {
8147
- "application/json": components["schemas"]["AddMemberDto"];
7903
+ "application/json": components["schemas"]["AddListMemberDto"];
8148
7904
  };
8149
7905
  };
8150
7906
  responses: {
@@ -8202,7 +7958,7 @@ interface operations {
8202
7958
  };
8203
7959
  requestBody: {
8204
7960
  content: {
8205
- "application/json": components["schemas"]["RemoveMemberDto"];
7961
+ "application/json": components["schemas"]["RemoveListMemberDto"];
8206
7962
  };
8207
7963
  };
8208
7964
  responses: {
@@ -8294,6 +8050,15 @@ interface operations {
8294
8050
  "application/json": components["schemas"]["ErrorResponseDto"];
8295
8051
  };
8296
8052
  };
8053
+ /** @description Cannot mute yourself. */
8054
+ 422: {
8055
+ headers: {
8056
+ [name: string]: unknown;
8057
+ };
8058
+ content: {
8059
+ "application/json": components["schemas"]["ErrorResponseDto"];
8060
+ };
8061
+ };
8297
8062
  };
8298
8063
  };
8299
8064
  EdgeController_unmute: {
@@ -8312,7 +8077,7 @@ interface operations {
8312
8077
  };
8313
8078
  requestBody?: never;
8314
8079
  responses: {
8315
- /** @description Unmuted. */
8080
+ /** @description Unmuted (or no edge to remove). */
8316
8081
  204: {
8317
8082
  headers: {
8318
8083
  [name: string]: unknown;
@@ -8328,7 +8093,7 @@ interface operations {
8328
8093
  "application/json": components["schemas"]["ErrorResponseDto"];
8329
8094
  };
8330
8095
  };
8331
- /** @description Community not found. */
8096
+ /** @description Community or actor not found. */
8332
8097
  404: {
8333
8098
  headers: {
8334
8099
  [name: string]: unknown;
@@ -8365,7 +8130,7 @@ interface operations {
8365
8130
  "application/json": components["schemas"]["PostListResponseDto"];
8366
8131
  };
8367
8132
  };
8368
- /** @description PAK lacks `social.read`. */
8133
+ /** @description PAK lacks `social.list`. */
8369
8134
  403: {
8370
8135
  headers: {
8371
8136
  [name: string]: unknown;
@@ -8427,7 +8192,7 @@ interface operations {
8427
8192
  "application/json": components["schemas"]["ErrorResponseDto"];
8428
8193
  };
8429
8194
  };
8430
- /** @description Community or actor not found in the PAK's workspace. */
8195
+ /** @description Community, actor, or quote source post not found in the PAK's workspace. */
8431
8196
  404: {
8432
8197
  headers: {
8433
8198
  [name: string]: unknown;
@@ -8436,6 +8201,15 @@ interface operations {
8436
8201
  "application/json": components["schemas"]["ErrorResponseDto"];
8437
8202
  };
8438
8203
  };
8204
+ /** @description Quote rules: `CANNOT_QUOTE_SELF` (kind='quote' with your own post as source) or `CANNOT_QUOTE_PRIVATE` (source post is private). */
8205
+ 422: {
8206
+ headers: {
8207
+ [name: string]: unknown;
8208
+ };
8209
+ content: {
8210
+ "application/json": components["schemas"]["ErrorResponseDto"];
8211
+ };
8212
+ };
8439
8213
  };
8440
8214
  };
8441
8215
  PostController_recordViews: {
@@ -8618,6 +8392,15 @@ interface operations {
8618
8392
  "application/json": components["schemas"]["ErrorResponseDto"];
8619
8393
  };
8620
8394
  };
8395
+ /** @description `EDIT_WINDOW_EXPIRED` (content edit after the community's edit window), or `scheduled_for` passed while the post is not `status='scheduled'`. */
8396
+ 422: {
8397
+ headers: {
8398
+ [name: string]: unknown;
8399
+ };
8400
+ content: {
8401
+ "application/json": components["schemas"]["ErrorResponseDto"];
8402
+ };
8403
+ };
8621
8404
  };
8622
8405
  };
8623
8406
  BookmarkController_create: {
@@ -8760,7 +8543,7 @@ interface operations {
8760
8543
  "application/json": components["schemas"]["CommentListResponseDto"];
8761
8544
  };
8762
8545
  };
8763
- /** @description PAK lacks `social.read`. */
8546
+ /** @description PAK lacks `social.list`. */
8764
8547
  403: {
8765
8548
  headers: {
8766
8549
  [name: string]: unknown;
@@ -9256,22 +9039,13 @@ interface operations {
9256
9039
  "application/json": components["schemas"]["PollResultsResponse"];
9257
9040
  };
9258
9041
  };
9259
- /** @description Missing or invalid PAK. */
9260
- 401: {
9261
- headers: {
9262
- [name: string]: unknown;
9263
- };
9264
- content: {
9265
- "application/json": components["schemas"]["ErrorResponse"];
9266
- };
9267
- };
9268
9042
  /** @description PAK lacks `social.read`. */
9269
9043
  403: {
9270
9044
  headers: {
9271
9045
  [name: string]: unknown;
9272
9046
  };
9273
9047
  content: {
9274
- "application/json": components["schemas"]["ErrorResponse"];
9048
+ "application/json": components["schemas"]["ErrorResponseDto"];
9275
9049
  };
9276
9050
  };
9277
9051
  /** @description Community or post not found. */
@@ -9280,7 +9054,7 @@ interface operations {
9280
9054
  [name: string]: unknown;
9281
9055
  };
9282
9056
  content: {
9283
- "application/json": components["schemas"]["ErrorResponse"];
9057
+ "application/json": components["schemas"]["ErrorResponseDto"];
9284
9058
  };
9285
9059
  };
9286
9060
  /** @description Post does not contain a poll. */
@@ -9289,7 +9063,7 @@ interface operations {
9289
9063
  [name: string]: unknown;
9290
9064
  };
9291
9065
  content: {
9292
- "application/json": components["schemas"]["ErrorResponse"];
9066
+ "application/json": components["schemas"]["ErrorResponseDto"];
9293
9067
  };
9294
9068
  };
9295
9069
  };
@@ -9673,7 +9447,7 @@ interface operations {
9673
9447
  StoryController_listViewers: {
9674
9448
  parameters: {
9675
9449
  query: {
9676
- /** @description Must resolve to the post author. */
9450
+ /** @description Requester social actor UUID — must resolve to the post author. */
9677
9451
  requester_id: string;
9678
9452
  limit?: number;
9679
9453
  /** @description Cursor from the prior page. */
@@ -9699,22 +9473,13 @@ interface operations {
9699
9473
  "application/json": components["schemas"]["StoryViewersResponse"];
9700
9474
  };
9701
9475
  };
9702
- /** @description Missing or invalid PAK. */
9703
- 401: {
9704
- headers: {
9705
- [name: string]: unknown;
9706
- };
9707
- content: {
9708
- "application/json": components["schemas"]["ErrorResponse"];
9709
- };
9710
- };
9711
- /** @description PAK lacks `social.read` OR requester is not the post author. */
9476
+ /** @description PAK lacks `social.list` OR requester is not the post author. */
9712
9477
  403: {
9713
9478
  headers: {
9714
9479
  [name: string]: unknown;
9715
9480
  };
9716
9481
  content: {
9717
- "application/json": components["schemas"]["ErrorResponse"];
9482
+ "application/json": components["schemas"]["ErrorResponseDto"];
9718
9483
  };
9719
9484
  };
9720
9485
  /** @description Community or post not found. */
@@ -9723,7 +9488,7 @@ interface operations {
9723
9488
  [name: string]: unknown;
9724
9489
  };
9725
9490
  content: {
9726
- "application/json": components["schemas"]["ErrorResponse"];
9491
+ "application/json": components["schemas"]["ErrorResponseDto"];
9727
9492
  };
9728
9493
  };
9729
9494
  };
@@ -9759,16 +9524,7 @@ interface operations {
9759
9524
  [name: string]: unknown;
9760
9525
  };
9761
9526
  content: {
9762
- "application/json": components["schemas"]["ErrorResponse"];
9763
- };
9764
- };
9765
- /** @description Missing or invalid PAK. */
9766
- 401: {
9767
- headers: {
9768
- [name: string]: unknown;
9769
- };
9770
- content: {
9771
- "application/json": components["schemas"]["ErrorResponse"];
9527
+ "application/json": components["schemas"]["ErrorResponseDto"];
9772
9528
  };
9773
9529
  };
9774
9530
  /** @description PAK lacks `social.view`. */
@@ -9777,7 +9533,7 @@ interface operations {
9777
9533
  [name: string]: unknown;
9778
9534
  };
9779
9535
  content: {
9780
- "application/json": components["schemas"]["ErrorResponse"];
9536
+ "application/json": components["schemas"]["ErrorResponseDto"];
9781
9537
  };
9782
9538
  };
9783
9539
  /** @description Community / post / viewer not found, or the post is invisible to the viewer. */
@@ -9786,7 +9542,7 @@ interface operations {
9786
9542
  [name: string]: unknown;
9787
9543
  };
9788
9544
  content: {
9789
- "application/json": components["schemas"]["ErrorResponse"];
9545
+ "application/json": components["schemas"]["ErrorResponseDto"];
9790
9546
  };
9791
9547
  };
9792
9548
  /** @description Cannot view your own story. */
@@ -9795,7 +9551,7 @@ interface operations {
9795
9551
  [name: string]: unknown;
9796
9552
  };
9797
9553
  content: {
9798
- "application/json": components["schemas"]["ErrorResponse"];
9554
+ "application/json": components["schemas"]["ErrorResponseDto"];
9799
9555
  };
9800
9556
  };
9801
9557
  };
@@ -9831,16 +9587,7 @@ interface operations {
9831
9587
  [name: string]: unknown;
9832
9588
  };
9833
9589
  content: {
9834
- "application/json": components["schemas"]["ErrorResponse"];
9835
- };
9836
- };
9837
- /** @description Missing or invalid PAK. */
9838
- 401: {
9839
- headers: {
9840
- [name: string]: unknown;
9841
- };
9842
- content: {
9843
- "application/json": components["schemas"]["ErrorResponse"];
9590
+ "application/json": components["schemas"]["ErrorResponseDto"];
9844
9591
  };
9845
9592
  };
9846
9593
  /** @description PAK lacks `social.vote`. */
@@ -9849,7 +9596,7 @@ interface operations {
9849
9596
  [name: string]: unknown;
9850
9597
  };
9851
9598
  content: {
9852
- "application/json": components["schemas"]["ErrorResponse"];
9599
+ "application/json": components["schemas"]["ErrorResponseDto"];
9853
9600
  };
9854
9601
  };
9855
9602
  /** @description Community / post / voter not found, or post invisible. */
@@ -9858,7 +9605,7 @@ interface operations {
9858
9605
  [name: string]: unknown;
9859
9606
  };
9860
9607
  content: {
9861
- "application/json": components["schemas"]["ErrorResponse"];
9608
+ "application/json": components["schemas"]["ErrorResponseDto"];
9862
9609
  };
9863
9610
  };
9864
9611
  /** @description Block in place between voter and poll author. */
@@ -9867,7 +9614,7 @@ interface operations {
9867
9614
  [name: string]: unknown;
9868
9615
  };
9869
9616
  content: {
9870
- "application/json": components["schemas"]["ErrorResponse"];
9617
+ "application/json": components["schemas"]["ErrorResponseDto"];
9871
9618
  };
9872
9619
  };
9873
9620
  /** @description Self-vote / no poll / option_index out of range. */
@@ -9876,7 +9623,7 @@ interface operations {
9876
9623
  [name: string]: unknown;
9877
9624
  };
9878
9625
  content: {
9879
- "application/json": components["schemas"]["ErrorResponse"];
9626
+ "application/json": components["schemas"]["ErrorResponseDto"];
9880
9627
  };
9881
9628
  };
9882
9629
  };
@@ -9933,6 +9680,24 @@ interface operations {
9933
9680
  "application/json": components["schemas"]["ErrorResponseDto"];
9934
9681
  };
9935
9682
  };
9683
+ /** @description Block exists between the pair. */
9684
+ 409: {
9685
+ headers: {
9686
+ [name: string]: unknown;
9687
+ };
9688
+ content: {
9689
+ "application/json": components["schemas"]["ErrorResponseDto"];
9690
+ };
9691
+ };
9692
+ /** @description Cannot restrict yourself. */
9693
+ 422: {
9694
+ headers: {
9695
+ [name: string]: unknown;
9696
+ };
9697
+ content: {
9698
+ "application/json": components["schemas"]["ErrorResponseDto"];
9699
+ };
9700
+ };
9936
9701
  };
9937
9702
  };
9938
9703
  EdgeController_unrestrict: {
@@ -9951,7 +9716,7 @@ interface operations {
9951
9716
  };
9952
9717
  requestBody?: never;
9953
9718
  responses: {
9954
- /** @description Unrestricted. */
9719
+ /** @description Unrestricted (or no edge to remove). */
9955
9720
  204: {
9956
9721
  headers: {
9957
9722
  [name: string]: unknown;
@@ -9967,7 +9732,7 @@ interface operations {
9967
9732
  "application/json": components["schemas"]["ErrorResponseDto"];
9968
9733
  };
9969
9734
  };
9970
- /** @description Community not found. */
9735
+ /** @description Community or actor not found. */
9971
9736
  404: {
9972
9737
  headers: {
9973
9738
  [name: string]: unknown;
@@ -10156,13 +9921,13 @@ interface operations {
10156
9921
  };
10157
9922
  requestBody?: never;
10158
9923
  responses: {
10159
- /** @description Webhook or null. */
9924
+ /** @description The active webhook, or a literal JSON `null` body when the community has no active webhook registered. */
10160
9925
  200: {
10161
9926
  headers: {
10162
9927
  [name: string]: unknown;
10163
9928
  };
10164
9929
  content: {
10165
- "application/json": components["schemas"]["WebhookResponseDto"];
9930
+ "application/json": components["schemas"]["WebhookResponseDto"] | null;
10166
9931
  };
10167
9932
  };
10168
9933
  /** @description Community not found. */
@@ -10444,7 +10209,7 @@ interface operations {
10444
10209
  "application/json": components["schemas"]["CommunityResponseDto"][];
10445
10210
  };
10446
10211
  };
10447
- /** @description Caller lacks `social.read`, or the workspace has not enabled the `social` service. */
10212
+ /** @description Caller lacks `social.list`, or the workspace has not enabled the `social` service. */
10448
10213
  403: {
10449
10214
  headers: {
10450
10215
  [name: string]: unknown;
@@ -10735,7 +10500,7 @@ interface operations {
10735
10500
  [name: string]: unknown;
10736
10501
  };
10737
10502
  content: {
10738
- "application/json": components["schemas"]["ActorResponseDto"];
10503
+ "application/json": components["schemas"]["ModerationActorResponseDto"];
10739
10504
  };
10740
10505
  };
10741
10506
  /** @description Invalid duration_hours or reason. */
@@ -10786,7 +10551,7 @@ interface operations {
10786
10551
  [name: string]: unknown;
10787
10552
  };
10788
10553
  content: {
10789
- "application/json": components["schemas"]["ActorResponseDto"];
10554
+ "application/json": components["schemas"]["ModerationActorResponseDto"];
10790
10555
  };
10791
10556
  };
10792
10557
  /** @description Caller lacks `social.moderate`. */
@@ -11014,13 +10779,13 @@ interface operations {
11014
10779
  };
11015
10780
  };
11016
10781
  responses: {
11017
- /** @description Action recorded; target status updated where applicable. */
10782
+ /** @description Action recorded; target status updated where applicable. Returns the updated flag and the audit row. */
11018
10783
  201: {
11019
10784
  headers: {
11020
10785
  [name: string]: unknown;
11021
10786
  };
11022
10787
  content: {
11023
- "application/json": components["schemas"]["ModerationActionResponseDto"];
10788
+ "application/json": components["schemas"]["ActOnFlagResponseDto"];
11024
10789
  };
11025
10790
  };
11026
10791
  /** @description Invalid action or notes. */
@@ -11050,7 +10815,7 @@ interface operations {
11050
10815
  "application/json": components["schemas"]["ErrorResponseDto"];
11051
10816
  };
11052
10817
  };
11053
- /** @description Flag already actioned/dismissed and the requested action would be a no-op. */
10818
+ /** @description 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. */
11054
10819
  409: {
11055
10820
  headers: {
11056
10821
  [name: string]: unknown;
@@ -11082,7 +10847,7 @@ interface operations {
11082
10847
  [name: string]: unknown;
11083
10848
  };
11084
10849
  content: {
11085
- "application/json": components["schemas"]["ActorListResponseDto"];
10850
+ "application/json": components["schemas"]["ModerationActorListResponseDto"];
11086
10851
  };
11087
10852
  };
11088
10853
  /** @description Caller lacks `social.audit.read`. */