@sendbird/cli 0.0.0-stage → 0.3.0-alpha.1

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 (182) hide show
  1. package/.claude-plugin/plugin.json +11 -0
  2. package/.codex-plugin/plugin.json +33 -0
  3. package/LICENSE +13 -0
  4. package/NOTICE.md +1105 -0
  5. package/PROVENANCE.md +15 -0
  6. package/README.md +457 -2
  7. package/dist/acl.d.ts +2 -0
  8. package/dist/acl.js +12 -0
  9. package/dist/acl.js.map +1 -0
  10. package/dist/billing-plan.d.ts +68 -0
  11. package/dist/billing-plan.js +235 -0
  12. package/dist/billing-plan.js.map +1 -0
  13. package/dist/browser.d.ts +1 -0
  14. package/dist/browser.js +20 -0
  15. package/dist/browser.js.map +1 -0
  16. package/dist/calls-catalog.d.ts +79 -0
  17. package/dist/calls-catalog.js +322 -0
  18. package/dist/calls-catalog.js.map +1 -0
  19. package/dist/calls-credits.d.ts +31 -0
  20. package/dist/calls-credits.js +224 -0
  21. package/dist/calls-credits.js.map +1 -0
  22. package/dist/calls-trial.d.ts +45 -0
  23. package/dist/calls-trial.js +77 -0
  24. package/dist/calls-trial.js.map +1 -0
  25. package/dist/calls.d.ts +10 -0
  26. package/dist/calls.js +470 -0
  27. package/dist/calls.js.map +1 -0
  28. package/dist/catalog.d.ts +67 -0
  29. package/dist/catalog.js +784 -0
  30. package/dist/catalog.js.map +1 -0
  31. package/dist/cli.d.ts +6 -0
  32. package/dist/cli.js +502 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/core.d.ts +86 -0
  35. package/dist/core.js +531 -0
  36. package/dist/core.js.map +1 -0
  37. package/dist/diagnostics.d.ts +206 -0
  38. package/dist/diagnostics.js +664 -0
  39. package/dist/diagnostics.js.map +1 -0
  40. package/dist/discovery.d.ts +700 -0
  41. package/dist/discovery.js +838 -0
  42. package/dist/discovery.js.map +1 -0
  43. package/dist/docs.d.ts +31 -0
  44. package/dist/docs.js +137 -0
  45. package/dist/docs.js.map +1 -0
  46. package/dist/features.d.ts +131 -0
  47. package/dist/features.js +227 -0
  48. package/dist/features.js.map +1 -0
  49. package/dist/generated-api.d.ts +116 -0
  50. package/dist/generated-api.js +118 -0
  51. package/dist/generated-api.js.map +1 -0
  52. package/dist/human-format.d.ts +40 -0
  53. package/dist/human-format.js +205 -0
  54. package/dist/human-format.js.map +1 -0
  55. package/dist/human-list.d.ts +2 -0
  56. package/dist/human-list.js +368 -0
  57. package/dist/human-list.js.map +1 -0
  58. package/dist/human-output.d.ts +10 -0
  59. package/dist/human-output.js +1351 -0
  60. package/dist/human-output.js.map +1 -0
  61. package/dist/human-pro.d.ts +3 -0
  62. package/dist/human-pro.js +201 -0
  63. package/dist/human-pro.js.map +1 -0
  64. package/dist/human-progress.d.ts +5 -0
  65. package/dist/human-progress.js +49 -0
  66. package/dist/human-progress.js.map +1 -0
  67. package/dist/local.d.ts +42 -0
  68. package/dist/local.js +707 -0
  69. package/dist/local.js.map +1 -0
  70. package/dist/oauth-callback.d.ts +3 -0
  71. package/dist/oauth-callback.js +66 -0
  72. package/dist/oauth-callback.js.map +1 -0
  73. package/dist/oauth-lock.d.ts +6 -0
  74. package/dist/oauth-lock.js +212 -0
  75. package/dist/oauth-lock.js.map +1 -0
  76. package/dist/oauth.d.ts +32 -0
  77. package/dist/oauth.js +493 -0
  78. package/dist/oauth.js.map +1 -0
  79. package/dist/presentation.d.ts +208 -0
  80. package/dist/presentation.js +156 -0
  81. package/dist/presentation.js.map +1 -0
  82. package/dist/pro-api-catalog.d.ts +24 -0
  83. package/dist/pro-api-catalog.js +619 -0
  84. package/dist/pro-api-catalog.js.map +1 -0
  85. package/dist/pro-api.d.ts +10 -0
  86. package/dist/pro-api.js +338 -0
  87. package/dist/pro-api.js.map +1 -0
  88. package/dist/project.d.ts +34 -0
  89. package/dist/project.js +62 -0
  90. package/dist/project.js.map +1 -0
  91. package/dist/recovery.d.ts +41 -0
  92. package/dist/recovery.js +417 -0
  93. package/dist/recovery.js.map +1 -0
  94. package/dist/runner.d.ts +47 -0
  95. package/dist/runner.js +603 -0
  96. package/dist/runner.js.map +1 -0
  97. package/dist/sdk-catalog.d.ts +69 -0
  98. package/dist/sdk-catalog.js +527 -0
  99. package/dist/sdk-catalog.js.map +1 -0
  100. package/dist/sdk-config.d.ts +19 -0
  101. package/dist/sdk-config.js +85 -0
  102. package/dist/sdk-config.js.map +1 -0
  103. package/dist/sdk-dto.d.ts +244 -0
  104. package/dist/sdk-dto.js +98 -0
  105. package/dist/sdk-dto.js.map +1 -0
  106. package/dist/sdk-limits.d.ts +2 -0
  107. package/dist/sdk-limits.js +3 -0
  108. package/dist/sdk-limits.js.map +1 -0
  109. package/dist/sdk-node-file-reader.d.ts +6 -0
  110. package/dist/sdk-node-file-reader.js +38 -0
  111. package/dist/sdk-node-file-reader.js.map +1 -0
  112. package/dist/sdk-pro-catalog.d.ts +22 -0
  113. package/dist/sdk-pro-catalog.js +234 -0
  114. package/dist/sdk-pro-catalog.js.map +1 -0
  115. package/dist/sdk-pro-runtime.d.ts +31 -0
  116. package/dist/sdk-pro-runtime.js +293 -0
  117. package/dist/sdk-pro-runtime.js.map +1 -0
  118. package/dist/sdk-query.d.ts +10 -0
  119. package/dist/sdk-query.js +29 -0
  120. package/dist/sdk-query.js.map +1 -0
  121. package/dist/sdk-runtime.d.ts +15 -0
  122. package/dist/sdk-runtime.js +685 -0
  123. package/dist/sdk-runtime.js.map +1 -0
  124. package/dist/sdk-worker.d.ts +1 -0
  125. package/dist/sdk-worker.js +26 -0
  126. package/dist/sdk-worker.js.map +1 -0
  127. package/dist/sdk.d.ts +29 -0
  128. package/dist/sdk.js +346 -0
  129. package/dist/sdk.js.map +1 -0
  130. package/dist/search-engine.d.ts +17 -0
  131. package/dist/search-engine.js +54 -0
  132. package/dist/search-engine.js.map +1 -0
  133. package/dist/search-intents.d.ts +2 -0
  134. package/dist/search-intents.js +98 -0
  135. package/dist/search-intents.js.map +1 -0
  136. package/dist/search.d.ts +7 -0
  137. package/dist/search.js +58 -0
  138. package/dist/search.js.map +1 -0
  139. package/dist/secret-output.d.ts +2 -0
  140. package/dist/secret-output.js +108 -0
  141. package/dist/secret-output.js.map +1 -0
  142. package/dist/shell.d.ts +3 -0
  143. package/dist/shell.js +14 -0
  144. package/dist/shell.js.map +1 -0
  145. package/dist/skills.d.ts +210 -0
  146. package/dist/skills.js +374 -0
  147. package/dist/skills.js.map +1 -0
  148. package/dist/value-semantics.d.ts +70 -0
  149. package/dist/value-semantics.js +173 -0
  150. package/dist/value-semantics.js.map +1 -0
  151. package/dist/version.d.ts +1 -0
  152. package/dist/version.js +3 -0
  153. package/dist/version.js.map +1 -0
  154. package/dist/windows.d.ts +4 -0
  155. package/dist/windows.js +136 -0
  156. package/dist/windows.js.map +1 -0
  157. package/dist/workflows.d.ts +228 -0
  158. package/dist/workflows.js +1207 -0
  159. package/dist/workflows.js.map +1 -0
  160. package/package.json +86 -4
  161. package/plugin.json +22 -0
  162. package/references/agent-guide.json +196 -0
  163. package/references/commands.md +247 -0
  164. package/references/dashboard-inventory.json +14796 -0
  165. package/references/docs-index.json +2709 -0
  166. package/references/sdk-commands.json +15065 -0
  167. package/references/workflows.json +1246 -0
  168. package/skills/sendbird/SKILL.md +96 -0
  169. package/skills/sendbird/agents/openai.yaml +4 -0
  170. package/skills/sendbird/references/build-chat-app.md +49 -0
  171. package/skills/sendbird/references/client-guide.md +34 -0
  172. package/skills/sendbird/references/client-plugin-bridge.md +77 -0
  173. package/skills/sendbird/references/client-plugin-install.md +39 -0
  174. package/skills/sendbird/references/operational-checks.md +35 -0
  175. package/skills/sendbird/references/pro-capabilities.md +52 -0
  176. package/skills/sendbird/scripts/client-guide.mjs +283 -0
  177. package/skills/sendbird/scripts/client-plugin-bridge.mjs +703 -0
  178. package/skills/sendbird-setup/SKILL.md +18 -0
  179. package/skills/sendbird-setup/agents/openai.yaml +4 -0
  180. package/skills/sendbird-setup/references/onboarding.md +73 -0
  181. package/skills/sendbird-setup/scripts/install-cli.mjs +447 -0
  182. package/skills/sendbird-setup/scripts/npm-run.mjs +34 -0
@@ -0,0 +1,2709 @@
1
+ {
2
+ "version": "0.3.0-alpha.1",
3
+ "sections": [
4
+ {
5
+ "id": "guide/index#intro",
6
+ "title": "The shortest path to Chat",
7
+ "description": "Start in the terminal and operate with your AI agent.",
8
+ "source": "site/guides.ts",
9
+ "url": "/index.html",
10
+ "excerpt": "SENDBIRD CLI / DOCUMENTATION\n\nThe shortest path\nto Chat .\nPrepare organizations and apps, connect users, and manage channels.\nOperate Sendbird Chat Dashboard from one CLI.\n\n[Get started ↗ ](/getting-started.html)[Explore commands →](/comma",
11
+ "intents": "",
12
+ "terms": "sendbird cli documentation shortest path chat prepare organizations and apps connect user manage channel operate dashboard from one get started getting html explore commands your next conversation starts here text setup create id alice nickname bob type group name demo ids select organization app with then both follow six tutorials based on official through real time delivery cleanup build something that connects 01 start first install authenticate quick 02 choose open or supergroup conversations for service guide 03 automate ai",
13
+ "path": "/cli-sections/9699650d080febdb530aff5c.md",
14
+ "sha256": "54d849f2398999a3b1e3abf6a5941d3a82ba52243a41d4f497db95a0ed7b8da9",
15
+ "bytes": 1437
16
+ },
17
+ {
18
+ "id": "guide/getting-started#intro",
19
+ "title": "Quick start",
20
+ "description": "Install, sign in, and prepare your first Chat app.",
21
+ "source": "site/guides.ts",
22
+ "url": "/getting-started.html",
23
+ "excerpt": "Quick start Start with Node.js 22.23.4+ (22.x) or 24.22.1+ (24.x) on macOS or Linux. For Windows, see the [Windows and PowerShell guide](/windows.html) and its validation boundaries.",
24
+ "intents": "",
25
+ "terms": "quick start with node js 22 23 4 x or 24 1 on macos linux for windows see and powershell guide html its validation boundaries",
26
+ "path": "/cli-sections/b615944ad6c211739e39f289.md",
27
+ "sha256": "69b2de04bc64e89da98b1f7dae17765db29009d0bb37e71ea8690722e73677cf",
28
+ "bytes": 199
29
+ },
30
+ {
31
+ "id": "guide/getting-started#install",
32
+ "title": "Quick start · 1. Install",
33
+ "description": "Install, sign in, and prepare your first Chat app.",
34
+ "source": "site/guides.ts",
35
+ "url": "/getting-started.html#install",
36
+ "excerpt": "Build from this repository or install a supplied alpha tarball. Public npm publication is not assumed.\n\n```text\nnpm ci\nnpm run build\nnpm link\nsendbird --help\n```\n\nFor a supplied tarball:\n\n```text\nnpm install -g ./sendbird-cli-0.3.0-alpha.1.",
37
+ "intents": "",
38
+ "terms": "build from this repository or install supplied alpha tarball public npm publication is not assumed text ci run link sendbird help for g cli 0 3 1 tgz",
39
+ "path": "/cli-sections/29420c962648204289ada0f2.md",
40
+ "sha256": "0cb80cbce63207bb52def72e0e809c925b1b2d6658dfca33aad1ba822bdeef40",
41
+ "bytes": 277
42
+ },
43
+ {
44
+ "id": "guide/getting-started#setup",
45
+ "title": "Quick start · 2. Follow setup",
46
+ "description": "Install, sign in, and prepare your first Chat app.",
47
+ "source": "site/guides.ts",
48
+ "url": "/getting-started.html#setup",
49
+ "excerpt": "```text\nsendbird setup\n```\n\nSign in or sign up, create or select an organization, select a Chat region, then create or select an app. New accounts pass their email verification link to `auth verify-email`.",
50
+ "intents": "",
51
+ "terms": "text sendbird setup sign in or up create select organization chat region then app new accounts pass their email verification link auth verify",
52
+ "path": "/cli-sections/50113ddc4f608a55ef012edf.md",
53
+ "sha256": "5d9ee49a9e2ef0fcdfdcea46801dc45433db3475ed1f4fa2b8556fe092f38a23",
54
+ "bytes": 240
55
+ },
56
+ {
57
+ "id": "guide/getting-started#defaults",
58
+ "title": "Quick start · Save defaults",
59
+ "description": "Install, sign in, and prepare your first Chat app.",
60
+ "source": "site/guides.ts",
61
+ "url": "/getting-started.html#defaults",
62
+ "excerpt": "Review the environment, profile, organization, app, and region before choosing whether to save defaults. Saving also activates the profile. Skipping or canceling selection leaves defaults unchanged; authentication and resources already crea",
63
+ "intents": "",
64
+ "terms": "review environment profile organization app and region before choosing whether save defaults saving also activates skipping or canceling selection leaves unchanged auth resources already created remain signing in again may reset prior account context existing regions not change default applies future creation after use explicit next commands agents inspect saved argv is prod select staging first for tests",
65
+ "path": "/cli-sections/d528e5a9a349bedbb18ab1b5.md",
66
+ "sha256": "c5a0f2965fc2bde7f3b10d704da5731e9912fa9e0645fdd7d12b12388332e90c",
67
+ "bytes": 582
68
+ },
69
+ {
70
+ "id": "guide/getting-started#staging",
71
+ "title": "Quick start · 3. Select a test environment",
72
+ "description": "Install, sign in, and prepare your first Chat app.",
73
+ "source": "site/guides.ts",
74
+ "url": "/getting-started.html#staging",
75
+ "excerpt": "```text\nsendbird profile create --name staging --env staging\nsendbird profile use --name staging\nsendbird auth login\nsendbird org list\nsendbird org use --id ORG_UID\nsendbird app list\nsendbird app use --id APP_ID\nsendbird doctor\n```\n\nStaging",
76
+ "intents": "",
77
+ "terms": "text sendbird profile create name staging env use auth login org list id uid app doctor sign in uses gate browser oauth complete and cli approval then return inspect clear clears selection organization region while retaining prod default delete yes removes unused its saved",
78
+ "path": "/cli-sections/d39cf431406c31a68df565a1.md",
79
+ "sha256": "00cb2c7c1bb6dcccebed1f6d760130aad1371f67b42e44190ff5e03c43f6645f",
80
+ "bytes": 676
81
+ },
82
+ {
83
+ "id": "guide/getting-started#explicit",
84
+ "title": "Quick start · Create an app with explicit commands",
85
+ "description": "Install, sign in, and prepare your first Chat app.",
86
+ "source": "site/guides.ts",
87
+ "url": "/getting-started.html#explicit",
88
+ "excerpt": "```text\nsendbird org create --organization-name 'My team'\nsendbird org use --id ORG_UID\nsendbird org region list\nsendbird org region use --id REGION_ID\nsendbird app create --app-name 'Chat demo'\nsendbird app use --id APP_ID\n```\n\nUse `result",
89
+ "intents": "",
90
+ "terms": "text sendbird org create organization name my team use id uid region list app chat demo result organizations 0 from creation and application selects already allowed for it does not grant access",
91
+ "path": "/cli-sections/09c4670e995bced07d1234cb.md",
92
+ "sha256": "dcb782457ac83729f79e7949acf36473ba892e38f2c535f5b5e0fa3d7cfd76fe",
93
+ "bytes": 501
94
+ },
95
+ {
96
+ "id": "guide/getting-started#verify",
97
+ "title": "Quick start · Check readiness",
98
+ "description": "Install, sign in, and prepare your first Chat app.",
99
+ "source": "site/guides.ts",
100
+ "url": "/getting-started.html#verify",
101
+ "excerpt": "```text\nsendbird doctor\nsendbird chat user list --limit 20\n```\n\nDefault output is a readable summary or table. Agents and scripts use `--json` for the complete response.",
102
+ "intents": "",
103
+ "terms": "text sendbird doctor chat user list limit 20 default output is readable summary or table agents and scripts use json for complete response",
104
+ "path": "/cli-sections/3eb599d73a959ab5a22eb77e.md",
105
+ "sha256": "177a6f1abdcf0cc353e6e3c57dcfd24f47d4a25571e131564dcbf17b107f7c13",
106
+ "bytes": 204
107
+ },
108
+ {
109
+ "id": "guide/app-features#intro",
110
+ "title": "Enable and disable app features",
111
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
112
+ "source": "site/guides.ts",
113
+ "url": "/app-features.html",
114
+ "excerpt": "Enable and disable app features A plan feature may still require app activation. Check subscription entitlement, app settings, and actual operation separately.",
115
+ "intents": "",
116
+ "terms": "enable and disable app features plan feature may still require activation check subscription entitlement settings actual operation separately",
117
+ "path": "/cli-sections/07657f5ab387d499495b79bf.md",
118
+ "sha256": "f4a42e59ab996a1a059c94c9f59f62eeda1bac8d838e04536e05e6599315157f",
119
+ "bytes": 196
120
+ },
121
+ {
122
+ "id": "guide/app-features#list",
123
+ "title": "Enable and disable app features · Read current settings",
124
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
125
+ "source": "site/guides.ts",
126
+ "url": "/app-features.html#list",
127
+ "excerpt": "```text\nsendbird --profile staging app feature list\nsendbird --profile staging --json app feature list\n```\n\nRead the selected app's enabled_features. Yes/No describes activation settings; Unknown means no reported value. Check subscription ",
128
+ "intents": "",
129
+ "terms": "text sendbird profile staging app feature list json read selected s enabled features yes no describes activation settings unknown means reported value check subscription inclusion with doctor this does not inspect message search pipelines or user token and changes",
130
+ "path": "/cli-sections/2da8104ec3c8e622d6ec226a.md",
131
+ "sha256": "209df6dd776d6a3b30301971a37d96fdaf4b408612f5e90eb3e69d7b981ce337",
132
+ "bytes": 415
133
+ },
134
+ {
135
+ "id": "guide/app-features#set",
136
+ "title": "Enable and disable app features · Preview and apply a change",
137
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
138
+ "source": "site/guides.ts",
139
+ "url": "/app-features.html#set",
140
+ "excerpt": "```text\nsendbird --profile staging app feature set --feature poll --enabled true --dry-run\nsendbird --profile staging app feature set --feature poll --enabled true --yes\nsendbird --profile staging app feature list\nsendbird --profile staging",
141
+ "intents": "",
142
+ "terms": "text sendbird profile staging app feature set poll enabled true dry run yes list false select authorized test organization or specify org id and sends no request establishes permissions entitlement writes check active self service current chat subscription gate enforces application settings all activation may affect usage charges under existing plan cli does not purchase change subscriptions",
143
+ "path": "/cli-sections/6b1f6e4165f50b006e379f3d.md",
144
+ "sha256": "f47ad1846ae5dda6c5843893dfb00a26e7786c2bf8576ad0ff2b78a1c29c61b5",
145
+ "bytes": 759
146
+ },
147
+ {
148
+ "id": "guide/app-features#keys",
149
+ "title": "Enable and disable app features · Supported feature keys",
150
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
151
+ "source": "site/guides.ts",
152
+ "url": "/app-features.html#keys",
153
+ "excerpt": "Area | --feature values |\n\nChannels and messages | supergroup, poll, delivery_receipt, announcement, moderator_messages |\n\nMedia, translation, search, analytics | auto_thumbnail, translation_tools, message_search, advanced_analytics |\n\nF",
154
+ "intents": "",
155
+ "terms": "area feature values channel and message supergroup poll delivery receipt announcement moderator media translation search analytics auto thumbnail tools advanced filters moderation image domain filter profanity hive integration integrations webhook data export is excluded this toggle api does not change desk ai engine mau concurrency storage or transfer limits activation replace bot registration url configuration other setup",
156
+ "path": "/cli-sections/0258287e7846018faeeed396.md",
157
+ "sha256": "a136564719e421fe18e7479691b9551b91cf18db6f83482314710b398de895c9",
158
+ "bytes": 687
159
+ },
160
+ {
161
+ "id": "guide/app-features#rules",
162
+ "title": "Enable and disable app features · Feature constraints",
163
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
164
+ "source": "site/guides.ts",
165
+ "url": "/app-features.html#rules",
166
+ "excerpt": "Enabling advanced_profanity_filter also disables profanity_filter, matching Dashboard. The basic filter cannot change while the advanced filter is enabled. Disable the advanced filter through a separately confirmed command. Changes affectin",
167
+ "intents": "",
168
+ "terms": "enabling advanced profanity filter also disables matching dashboard basic cannot change while is enabled disable through separately confirmed command changes affecting existing services including disabling supergroup require yes message search checks app region and pipeline transition state are blocked during historical collection or stopping gate s get can reset failed disabled so it runs only never list doctor dry run true flag does not prove index readiness inspect progress in",
169
+ "path": "/cli-sections/d0e473073d2b5353a86a8da5.md",
170
+ "sha256": "2cd003c491a4c180a2e05d29f02acc2fda987d74aed401726bd00880bde3eb81",
171
+ "bytes": 720
172
+ },
173
+ {
174
+ "id": "guide/app-features#readback",
175
+ "title": "Enable and disable app features · Verify the change",
176
+ "description": "Manage app feature activation through the same API as Dashboard Features.",
177
+ "source": "site/guides.ts",
178
+ "url": "/app-features.html#readback",
179
+ "excerpt": "Set sends one PUT and reads back with GET. readback.status matches means the requested setting was observed; mismatch means a different value; unavailable means verification failed. runtime_verified remains false. Read failures or mismatche",
180
+ "intents": "",
181
+ "terms": "set sends one put and reads back with get readback status matches means requested setting was observed mismatch different value unavailable verification failed runtime verified remains false read failures or mismatches never trigger automatic repeated write lost responses server errors may follow partial changes first feature list for same app",
182
+ "path": "/cli-sections/faaf9177c14a65d59cab210d.md",
183
+ "sha256": "7aeb34c3fe06e62b0e7f022033c96463d60747a90db49034129429c92b6b9696",
184
+ "bytes": 443
185
+ },
186
+ {
187
+ "id": "guide/execution-diagnosis#intro",
188
+ "title": "Check prerequisites before execution",
189
+ "description": "Distinguish Pro subscriptions, app activation, Dashboard roles, and SDK actors.",
190
+ "source": "site/guides.ts",
191
+ "url": "/execution-diagnosis.html",
192
+ "excerpt": "Check prerequisites before execution Doctor gathers read-only evidence. A successful diagnosis does not guarantee a mutation will succeed.",
193
+ "intents": "",
194
+ "terms": "check prerequisites before execution doctor gathers read only evidence successful diagnosis does not guarantee mutation will succeed",
195
+ "path": "/cli-sections/da160351db8b5c4637bf2d81.md",
196
+ "sha256": "94ebdcf361737fd1de90553e28f0ec8bff65c735b4e85b5eedf951e3b44fc1d2",
197
+ "bytes": 180
198
+ },
199
+ {
200
+ "id": "guide/execution-diagnosis#command",
201
+ "title": "Check prerequisites before execution · Specify the operation",
202
+ "description": "Distinguish Pro subscriptions, app activation, Dashboard roles, and SDK actors.",
203
+ "source": "site/guides.ts",
204
+ "url": "/execution-diagnosis.html#command",
205
+ "excerpt": "```text\nsendbird --profile staging doctor\nsendbird --profile staging doctor --command 'chat channel create' --type supergroup\nsendbird --profile staging doctor --command 'chat message send' --type supergroup --id CHANNEL_URL --as-user alice",
206
+ "intents": "",
207
+ "terms": "text sendbird profile staging doctor command chat channel create type supergroup message send id url as user alice json get group verify selected organization app or bind org and explicitly performs no mutations sdk connections token retrieval management reads use existing cli oauth may perform normal auth refresh",
208
+ "path": "/cli-sections/b5ba15ddb43959c10e33c7ee.md",
209
+ "sha256": "62ae11d0b4def08b2d9985798d0d1ea09d2819b418e7919f2d0d95f07e660966",
210
+ "bytes": 650
211
+ },
212
+ {
213
+ "id": "guide/execution-diagnosis#display",
214
+ "title": "Check prerequisites before execution · Read feature and permission evidence",
215
+ "description": "Distinguish Pro subscriptions, app activation, Dashboard roles, and SDK actors.",
216
+ "source": "site/guides.ts",
217
+ "url": "/execution-diagnosis.html#display",
218
+ "excerpt": "Supergroup, Reactions, and Poll in app get come from current_premium_features, a reported plan snapshot. Reported enabled/disabled does not establish actual success or denial; missing or invalid evidence is Not reported. JSON values are pre",
219
+ "intents": "",
220
+ "terms": "supergroup reaction and poll in app get come from current premium features reported plan snapshot enabled disabled does not establish actual success or denial missing invalid evidence is json values are preserved auth status shows role up 12 distinct permission entries use for full list none returned means empty unavailable permissions alone access every api human output labels organization identifiers uid org id keys remain unchanged error 400108 points doctor failed code prove unsupported service never authorizes automatic feature changes",
221
+ "path": "/cli-sections/c3e8152d7ae14de9b11d3ee9.md",
222
+ "sha256": "75034db104e46b82b22ea74702e7d0e99eee5c276ccf2a73c3a0257e146cc7b4",
223
+ "bytes": 889
224
+ },
225
+ {
226
+ "id": "guide/execution-diagnosis#evidence",
227
+ "title": "Check prerequisites before execution · What is checked?",
228
+ "description": "Distinguish Pro subscriptions, app activation, Dashboard roles, and SDK actors.",
229
+ "source": "site/guides.ts",
230
+ "url": "/execution-diagnosis.html#evidence",
231
+ "excerpt": "Evidence | Meaning and limits |\n\nOrganization subscription | Read the current Chat subscription. An app plan field alone does not prove Pro entitlement. Unrecognized plans remain unknown. |\n\nFeature settings | Report entitlement, enabled",
232
+ "intents": "",
233
+ "terms": "evidence meaning and limits organization subscription read current chat app plan field alone does not prove pro entitlement unrecognized plans remain unknown feature settings report enabled features get detail separately false or conflicting snapshots independently establish sdk execution denial role compare permissions documented in server source with owner is insufficient makes final decision actor existence bounded membership pages distinguish invited from joined unobserved member proof of absence regions contractual included amounts hard count capacity region creation access calculate pricing remaining",
234
+ "path": "/cli-sections/f9c43777d06a7819fb8282d5.md",
235
+ "sha256": "8689d6ac0449d0eb9bc7de52658a09965f48dce59c40360ef29e0083720e071e",
236
+ "bytes": 942
237
+ },
238
+ {
239
+ "id": "guide/execution-diagnosis#result",
240
+ "title": "Check prerequisites before execution · Interpret the result",
241
+ "description": "Distinguish Pro subscriptions, app activation, Dashboard roles, and SDK actors.",
242
+ "source": "site/guides.ts",
243
+ "url": "/execution-diagnosis.html#result",
244
+ "excerpt": "Allowed describes an observed read or prerequisite; denied describes confirmed rejection evidence; unknown requires execution verification. Doctor never performs the requested mutation. Only selected non-secret GET commands are probed, with",
245
+ "intents": "",
246
+ "terms": "allowed describes observed read or prerequisite denied confirmed rejection evidence unknown requires execution verification doctor never performs requested mutation only selected non secret get commands are probed with default inputs not complete payloads agents checks and assessment together attempted input validated per feature runtime verified remain false keep these separate from actual tutorial 401 sign in 403 permission switch accounts enable paid features automatically bypass diagnosis failure",
247
+ "path": "/cli-sections/c40764673f7cd5124567b24a.md",
248
+ "sha256": "d7d55018eca589fa464b5b65983dbdf03bba61fcd6ed13355a873020370adae4",
249
+ "bytes": 689
250
+ },
251
+ {
252
+ "id": "guide/sdk-chat#intro",
253
+ "title": "SDK chat and real-time events",
254
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
255
+ "source": "site/guides.ts",
256
+ "url": "/sdk-chat.html",
257
+ "excerpt": "SDK chat and real-time events Connect as a Chat user, send channel messages, and receive events.\n\nSpecify `--app-id` and `--as-user`. CLI OAuth reads an existing Chat user access token for the selected environment into memory only. Tokens ",
258
+ "intents": "SDK group chat message",
259
+ "terms": "sdk chat and real time events connect as user send channel message receive specify app id cli oauth reads existing access token for selected environment into memory only remain valid until revoked management api are not used",
260
+ "path": "/cli-sections/b679f126af11da5b420c2cbb.md",
261
+ "sha256": "3fded2e978d9a7f237dd92a4e57cc959c49ca6bbdc9b44509f0787a1b130100a",
262
+ "bytes": 341
263
+ },
264
+ {
265
+ "id": "guide/sdk-chat#identity",
266
+ "title": "SDK chat and real-time events · Prepare user authentication",
267
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
268
+ "source": "site/guides.ts",
269
+ "url": "/sdk-chat.html#identity",
270
+ "excerpt": "```text\nsendbird --profile staging auth login\nsendbird chat sdk status --app-id APP_ID --as-user alice\n```\n\nUse `--user-token-file` for an existing external token: a string or JSON access_token/session_token. Optional JSON user_id/app_id mu",
271
+ "intents": "",
272
+ "terms": "text sendbird profile staging auth login chat sdk status app id as user alice use token file for existing external string or json access session optional must match target default execution neither stores nor prints specify allow guest only authorized tokenless test policy may creation",
273
+ "path": "/cli-sections/1192978c5345a27793ff3d6b.md",
274
+ "sha256": "e048043e8ed17ae35656b54a4a9d2d08f4af7ace2942d33d948df6c2500f5e04",
275
+ "bytes": 483
276
+ },
277
+ {
278
+ "id": "guide/sdk-chat#messages",
279
+ "title": "SDK chat and real-time events · Send and read messages",
280
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
281
+ "source": "site/guides.ts",
282
+ "url": "/sdk-chat.html#messages",
283
+ "excerpt": "```text\nsendbird chat message send --app-id APP_ID --as-user alice --type group --id CHANNEL_URL --message 'Hello'\nsendbird chat message list --app-id APP_ID --as-user alice --type group --id CHANNEL_URL --limit 20\nsendbird chat message get",
284
+ "intents": "",
285
+ "terms": "text sendbird chat message send app id as user alice type group channel url hello list limit 20 get actor must be member success waits for sdk callback pass result next before older history is millisecond timestamp",
286
+ "path": "/cli-sections/08d438e9d18f16181a525a3e.md",
287
+ "sha256": "0add1bf7d9b128bbb38a92cd5fa7e09116e5cca51e1c7f051785437c766a3a12",
288
+ "bytes": 578
289
+ },
290
+ {
291
+ "id": "guide/sdk-chat#edit",
292
+ "title": "SDK chat and real-time events · Edit, delete, and send files",
293
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
294
+ "source": "site/guides.ts",
295
+ "url": "/sdk-chat.html#edit",
296
+ "excerpt": "```text\n# Supply the same --app-id and --as-user in these examples.\nsendbird chat message update --type group --id CHANNEL_URL --message-id MESSAGE_ID --message 'Updated message'\nsendbird chat message delete --type group --id CHANNEL_URL --",
297
+ "intents": "",
298
+ "terms": "text supply same app id and as user in these examples sendbird chat message update type group channel url updated delete yes file photo png mime image https example com name sdk sender permissions apply edits deletion local files allow up 25 mib urls must use encrypted ekeys are excluded from output",
299
+ "path": "/cli-sections/49857d104fec2ebbfd29a888.md",
300
+ "sha256": "09c06c49e43166f7db9e1a57ee5056571b69a55b11fd33001aaae17f1c5fbdc9",
301
+ "bytes": 725
302
+ },
303
+ {
304
+ "id": "guide/sdk-chat#threads",
305
+ "title": "SDK chat and real-time events · Replies, reactions, and pins",
306
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
307
+ "source": "site/guides.ts",
308
+ "url": "/sdk-chat.html#threads",
309
+ "excerpt": "```text\nsendbird chat message reply --type group --id CHANNEL_URL --message-id PARENT_ID --message 'This is a reply'\nsendbird chat message thread --type group --id CHANNEL_URL --message-id PARENT_ID --limit 20\nsendbird chat message reaction",
310
+ "intents": "",
311
+ "terms": "text sendbird chat message reply type group id channel url parent this is thread limit 20 reaction add key thumbs up remove pin unpin sdk pins list replies and support supergroup subject app features permissions timestamp pages may overlap deduplicate by increase if boundary does not advance guaranteed full export",
312
+ "path": "/cli-sections/0bda6228d21a1fd044952f31.md",
313
+ "sha256": "cc5949a58c7536d943cf41f8f7149badf56aa7cb8b77f27dc776f34ce54cae84",
314
+ "bytes": 988
315
+ },
316
+ {
317
+ "id": "guide/sdk-chat#member-state",
318
+ "title": "SDK chat and real-time events · Membership and atomic counters",
319
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
320
+ "source": "site/guides.ts",
321
+ "url": "/sdk-chat.html#member-state",
322
+ "excerpt": "```text\nsendbird chat sdk channel members list --type group --id CHANNEL_URL --limit 20\nsendbird chat sdk channel members invite --type group --id CHANNEL_URL --user-ids '[\"bob\"]'\nsendbird chat sdk channel typing-users --type group --id CHA",
323
+ "intents": "",
324
+ "terms": "text sendbird chat sdk channel member list type group id url limit 20 invite user ids bob typing counters get keys likes increase 1 invitations and use connected actor s permissions start lists at page follow result next each new connection rereads earlier pages adding cost allowing concurrent changes shift entries counter are atomic never retried automatically available only in regular these commands test real access distinct from dashboard administration",
325
+ "path": "/cli-sections/0601abaad7724f7f066e8faf.md",
326
+ "sha256": "9ce3e9815cac7cdffb944e73ce58b8bf8a7057723dbd882b06047f77fb0be474",
327
+ "bytes": 936
328
+ },
329
+ {
330
+ "id": "guide/sdk-chat#my-channels",
331
+ "title": "SDK chat and real-time events · My channels and notification preferences",
332
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
333
+ "source": "site/guides.ts",
334
+ "url": "/sdk-chat.html#my-channels",
335
+ "excerpt": "```text\n# Supply the same --app-id and --as-user.\nsendbird chat sdk channel my list --type all --member-state joined --limit 20 --page 1\nsendbird chat sdk channel my list --type supergroup --limit 20 --page 1\nsendbird chat sdk channel my un",
336
+ "intents": "",
337
+ "terms": "text supply same app id and as user sendbird chat sdk channel my list type all member state joined limit 20 page 1 supergroup unread invitation get set auto accept false count preference group url mention only lists connected s not open participation preserve filters while following next up 100 every invocation recreates its query rereads preceding pages empty last message are included staging may report overall per snapshots missing remain null never inferred zero exclude unavailable read totals with",
338
+ "path": "/cli-sections/18c3f713c45d32dc13e5eb62.md",
339
+ "sha256": "a306fcd3925516dc7da83503768cfe108832a696d1d6858c7d42bd0bcaf305ad",
340
+ "bytes": 1270
341
+ },
342
+ {
343
+ "id": "guide/sdk-chat#presence",
344
+ "title": "SDK chat and real-time events · Join, mark read, and type",
345
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
346
+ "source": "site/guides.ts",
347
+ "url": "/sdk-chat.html#presence",
348
+ "excerpt": "```text\nsendbird chat channel join --type group --id CHANNEL_URL\nsendbird chat channel invitation accept --type group --id CHANNEL_URL\nsendbird chat channel leave --type group --id CHANNEL_URL --yes\nsendbird chat channel read --type group -",
349
+ "intents": "",
350
+ "terms": "text sendbird chat channel join type group id url invitation accept leave yes read message receipts typing seconds 3 participants list open limit 20 and support regular only public groups invitations for private put access code in body file operations enter temporarily exit on completion not permanent participation sdk commands reconnect per invocation so results are snapshots return one page call",
351
+ "path": "/cli-sections/902509c81bb4a17e3fbead04.md",
352
+ "sha256": "f735dbe45aa532f7304dd1ff444dd2e96cf7c337f646ae6b4d451128fe75c87d",
353
+ "bytes": 923
354
+ },
355
+ {
356
+ "id": "guide/sdk-chat#watch",
357
+ "title": "SDK chat and real-time events · Receive real-time events",
358
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
359
+ "source": "site/guides.ts",
360
+ "url": "/sdk-chat.html#watch",
361
+ "excerpt": "```text\nsendbird chat channel watch --app-id APP_ID --as-user bob --type group --id CHANNEL_URL --seconds 60 --max-events 100\n```\n\nSend as Alice in another terminal. After `ready`, messages, edits, deletion, reactions, membership, read, and",
362
+ "intents": "",
363
+ "terms": "text sendbird chat channel watch app id as user bob type group url seconds 60 max events 100 send alice in another terminal after ready message edits deletion reaction membership read and typing use ndjson only target is observed are not automatically marked limits or ctrl c close connection worker sdk durable change log list recover missed",
364
+ "path": "/cli-sections/0608193e8665d2cc18547648.md",
365
+ "sha256": "f24631666b30153eb191e912b2e89db9434c5a9c07955ade54ef704f463d3d52",
366
+ "bytes": 537
367
+ },
368
+ {
369
+ "id": "guide/sdk-chat#scheduled-readback",
370
+ "title": "SDK chat and real-time events · Verify cancellation and restored notifications",
371
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
372
+ "source": "site/guides.ts",
373
+ "url": "/sdk-chat.html#scheduled-readback",
374
+ "excerpt": "Scheduled lists include canceled history. Confirm the ID leaves `chat sdk message scheduled list --status pending` and appears under `--status canceled`. Snooze start-at/end-at use Unix milliseconds, with end after start. `--enabled false` ",
375
+ "intents": "",
376
+ "terms": "scheduled lists include canceled history confirm id leaves chat sdk message list status pending and appears under snooze start at end use unix milliseconds with after enabled false preserves existing interval channel hide reset send now cancel operator moderation writes require yes",
377
+ "path": "/cli-sections/03444c976c059087cee90419.md",
378
+ "sha256": "a55b4d8d7c3b0bd98fd87cee3e9d933107eeab0b88f6ce01f1106657cb9dc740",
379
+ "bytes": 460
380
+ },
381
+ {
382
+ "id": "guide/sdk-chat#environment",
383
+ "title": "SDK chat and real-time events · Staging and execution limits",
384
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
385
+ "source": "site/guides.ts",
386
+ "url": "/sdk-chat.html#environment",
387
+ "excerpt": "Actual SDK execution discovers the selected app's Standard/Delight hosts through CLI OAuth; `--dry-run` stays offline. Automatic tokens always validate authoritative app/environment/hosts before token retrieval, including `--sdk-config-file",
388
+ "intents": "",
389
+ "terms": "actual sdk execution discovers selected app s standard delight hosts through cli oauth dry run stays offline automatic token always validate authoritative environment before retrieval including config file or explicit host overrides cannot bypass discovery failure only user guest credentials with skip save raw output supply api and ws together failures never fall back production default connect operation timeout is 30 seconds accepts 1 300 watch uses its own post limit automatically resends message after interruption read state considering recovery",
390
+ "path": "/cli-sections/1c74448e9794a7ce93b9119f.md",
391
+ "sha256": "10e30f24bbf0fa9a66e6d95a139bcddb09ff9e69540128b2134d560378bd82f3",
392
+ "bytes": 901
393
+ },
394
+ {
395
+ "id": "guide/sdk-chat#coverage",
396
+ "title": "SDK chat and real-time events · Supported scope",
397
+ "description": "Use the Chat SDK for messages, files, replies, reactions, read marks, and typing.",
398
+ "source": "site/guides.ts",
399
+ "url": "/sdk-chat.html#coverage",
400
+ "excerpt": "The official JavaScript Chat SDK v4 provides user channels/unread counts, invitation/count preferences, push preferences, snooze, scheduled messages, Polls, change logs, operators and moderation. See the Pro guide for Poll lifecycle, blocki",
401
+ "intents": "",
402
+ "terms": "official javascript chat sdk v4 provides user channel unread counts invitation count preferences push snooze scheduled message polls change logs operators and moderation see pro guide for poll lifecycle blocking weekly dnd friend administration files remain excluded requires actor s operator rights yes actual operation needs valid app credentials access auth https sendbird com docs application authenticating lists retrieving retrieve list of settings inviting group accept or decline features overview",
403
+ "path": "/cli-sections/a4f9bc96a0ae2c355f11b9d6.md",
404
+ "sha256": "1b5f4862b2c7e62a4f985400418999a82046b880676a8b2783129e58e56ff009",
405
+ "bytes": 995
406
+ },
407
+ {
408
+ "id": "guide/agent-discovery#intro",
409
+ "title": "First steps for AI agents",
410
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
411
+ "source": "site/guides.ts",
412
+ "url": "/agent-discovery.html",
413
+ "excerpt": "AGENT-FIRST / DISCOVERY CONTRACT v1\n\nA new CLI:\nwhere should an agent start? You do not need the entire README or dozens of schemas.\nStart small and narrow down to the operation.",
414
+ "intents": "",
415
+ "terms": "agent first discovery contract v1 new cli where should start you not need entire readme or dozens of schemas small and narrow down operation",
416
+ "path": "/cli-sections/81c96c3c84b9147908085146.md",
417
+ "sha256": "fd584b054099e3748f21f8feab59cfe7363bf29b250c7dfffc937e119352a34e",
418
+ "bytes": 209
419
+ },
420
+ {
421
+ "id": "guide/agent-discovery#start",
422
+ "title": "First steps for AI agents · 1. Start with the compact guide",
423
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
424
+ "source": "site/guides.ts",
425
+ "url": "/agent-discovery.html#start",
426
+ "excerpt": "```text\nsendbird\n# Or:\nsendbird --json agent\n```\n\nDefault output is readable; `--json` returns version, discovery, authentication, and execution contracts. This performs no network access, login, or configuration writes.",
427
+ "intents": "",
428
+ "terms": "text sendbird or json agent default output is readable returns version discovery auth and execution contracts this performs no network access login configuration writes",
429
+ "path": "/cli-sections/239ba1ac7041543c48094331.md",
430
+ "sha256": "487f39f19788925567c8e49a9145b282701f84ed612c348d1b938efa4feb433d",
431
+ "bytes": 285
432
+ },
433
+ {
434
+ "id": "guide/agent-discovery#command-search",
435
+ "title": "First steps for AI agents · 2. Find the operation",
436
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
437
+ "source": "site/guides.ts",
438
+ "url": "/agent-discovery.html#command-search",
439
+ "excerpt": "```text\nsendbird --json commands --compact --search \"message send\" --transport sdk\nsendbird --json commands --compact --search \"channel create\"\nsendbird --json commands --compact --limit 10 --offset 10\n```\n\nResults include names, descriptio",
440
+ "intents": "",
441
+ "terms": "text sendbird json commands compact search message send transport sdk channel create limit 10 offset results include names descriptions effects and match evidence default is 20 maximum 100 plain displays bounded view use for complete structure cli browser share english synonym normalization case plural handling prefix matching typo correction such as mesage registered task vocabulary links questions relevant expansion occurs only after exact fails expanded partial matches remain distinct queries allow at most 256 characters 24 terms no embeddings or",
442
+ "path": "/cli-sections/a93226a17d0f2781ac39bf83.md",
443
+ "sha256": "0701fe8966b663c2c91351a061a6bb445b3966ec7db61bb9408ef19b41334dfc",
444
+ "bytes": 1077
445
+ },
446
+ {
447
+ "id": "guide/agent-discovery#inspect",
448
+ "title": "First steps for AI agents · 3. Inspect one command",
449
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
450
+ "source": "site/guides.ts",
451
+ "url": "/agent-discovery.html#inspect",
452
+ "excerpt": "```text\nsendbird --json describe chat message send\nsendbird --json describe app sdk-config\n```\n\nRead registered flags, required inputs, authentication, constraints, schemas, and dry-run argv/shell examples. Replace uppercase placeholders su",
453
+ "intents": "",
454
+ "terms": "text sendbird json describe chat message send app sdk config read registered flags required inputs auth constraints schemas and dry run argv shell examples replace uppercase placeholders such as id with actual authorized bindings",
455
+ "path": "/cli-sections/6696eec2e2fea7767eba219e.md",
456
+ "sha256": "9dbbb9bc4dd5bdcf6db63895343137b013ee917bb95c531c162403992fc212bf",
457
+ "bytes": 341
458
+ },
459
+ {
460
+ "id": "guide/agent-discovery#recipe",
461
+ "title": "First steps for AI agents · 4. Read a workflow",
462
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
463
+ "source": "site/guides.ts",
464
+ "url": "/agent-discovery.html#recipe",
465
+ "excerpt": "```text\nsendbird workflows\nsendbird --json workflows prepare-chat\nsendbird --json workflows staging-sdk\nsendbird --json workflows first-message\n```\n\nWorkflows return plans without executing them. They explain reuse decisions, independent re",
466
+ "intents": "",
467
+ "terms": "text sendbird workflows json prepare chat staging sdk first message return plans without executing them they explain reuse decisions independent recipient terminals captured ids and verification criteria",
468
+ "path": "/cli-sections/c8dac4aaac4c228ff10930af.md",
469
+ "sha256": "d78ea210bd59672fae60e6304b4165a2e8088e3fcded07ad6615e0be723d0096",
470
+ "bytes": 359
471
+ },
472
+ {
473
+ "id": "guide/agent-discovery#auth",
474
+ "title": "First steps for AI agents · Separate management authentication and SDK hosts",
475
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
476
+ "source": "site/guides.ts",
477
+ "url": "/agent-discovery.html#auth",
478
+ "excerpt": "```text\nsendbird --profile staging auth status --summary\nsendbird --profile staging --app-id APP_ID chat sdk status --as-user USER_ID\n```\n\nDashboard authentication is for management operations; SDK sessions need user tokens. Staging executi",
479
+ "intents": "",
480
+ "terms": "text sendbird profile staging auth status summary app id chat sdk as user dashboard is for management operations sessions need token execution discovers standard delight hosts selected save environment bound config raw output file when needed never combine and explicit host overrides",
481
+ "path": "/cli-sections/be554447aac2011855892f52.md",
482
+ "sha256": "e38ee2c392481ae7ecf7ed5f2dd516393cec5702f8dd44449498c654ca3bfa19",
483
+ "bytes": 528
484
+ },
485
+ {
486
+ "id": "guide/agent-discovery#errors",
487
+ "title": "First steps for AI agents · Errors include next actions",
488
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
489
+ "source": "site/guides.ts",
490
+ "url": "/agent-discovery.html#errors",
491
+ "excerpt": "With `--json`, stderr includes next argv for discovery/recovery. A missing Chat token is not an instruction to repeat Dashboard login. Inspect outcome_unknown after timeout and read back before recovery. Suggestions do not authorize permiss",
492
+ "intents": "",
493
+ "terms": "with json stderr includes next argv for discovery recovery missing chat token is not instruction repeat dashboard login inspect outcome unknown after timeout and read back before suggestions authorize permission changes or additional sends",
494
+ "path": "/cli-sections/3791baf7f90d05a886fad19a.md",
495
+ "sha256": "af23460d77ef7a555a61cd2b6ee140a62f6c2599ff0b3ae6804e0647caeaa5e7",
496
+ "bytes": 333
497
+ },
498
+ {
499
+ "id": "guide/agent-discovery#research",
500
+ "title": "First steps for AI agents · Research and measurements",
501
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
502
+ "source": "site/guides.ts",
503
+ "url": "/agent-discovery.html#research",
504
+ "excerpt": "Discovering the same text-send command | Output |\n\nRecorded full `--json commands` catalog | 132,037 bytes |\n\n`--json` startup guide + search + one describe | 10,769 bytes |\n\nRecorded UTF-8 output reduction | 91.8% |\n\nHistorical scripte",
505
+ "intents": "",
506
+ "terms": "discovering same text send command output recorded full json commands catalog 132 037 bytes startup guide search one describe 10 769 utf 8 reduction 91 historical scripted cold start comparison with empty configuration it does not measure token pricing latency or independent agent success generated dashboard sdk examples are checked through parser and offline previews design references bird s cli contract https com docs ai for agents anthropic focused tool discovery www engineering advanced use vercel api changelog introducing",
507
+ "path": "/cli-sections/270e26807c437f21fb2894ee.md",
508
+ "sha256": "b3d0281ef8cff2f6d1bee74b9f937181e1f9cf2d6edcc46ba0b44ad235c19979",
509
+ "bytes": 794
510
+ },
511
+ {
512
+ "id": "guide/agent-discovery#plugins",
513
+ "title": "First steps for AI agents · Plugin integration",
514
+ "description": "Start with compact discovery, then inspect only the commands and workflows you need.",
515
+ "source": "site/guides.ts",
516
+ "url": "/agent-discovery.html#plugins",
517
+ "excerpt": "The bundled Skill follows this contract. Claude Code and Codex use the shared sendbird/sendbird-plugins marketplace. Packaging, native host acceptance, and actual agent behavior are separate verification boundaries.",
518
+ "intents": "",
519
+ "terms": "bundled skill follows this contract claude code and codex use shared sendbird plugins marketplace packaging native host acceptance actual agent behavior are separate verification boundaries",
520
+ "path": "/cli-sections/cd968981779c0ebb22d43c41.md",
521
+ "sha256": "186de8ae9baa9bd3b24eb01f74bd4e2977ae8650c2cd4a0c36d37f39473fce41",
522
+ "bytes": 267
523
+ },
524
+ {
525
+ "id": "guide/authentication#intro",
526
+ "title": "Authentication and environments",
527
+ "description": "CLI OAuth, profiles, and secret handling.",
528
+ "source": "site/guides.ts",
529
+ "url": "/authentication.html",
530
+ "excerpt": "Authentication and environments Gate CLI OAuth authenticates management operations. App API tokens and Chat SDK user tokens are separate credentials.",
531
+ "intents": "",
532
+ "terms": "auth and environments gate cli oauth authenticates management operations app api token chat sdk user are separate credentials",
533
+ "path": "/cli-sections/82e1e91e0b33968e868e5f12.md",
534
+ "sha256": "0c1144e1231ef4429cbe14c095da9c6e84332b18fc6f1a4267b97b8ef214a287",
535
+ "bytes": 186
536
+ },
537
+ {
538
+ "id": "guide/authentication#login",
539
+ "title": "Authentication and environments · Sign in",
540
+ "description": "CLI OAuth, profiles, and secret handling.",
541
+ "source": "site/guides.ts",
542
+ "url": "/authentication.html#login",
543
+ "excerpt": "```text\nsendbird --profile staging auth login\nsendbird --profile staging auth status --summary\nsendbird --profile staging auth logout\n```\n\nStaging uses browser OAuth and a local callback after Gate approval. Grants cannot outlive the approv",
544
+ "intents": "",
545
+ "terms": "text sendbird profile staging auth login status summary logout uses browser oauth and local callback after gate approval grants cannot outlive approved dashboard session requests revocation current cli scope exposes existing permissions so this is not evidence of production readiness",
546
+ "path": "/cli-sections/cc48a4b2329cb81af9970659.md",
547
+ "sha256": "56416d99e33712300a38c7d3f8d72242096f0085a8499c698aec29bbd97a976d",
548
+ "bytes": 470
549
+ },
550
+ {
551
+ "id": "guide/authentication#sso",
552
+ "title": "Authentication and environments · SSO and 2FA",
553
+ "description": "CLI OAuth, profiles, and secret handling.",
554
+ "source": "site/guides.ts",
555
+ "url": "/authentication.html#sso",
556
+ "excerpt": "```text\nsendbird --profile staging auth login --method oauth\n```\n\nUse the browser's existing Dashboard sign-in, SSO, and 2FA, then approve CLI access separately. macOS uses Keychain; Linux uses Secret Service and secret-tool. Unavailable Li",
557
+ "intents": "",
558
+ "terms": "text sendbird profile staging auth login method oauth use browser s existing dashboard sign in sso and 2fa then approve cli access separately macos uses keychain linux secret service tool unavailable keyrings fail rather than falling back ordinary credential files",
559
+ "path": "/cli-sections/1a6a9c094abafe94cfef1f3b.md",
560
+ "sha256": "5b0e65451f9915a1c793d7068635c9cb2cd46dac49dea5e5d410c4d63a64caa8",
561
+ "bytes": 371
562
+ },
563
+ {
564
+ "id": "guide/authentication#signup",
565
+ "title": "Authentication and environments · From account to app",
566
+ "description": "CLI OAuth, profiles, and secret handling.",
567
+ "source": "site/guides.ts",
568
+ "url": "/authentication.html#signup",
569
+ "excerpt": "`setup` offers sign-in or signup in production and staging. `auth signup` opens the selected environment's Dashboard signup page. The person completes signup, terms, and CLI OAuth approval in the browser, then the CLI continues organization",
570
+ "intents": "",
571
+ "terms": "setup offers sign in or signup production and staging auth opens selected environment s dashboard page person completes terms cli oauth approval browser then continues organization region app email verification is separate text sendbird profile verify token file private link txt org create name my team use id uid list chat demo save for paste it into hidden input specify creation once with",
572
+ "path": "/cli-sections/00aef8489a2ab3ac0d56accd.md",
573
+ "sha256": "e251c778421aa880f92835fb4f868323abeec0849d179cfac3f7690f76d86ed7",
574
+ "bytes": 975
575
+ },
576
+ {
577
+ "id": "guide/authentication#availability",
578
+ "title": "Authentication and environments · Environment support",
579
+ "description": "CLI OAuth, profiles, and secret handling.",
580
+ "source": "site/guides.ts",
581
+ "url": "/authentication.html#availability",
582
+ "excerpt": "CLI OAuth supports production and staging and uses the selected profile's Dashboard and Gate. Signup/terms remain browser steps; email verification is separate. Password sign-in, cookie import, and SENDBIRD_SESSION_FILE are unsupported.",
583
+ "intents": "",
584
+ "terms": "cli oauth supports production and staging uses selected profile s dashboard gate signup terms remain browser steps email verification is separate password sign in cookie import sendbird session file are unsupported",
585
+ "path": "/cli-sections/a421281d41ae145aec9b2566.md",
586
+ "sha256": "a9cf6e338a9ed78a116678fc350a6bf0be5cbe07c36f1e26bd470d1bda6feb23",
587
+ "bytes": 295
588
+ },
589
+ {
590
+ "id": "guide/authentication#headless",
591
+ "title": "Authentication and environments · Automation",
592
+ "description": "CLI OAuth, profiles, and secret handling.",
593
+ "source": "site/guides.ts",
594
+ "url": "/authentication.html#headless",
595
+ "excerpt": "A person must complete browser OAuth approval. Noninteractive CI grants are not provided.",
596
+ "intents": "",
597
+ "terms": "person must complete browser oauth approval noninteractive ci grants are not provided",
598
+ "path": "/cli-sections/5c996bd9d58828154dbf181c.md",
599
+ "sha256": "cd5412903474c0e76edb6a3c262a0ecd2c8c51c22a03804c99a3901b97ef852a",
600
+ "bytes": 139
601
+ },
602
+ {
603
+ "id": "guide/authentication#context",
604
+ "title": "Authentication and environments · Organization and app context",
605
+ "description": "CLI OAuth, profiles, and secret handling.",
606
+ "source": "site/guides.ts",
607
+ "url": "/authentication.html#context",
608
+ "excerpt": "`--profile`, `--org-id`, and `--app-id` override saved defaults for one invocation. Changing organization clears the app selection; when both IDs are supplied, ownership is checked.\n\n```text\nsendbird --profile staging --app-id APP_ID chat u",
609
+ "intents": "",
610
+ "terms": "profile org id and app override saved defaults for one invocation changing organization clears selection when both ids are supplied ownership is checked text sendbird staging chat user list",
611
+ "path": "/cli-sections/2d804bd053a62aaa58c8496a.md",
612
+ "sha256": "ba1c2a98f3641d837fef71e6f689ea43a92bdf35f7a023a322515a5e32da49ce",
613
+ "bytes": 320
614
+ },
615
+ {
616
+ "id": "guide/authentication#tokens",
617
+ "title": "Authentication and environments · Chat user tokens",
618
+ "description": "CLI OAuth, profiles, and secret handling.",
619
+ "source": "site/guides.ts",
620
+ "url": "/authentication.html#tokens",
621
+ "excerpt": "```text\nsendbird chat user token issue --id alice --yes --secret-output /private/path/outside-git/alice-token.json\n```\n\nSecrets are masked in output. `--secret-output` writes the original response only to a new file. Inside Git, the path mu",
622
+ "intents": "",
623
+ "terms": "text sendbird chat user token issue id alice yes secret output private path outside git json secrets are masked in writes original response only new file inside must be ignored and untracked symlinks checked at their real destination metadata unverifiable repositories rejected directory is also supported later forced adds or ignore changes cannot prevented app api retrieval creation revocation excluded cli oauth remain",
624
+ "path": "/cli-sections/7bd91a7ca300ed795faa8a65.md",
625
+ "sha256": "ca25ac2d207b7fb01e8b901a4b81f0d981c8cfe8bf9d12c9b1e8070a3eb76b5f",
626
+ "bytes": 643
627
+ },
628
+ {
629
+ "id": "guide/authentication#policy",
630
+ "title": "Authentication and environments · Tokenless access policy",
631
+ "description": "CLI OAuth, profiles, and secret handling.",
632
+ "source": "site/guides.ts",
633
+ "url": "/authentication.html#policy",
634
+ "excerpt": "`guest_user_policy`: 0 allows read/write, 1 read only, and 2 blocks tokenless sign-in.\n\n```text\nsendbird app auth-policy get\nsendbird app auth-policy set --guest-user-policy 2 --dry-run\nsendbird app auth-policy set --guest-user-policy 2 --y",
635
+ "intents": "",
636
+ "terms": "guest user policy 0 allows read write 1 only and 2 blocks tokenless sign in text sendbird app auth get set dry run yes",
637
+ "path": "/cli-sections/d127c2b67667480cd5e7fef6.md",
638
+ "sha256": "3593aeb5fba3f1c8d2d97fba83012d5b832bb6cd1daf236b92c04e3ee1129108",
639
+ "bytes": 309
640
+ },
641
+ {
642
+ "id": "guide/chat#intro",
643
+ "title": "Users and channels",
644
+ "description": "Create and manage the three channel types.",
645
+ "source": "site/guides.ts",
646
+ "url": "/chat.html",
647
+ "excerpt": "Users and channels For connected command exercises, see [user scenario tutorials](/tutorials.html).\n\nSpecify the channel type and carry response IDs into subsequent operations.",
648
+ "intents": "group chat channel",
649
+ "terms": "user and channel for connected command exercises see scenario tutorials html specify type carry response ids into subsequent operations",
650
+ "path": "/cli-sections/7458aa8a0ece16b21079cc9f.md",
651
+ "sha256": "35514cceef3807a1c30b69c14fde00f61ed2ba519043e07a31d040edf7cb467a",
652
+ "bytes": 200
653
+ },
654
+ {
655
+ "id": "guide/chat#users",
656
+ "title": "Users and channels · Prepare users",
657
+ "description": "Create and manage the three channel types.",
658
+ "source": "site/guides.ts",
659
+ "url": "/chat.html#users",
660
+ "excerpt": "```text\nsendbird chat user create --user-id alice --nickname Alice\nsendbird chat user create --user-id bob --nickname Bob\nsendbird chat user get --id alice\nsendbird chat user update --id alice --nickname 'Alice Kim'\n```",
661
+ "intents": "",
662
+ "terms": "text sendbird chat user create id alice nickname bob get update kim",
663
+ "path": "/cli-sections/7e72f3f08593b20b197d4e2a.md",
664
+ "sha256": "371fa0bb0dbde5a6f74985b49e28f283320beb475d2841e4e075d277c083b145",
665
+ "bytes": 259
666
+ },
667
+ {
668
+ "id": "guide/chat#channels",
669
+ "title": "Users and channels · Create channels",
670
+ "description": "Create and manage the three channel types.",
671
+ "source": "site/guides.ts",
672
+ "url": "/chat.html#channels",
673
+ "excerpt": "```text\nsendbird chat channel create --type open --name Lobby\nsendbird chat channel create --type group --name Demo --user-ids '[\"alice\",\"bob\"]'\nsendbird chat channel create --type supergroup --name Community --user-ids '[\"alice\",\"bob\"]'\n``",
674
+ "intents": "",
675
+ "terms": "text sendbird chat channel create type open name lobby group demo user ids alice bob supergroup community and require json array supergroups cannot be distinct returned id is result url",
676
+ "path": "/cli-sections/89a3222da6ca4f5482d92a6a.md",
677
+ "sha256": "da6597e57a7d4f00cfd2d1f66e7fae3dafe4ab5817652147b21b34c9370cc559",
678
+ "bytes": 421
679
+ },
680
+ {
681
+ "id": "guide/chat#members",
682
+ "title": "Users and channels · Read channels and invite members",
683
+ "description": "Create and manage the three channel types.",
684
+ "source": "site/guides.ts",
685
+ "url": "/chat.html#members",
686
+ "excerpt": "```text\nsendbird chat channel get --type group --id CHANNEL_URL\nsendbird chat channel members list --type group --id CHANNEL_URL\nsendbird chat channel members invite --type group --id CHANNEL_URL --user-ids '[\"charlie\"]'\n```\n\nCreate invitee",
687
+ "intents": "",
688
+ "terms": "text sendbird chat channel get type group id url member list invite user ids charlie create invitees first listing and invitation support supergroup",
689
+ "path": "/cli-sections/bd70d14ce4d840ad5f127a79.md",
690
+ "sha256": "8a1ae59624a39e6185547a1c2955c5dd373280210c47c82cc3083f52be638542",
691
+ "bytes": 367
692
+ },
693
+ {
694
+ "id": "guide/chat#metadata",
695
+ "title": "Users and channels · Metadata",
696
+ "description": "Create and manage the three channel types.",
697
+ "source": "site/guides.ts",
698
+ "url": "/chat.html#metadata",
699
+ "excerpt": "```text\nsendbird chat user metadata set --id alice --metadata '{\"tier\":\"free\"}'\nsendbird chat channel metadata set --type group --id CHANNEL_URL --metadata '{\"topic\":\"design\"}'\n```",
700
+ "intents": "",
701
+ "terms": "text sendbird chat user metadata set id alice tier free channel type group url topic design",
702
+ "path": "/cli-sections/ddbaea787ada15cd270bf564.md",
703
+ "sha256": "776d3718eec07dd5f0a5f64ace0b4c93c86a40933fe89e64452fb24fb1229c2e",
704
+ "bytes": 215
705
+ },
706
+ {
707
+ "id": "guide/chat#pagination",
708
+ "title": "Users and channels · Search and pagination",
709
+ "description": "Create and manage the three channel types.",
710
+ "source": "site/guides.ts",
711
+ "url": "/chat.html#pagination",
712
+ "excerpt": "```text\nsendbird chat user search --nickname Alice --limit 20\nsendbird chat channel search --type group --name-contains Demo --limit 20\nsendbird chat channel search --type group --channel-urls CHANNEL_URL --limit 20\nsendbird chat channel se",
713
+ "intents": "",
714
+ "terms": "text sendbird chat user search nickname alice limit 20 channel type group name contains demo urls url open lobby list token next cursor lists default and allow up 100 entries support substring supergroup require exact in also sets server filter pass result as app use offset",
715
+ "path": "/cli-sections/c8acee9fcd170bd98e8af494.md",
716
+ "sha256": "f75026ad0717f11e3944808d93a6bfc41a1a633cb424bc646e00e797bba129d6",
717
+ "bytes": 665
718
+ },
719
+ {
720
+ "id": "guide/chat#delete",
721
+ "title": "Users and channels · Confirm before deleting",
722
+ "description": "Create and manage the three channel types.",
723
+ "source": "site/guides.ts",
724
+ "url": "/chat.html#delete",
725
+ "excerpt": "```text\nsendbird chat channel delete --type group --id CHANNEL_URL --dry-run\nsendbird chat channel delete --type group --id CHANNEL_URL --yes\n```\n\nThese commands prepare Dashboard resources. Continue with [SDK chat](/sdk-chat.html) to excha",
726
+ "intents": "",
727
+ "terms": "text sendbird chat channel delete type group id url dry run yes these commands prepare dashboard resources continue with sdk html exchange message",
728
+ "path": "/cli-sections/0f8281118727fe60d78727a8.md",
729
+ "sha256": "e5a045d6f0fc197b0515dbcfcc569dee39c5c91798cb3d43709acd4a8236802d",
730
+ "bytes": 303
731
+ },
732
+ {
733
+ "id": "guide/automation#intro",
734
+ "title": "AI and automation",
735
+ "description": "Discoverable commands and predictable input/output.",
736
+ "source": "site/guides.ts",
737
+ "url": "/automation.html",
738
+ "excerpt": "AI and automation People and agents use the same commands.",
739
+ "intents": "",
740
+ "terms": "ai and automation people agents use same commands",
741
+ "path": "/cli-sections/5ddfed1a7a98902eaa4282b5.md",
742
+ "sha256": "de38a5117f3c5a752a9fd5b5e9bd3092c22e7680c63ee8360036ecdf0ed3e831",
743
+ "bytes": 81
744
+ },
745
+ {
746
+ "id": "guide/automation#discovery",
747
+ "title": "AI and automation · Discover only what you need",
748
+ "description": "Discoverable commands and predictable input/output.",
749
+ "source": "site/guides.ts",
750
+ "url": "/automation.html#discovery",
751
+ "excerpt": "```text\nsendbird agent\nsendbird docs search \"group chat\"\nsendbird docs read 'guide/chat#intro' --base-url http://127.0.0.1:4173\nsendbird commands --compact --search \"message send\"\nsendbird --json describe chat message send\nsendbird --json w",
752
+ "intents": "",
753
+ "terms": "text sendbird agent docs search group chat read guide intro base url http 127 0 1 4173 commands compact message send json describe workflows first channel create help example response schema searches installed version s tutorial section index offline fetches one markdown from local checkout server or matching https and verifies its digest set for another port give agents bundled skills skill md inspect command definitions instead of inventing flags this alpha has no hosted mcp",
754
+ "path": "/cli-sections/8984aa5bfba9c6e9ba94ae79.md",
755
+ "sha256": "bc804ac81385ee16fff611caf3cbd7e774b2adefe4c12060750585803849d2fc",
756
+ "bytes": 858
757
+ },
758
+ {
759
+ "id": "guide/automation#input",
760
+ "title": "AI and automation · Structured input",
761
+ "description": "Discoverable commands and predictable input/output.",
762
+ "source": "site/guides.ts",
763
+ "url": "/automation.html#input",
764
+ "excerpt": "```text\nsendbird chat user create --body-file user.json\ncat user.json | sendbird chat user create --body-file -\n```\n\nExplicit flags override JSON file fields. Boolean, array, number, and object flags accept JSON values. Ordinary commands fa",
765
+ "intents": "",
766
+ "terms": "text sendbird chat user create body file json cat explicit flags override fields boolean array number and object accept values ordinary commands fail immediately for missing input interactive prompts are limited login setup",
767
+ "path": "/cli-sections/e78e0648997a42cc85253efb.md",
768
+ "sha256": "653be590e6985474e7db7b6297d3471fcc75612b52b86111da2c99a0f86b7c18",
769
+ "bytes": 367
770
+ },
771
+ {
772
+ "id": "guide/automation#output",
773
+ "title": "AI and automation · Output contract",
774
+ "description": "Discoverable commands and predictable input/output.",
775
+ "source": "site/guides.ts",
776
+ "url": "/automation.html#output",
777
+ "excerpt": "Human output labels numeric enums while preserving wire values, for example `Token required (2)`. JSON/raw values remain unchanged. Agents inspect `value_semantics` in `sendbird --json describe COMMAND` or `x-sendbird-value-semantics` in `-",
778
+ "intents": "",
779
+ "terms": "human output labels numeric enums while preserving wire values for example token required 2 json raw remain unchanged agents inspect value semantics in sendbird describe command or x response schema never guess unknown codes default stdout contains summaries tables and stderr readable errors with uses status result envelope structured preview sent no request accepted needs readback verified completed read means uncertain mutation describes preserves legacy original dry run previews without api calls writes are retried automatically",
780
+ "path": "/cli-sections/64e4ac48ce133ad3e69d57fa.md",
781
+ "sha256": "a2ad48f4c9319493027c4bb12ecfd56a10e9224e18287f58857a7ccd1b5dd7a5",
782
+ "bytes": 781
783
+ },
784
+ {
785
+ "id": "guide/automation#support",
786
+ "title": "AI and automation · Submit a support ticket",
787
+ "description": "Discoverable commands and predictable input/output.",
788
+ "source": "site/guides.ts",
789
+ "url": "/automation.html#support",
790
+ "excerpt": "```text\nsendbird support ticket submit --body-file case.json --dry-run\n```\n\n```text\n{\n\"Subject\": \"Chat connection issue\",\n\"Description\": \"Reproduction details\",\n\"Development_Platform__c\": \"JavaScript\"\n}\n```\n\nRemove `--dry-run` only when sub",
791
+ "intents": "",
792
+ "terms": "text sendbird support ticket submit body file case json dry run subject chat connection issue description reproduction detail development platform c javascript remove only when submission is intended technical tickets use selected app attachments and other inquiry categories remain outside this alpha",
793
+ "path": "/cli-sections/f8c52ee24ed579e43e4dbffa.md",
794
+ "sha256": "bbb9eb029d6f896c0bd89b86614071dc63c3cbb7b4e8794fac36a5e382183f15",
795
+ "bytes": 422
796
+ },
797
+ {
798
+ "id": "guide/automation#exit",
799
+ "title": "AI and automation · Errors and recovery",
800
+ "description": "Discoverable commands and predictable input/output.",
801
+ "source": "site/guides.ts",
802
+ "url": "/automation.html#exit",
803
+ "excerpt": "Exit code | Meaning | Next action |\n\n2 | Input, validation, or confirmation | Inspect help and input schemas |\n\n3 | Resource not found | Verify ID and environment |\n\n4 | Authentication or permission | Sign in or verify access |\n\n5 |",
804
+ "intents": "",
805
+ "terms": "exit code meaning next action 2 input validation or confirmation inspect help and schemas 3 resource not found verify id environment 4 auth permission sign in access 5 conflict context mismatch read current organization app 6 rate limit retry after 7 network uncertain result back before deciding whether is safe 8 server response schema dashboard api changes 1 unexpected error stop investigate",
806
+ "path": "/cli-sections/5351971e14edb447f777429f.md",
807
+ "sha256": "1d56c3dd58295440b5956ecdd498e1c3343861a5cb39d2d673c15e3a12a0c932",
808
+ "bytes": 604
809
+ },
810
+ {
811
+ "id": "guide/development#intro",
812
+ "title": "Development and verification",
813
+ "description": "Build the CLI and documentation from source.",
814
+ "source": "site/guides.ts",
815
+ "url": "/development.html",
816
+ "excerpt": "Development and verification The CLI and docs share command definitions and build independently.",
817
+ "intents": "",
818
+ "terms": "development and verification cli docs share command definitions build independently",
819
+ "path": "/cli-sections/d1025d4412e87fa55f9521ed.md",
820
+ "sha256": "6065adbd10f3aed90d1b3dc89a2dbea669fcbb330519edaafb584054825f7cb9",
821
+ "bytes": 130
822
+ },
823
+ {
824
+ "id": "guide/development#docs",
825
+ "title": "Development and verification · Run the docs",
826
+ "description": "Build the CLI and documentation from source.",
827
+ "source": "site/guides.ts",
828
+ "url": "/development.html#docs",
829
+ "excerpt": "```text\nnpm run docs\n```\n\nBuild the site, start a local server, and open the default browser. Keep the terminal open; stop with `Ctrl+C`. The server listens only on `127.0.0.1`.\n\n```text\nnpm run docs:build\nnpm run docs:serve\nnpm run docs --",
830
+ "intents": "",
831
+ "terms": "text npm run docs build site start local server and open default browser keep terminal stop with ctrl c listens only on 127 0 1 serve no port 4174 output goes documentation source built pages are outside package these commands from repository checkout",
832
+ "path": "/cli-sections/2d57a3c1ac09d5f7e3dd37eb.md",
833
+ "sha256": "e62702ab81679710b8a1bc88c3124f83f5f4ec1cbed2fe658b7cad3a36528551",
834
+ "bytes": 459
835
+ },
836
+ {
837
+ "id": "guide/development#checks",
838
+ "title": "Development and verification · Validate the CLI",
839
+ "description": "Build the CLI and documentation from source.",
840
+ "source": "site/guides.ts",
841
+ "url": "/development.html#checks",
842
+ "excerpt": "```text\nnpm run typecheck\nnpm test\nnpm run build\nnpm run check:package\nnpm run audit\n```\n\nAudit checks the Dashboard checkout at `SENDBIRD_DASHBOARD_PATH`, default `../sbdashboard`. Review changes before updating the recorded source with `n",
843
+ "intents": "",
844
+ "terms": "text npm run typecheck test build check package audit checks dashboard checkout at sendbird path default sbdashboard review changes before updating recorded source with generate",
845
+ "path": "/cli-sections/547104c750d68b62e7684cf3.md",
846
+ "sha256": "deaa90320f448061c43dab64a635d8fdb85bff0af7699aeab805d33dc3cbb86f",
847
+ "bytes": 310
848
+ },
849
+ {
850
+ "id": "guide/development#live",
851
+ "title": "Development and verification · Staging verification",
852
+ "description": "Build the CLI and documentation from source.",
853
+ "source": "site/guides.ts",
854
+ "url": "/development.html#live",
855
+ "excerpt": "```text\nSENDBIRD_STAGING_SMOKE=1 \\\nSENDBIRD_STAGING_PROFILE=staging \\\nSENDBIRD_STAGING_ORG_ID=ORG_UID \\\nSENDBIRD_STAGING_APP_ID=APP_ID \\\nnpm run smoke:staging\n```\n\nUse a dedicated test account and app. Cleanup targets only users/channels cr",
856
+ "intents": "",
857
+ "terms": "text sendbird staging smoke 1 profile org id uid app npm run use dedicated test account and cleanup targets only user channel created by script existing billing support tickets remain unchanged separate live agent evaluations from local mock results",
858
+ "path": "/cli-sections/84244732f40bbef8d3c5ee35.md",
859
+ "sha256": "aedb876374f9aa1c6633e48a3655b031e57fc4a4f93074d9e499b837626336de",
860
+ "bytes": 445
861
+ },
862
+ {
863
+ "id": "guide/calls-settings#intro",
864
+ "title": "Calls settings",
865
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
866
+ "source": "site/guides.ts",
867
+ "url": "/calls-settings.html",
868
+ "excerpt": "Calls settings Use an authorized test app and settings view/all permissions. Existing-app activation requires organization.applications.all. Actual calls, rooms, call logs, and paid credit purchases are outside this scope.",
869
+ "intents": "",
870
+ "terms": "calls settings use authorized test app and view all permissions existing activation requires organization applications actual rooms call logs paid credit purchases are outside this scope",
871
+ "path": "/cli-sections/53d4dee9cb8d4f36bcdd290f.md",
872
+ "sha256": "41cad53ecadae6fcd43eb78c3cc64017c0d730dde5082b123a16bffbf638794a",
873
+ "bytes": 242
874
+ },
875
+ {
876
+ "id": "guide/calls-settings#activate",
877
+ "title": "Calls settings · Activate Calls on an existing app",
878
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
879
+ "source": "site/guides.ts",
880
+ "url": "/calls-settings.html#activate",
881
+ "excerpt": "```text\nsendbird --profile staging --app-id APP_ID calls settings push get\nsendbird --profile staging --org-id ORG_UID --app-id APP_ID calls activate --dry-run\nsendbird --profile staging --org-id ORG_UID --app-id APP_ID calls activate --yes",
882
+ "intents": "",
883
+ "terms": "text sendbird profile staging app id calls settings push get org uid activate dry run yes registration uses s current region without moving it is read at execution proves no eligibility gate enforces organization access already confirmed activation skips readback matches verifies only flag not or credit validity mismatch unavailable states before recovery never repeat automatically eligible interactive runs offer separate default trial prompt alone authorizes claim",
884
+ "path": "/cli-sections/d2032d1b7bd4cf0ce73317bd.md",
885
+ "sha256": "3f6ad3ebc7fd56d1d65785ad586feaffb37afcb0d4ac5f720932db6b226b8980",
886
+ "bytes": 869
887
+ },
888
+ {
889
+ "id": "guide/calls-settings#credits",
890
+ "title": "Calls settings · Calls credits and free trial",
891
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
892
+ "source": "site/guides.ts",
893
+ "url": "/calls-settings.html#credits",
894
+ "excerpt": "```text\nsendbird --profile staging --org-id ORG_UID calls credits list\nsendbird --profile staging --org-id ORG_UID calls credits claim-trial --dry-run\nsendbird --profile staging --org-id ORG_UID calls credits claim-trial --yes\nsendbird --pr",
895
+ "intents": "",
896
+ "terms": "text sendbird profile staging org id uid calls credits list claim trial dry run yes activation and claims are independent even when chained without terminals display environment organization default no prompt json raw noninteractive require previews prompting already active apps can explicitly request their s this is existing voucher contract not replacement for unified owner self service history including expired depleted vouchers developer plans excluded duration may follow remaining chat inspect returned expires at terms server defined paid purchase auto",
897
+ "path": "/cli-sections/c8cd8f9a73eceacf0551b932.md",
898
+ "sha256": "fa2ae0e421f818d748efb24091076a99eaaee52c895a30a61da3a716f8c69fed",
899
+ "bytes": 1590
900
+ },
901
+ {
902
+ "id": "guide/calls-settings#trial-followup",
903
+ "title": "Calls settings · Chain app creation or activation with a trial",
904
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
905
+ "source": "site/guides.ts",
906
+ "url": "/calls-settings.html#trial-followup",
907
+ "excerpt": "```text\n# New app\nsendbird --profile staging --org-id ORG_UID app create --app-name 'Calls demo' --region REGION --is-calls-enabled true --claim-trial --yes\n\n# Existing app\nsendbird --profile staging --org-id ORG_UID --app-id APP_ID calls a",
908
+ "intents": "",
909
+ "terms": "text new app sendbird profile staging org id uid create name calls demo region is enabled true claim trial yes existing activate two examples are alternatives for and apps explicitly authorizes one organizational without it eligible interactive terminals ask separately json raw noninteractive never implicitly no skips offer request dry run previews both stages requests result status distinguishes accepted skipped eligibility activation declined canceled failed checks history claims regardless of expiry depletion successful creation preserves its success exit code if",
910
+ "path": "/cli-sections/977eb6fc8dfc5ba18ae591fa.md",
911
+ "sha256": "79bdd04c7ed63ad19e6e9c6c7389323a1c5f875ba2b91d0aecfd23e4f4870383",
912
+ "bytes": 1159
913
+ },
914
+ {
915
+ "id": "guide/calls-settings#create-app",
916
+ "title": "Calls settings · Create a Calls-enabled app",
917
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
918
+ "source": "site/guides.ts",
919
+ "url": "/calls-settings.html#create-app",
920
+ "excerpt": "```text\nsendbird --profile staging --org-id ORG_UID app create --app-name 'Calls test' --region preprod --is-calls-enabled true --is-delight-region false --dry-run\nsendbird --profile staging --org-id ORG_UID app create --app-name 'Calls tes",
921
+ "intents": "",
922
+ "terms": "text sendbird profile staging org id uid app create name calls test region preprod is enabled true delight false dry run yes confirm organization permits standard creation and registration are requested together but alone does not prove read push status general settings using returned after activation verification eligible terminals offer trial claim grants advance consent no skips it paid credits purchased",
923
+ "path": "/cli-sections/68a273b42dbc3be2bd7b78b3.md",
924
+ "sha256": "05f8d8585bfe76a0f1a62bd84672a23a7557b6f6ca31e65bd3ada7816397c134",
925
+ "bytes": 761
926
+ },
927
+ {
928
+ "id": "guide/calls-settings#inspect",
929
+ "title": "Calls settings · Inspect settings",
930
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
931
+ "source": "site/guides.ts",
932
+ "url": "/calls-settings.html#inspect",
933
+ "excerpt": "```text\nsendbird --profile staging --app-id APP_ID calls settings general get\nsendbird --profile staging --app-id APP_ID calls settings webhook get\nsendbird --profile staging --app-id APP_ID calls settings chat-integration get\n```\n\nWebhook ",
934
+ "intents": "",
935
+ "terms": "text sendbird profile staging app id calls settings general get webhook chat integration urls are masked in default json and raw output supply updates through private body file or stdin never url argument secret bearing logs",
936
+ "path": "/cli-sections/c05d10b2c902af1b3e8b2227.md",
937
+ "sha256": "c45eee83d28500e4f9d3d4bcf5e3ed5014800696c5f3c738c93f773aab3af863",
938
+ "bytes": 433
939
+ },
940
+ {
941
+ "id": "guide/calls-settings#relay",
942
+ "title": "Calls settings · Choose direct-call relay",
943
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
944
+ "source": "site/guides.ts",
945
+ "url": "/calls-settings.html#relay",
946
+ "excerpt": "`stun&turn` tries direct P2P first, uses STUN for NAT discovery, and falls back to TURN relay. `turn` uses TURN relay only. Choose according to connection policy. Direct-call cloud recording blocks relay changes, matching Dashboard.\n\n```tex",
947
+ "intents": "",
948
+ "terms": "stun turn tries direct p2p first uses for nat discovery and falls back relay only choose according connection policy call cloud recording blocks changes matching dashboard text sendbird profile staging app id calls settings general get set method dry run",
949
+ "path": "/cli-sections/f6b15440fc6dc0f87378f6a9.md",
950
+ "sha256": "fb8c2311fb07f818e3026285290ce66497a03e4263d2067b1c4c4afe4358e84e",
951
+ "bytes": 469
952
+ },
953
+ {
954
+ "id": "guide/calls-settings#change",
955
+ "title": "Calls settings · Change settings and read back",
956
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
957
+ "source": "site/guides.ts",
958
+ "url": "/calls-settings.html#change",
959
+ "excerpt": "```text\nsendbird --profile staging --app-id APP_ID calls settings general set --group-call-cloud-recording-enabled false --dry-run\nsendbird --profile staging --app-id APP_ID calls settings general set --group-call-cloud-recording-enabled fa",
960
+ "intents": "",
961
+ "terms": "text sendbird profile staging app id calls settings general set group call cloud recording enabled false dry run yes get read before and after change blocks relay changes all mutations require responses are accepted readback compares observed values failures remain unavailable never repeat write affects privacy costs so inspect current first",
962
+ "path": "/cli-sections/872b44f85d7ecad7c9b48e35.md",
963
+ "sha256": "fc1543a101d8554796b48fb71f51a84e00e0d2d249502059f8db08725a91a9f6",
964
+ "bytes": 661
965
+ },
966
+ {
967
+ "id": "guide/calls-settings#webhook",
968
+ "title": "Calls settings · Webhooks and Chat integration",
969
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
970
+ "source": "site/guides.ts",
971
+ "url": "/calls-settings.html#webhook",
972
+ "excerpt": "```text\nsendbird --profile staging --app-id APP_ID calls settings webhook set --body-file PRIVATE_WEBHOOK_BODY.json --dry-run\nsendbird --profile staging --app-id APP_ID calls settings webhook set --body-file PRIVATE_WEBHOOK_BODY.json --yes\n",
973
+ "intents": "",
974
+ "terms": "text sendbird profile staging app id calls settings webhook set body file private json dry run yes chat integration enabled false events webhooks cover direct call dial accept end and room lifecycle participation invitation read all categories for supported values supports verified with true both other combinations may be rejected empty arrays are sent unchanged reset recording timezone general timestamp string means server default displays as",
975
+ "path": "/cli-sections/a6fce61a1e1c3ec8d6c5641a.md",
976
+ "sha256": "d1d56a95ebcbae6e38509cd73f5c291f2b5be8edf1678ebd639974844a18eec6",
977
+ "bytes": 929
978
+ },
979
+ {
980
+ "id": "guide/calls-settings#push",
981
+ "title": "Calls settings · VoIP Push credentials",
982
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
983
+ "source": "site/guides.ts",
984
+ "url": "/calls-settings.html#push",
985
+ "excerpt": "```text\nsendbird --profile staging --app-id APP_ID calls settings push get\nsendbird --profile staging --app-id APP_ID calls push list --push-type apns_voip\nsendbird --profile staging --app-id APP_ID calls push create --push-type apns_voip -",
986
+ "intents": "",
987
+ "terms": "text sendbird profile staging app id calls settings push get list type apns voip create format p8 environment development key team bundle com example credential file private dry run fcm service account json yes delete configuration providers are remote and huawei p12 use multipart not copied into cli same metadata updates may reuse certificate changes require new free inspect up 10 pages for actual missing evidence requires read then write is atomic each has its own deadline pass passwords creation",
988
+ "path": "/cli-sections/67e049cc0e8dfe65d87e7d6b.md",
989
+ "sha256": "b3ad8a9fd8bc3abf6bec220a25bb52008ed4d02274b8dc4753e6e65641c32cd2",
990
+ "bytes": 1806
991
+ },
992
+ {
993
+ "id": "guide/calls-settings#limits",
994
+ "title": "Calls settings · Verification limits",
995
+ "description": "Manage General, Webhook, Chat integration, and VoIP Push without placing calls.",
996
+ "source": "site/guides.ts",
997
+ "url": "/calls-settings.html#limits",
998
+ "excerpt": "Dry-run proves no permissions or entitlement. The server decides access and activation. Regional unavailability becomes E_CAPABILITY. Obtain authorization before selecting another app; never switch regions, start trials, or buy credits to b",
999
+ "intents": "",
1000
+ "terms": "dry run proves no permissions or entitlement server decides access and activation regional unavailability becomes e capability obtain authorization before selecting another app never switch regions start trials buy credits bypass denial timeout is uncertain first read settings lists live changes mobile push delivery require separate verification evidence",
1001
+ "path": "/cli-sections/b7a2842a8a70c68b3be9f399.md",
1002
+ "sha256": "3abd9acc0e5b949564aa5e213ffcecb8e9839dcab98885a105d8c84130db5340",
1003
+ "bytes": 431
1004
+ },
1005
+ {
1006
+ "id": "guide/billing#intro",
1007
+ "title": "Prepare a Chat plan change",
1008
+ "description": "Inspect billing channels and plans, change in Dashboard, then read back.",
1009
+ "source": "site/guides.ts",
1010
+ "url": "/billing.html",
1011
+ "excerpt": "Prepare a Chat plan change\nIdentify the organization and plan in the CLI, then review final price and effective date in Dashboard. The CLI does not submit subscription changes.",
1012
+ "intents": "",
1013
+ "terms": "prepare chat plan change identify organization and in cli then review final price effective date dashboard does not submit subscription changes",
1014
+ "path": "/cli-sections/512a4072a88ceb8f429ee4fb.md",
1015
+ "sha256": "518088f7f708cbe7f827cc54746da46faf418a42f64576ec0ad69bf74871f733",
1016
+ "bytes": 207
1017
+ },
1018
+ {
1019
+ "id": "guide/billing#check",
1020
+ "title": "Prepare a Chat plan change · Check organization and eligibility",
1021
+ "description": "Inspect billing channels and plans, change in Dashboard, then read back.",
1022
+ "source": "site/guides.ts",
1023
+ "url": "/billing.html#check",
1024
+ "excerpt": "```text\nsendbird --profile staging --org-id ORG_UID billing plan current\nsendbird --profile staging --org-id ORG_UID billing plan list\nsendbird --profile staging --org-id ORG_UID billing plan check --plan plan_a_5k\n```\n\nCheck performs GETs ",
1025
+ "intents": "",
1026
+ "terms": "text sendbird profile staging org id uid billing plan current list check 5k performs gets for organization permissions scheduled subscriptions catalog sales channel and required card presence data is neither shown nor stored candidates are not eligibility or binding quotes dry run previews input without requests",
1027
+ "path": "/cli-sections/631e5e1dd7f97e284821ff09.md",
1028
+ "sha256": "af077d5e824e13665734b666101bd5ebe92ada54f67b0a9000dbf10114a1362f",
1029
+ "bytes": 564
1030
+ },
1031
+ {
1032
+ "id": "guide/billing#handoff",
1033
+ "title": "Prepare a Chat plan change · Complete the change in Dashboard",
1034
+ "description": "Inspect billing channels and plans, change in Dashboard, then read back.",
1035
+ "source": "site/guides.ts",
1036
+ "url": "/billing.html#handoff",
1037
+ "excerpt": "```text\nsendbird --profile staging --org-id ORG_UID billing plan change --plan plan_a_5k --confirm-org-name 'YOUR_ORGANIZATION_NAME' --yes\n```\n\nRequire exact organization-name confirmation and organization.general.all. Open the returned URL",
1038
+ "intents": "",
1039
+ "terms": "text sendbird profile staging org id uid billing plan change 5k confirm name your organization yes require exact confirmation and general all open returned url verify same then review price timing browser is not opened automatically without final quote contract cli sends no post effective at remain null mutation sent completed false situation handling sales aws dashboard inquiry path shopify external channel through card managed existing schedule legacy status in support products or enterprise candidates infer chat purchase eligibility",
1040
+ "path": "/cli-sections/a891e3d810d1cee772dd24a4.md",
1041
+ "sha256": "f90efb66a46ec564c34028dc480957ec8b9748d3ee01cc2940044a261717023c",
1042
+ "bytes": 866
1043
+ },
1044
+ {
1045
+ "id": "guide/billing#verify",
1046
+ "title": "Prepare a Chat plan change · Read current or scheduled status",
1047
+ "description": "Inspect billing channels and plans, change in Dashboard, then read back.",
1048
+ "source": "site/guides.ts",
1049
+ "url": "/billing.html#verify",
1050
+ "excerpt": "```text\nsendbird --profile staging --org-id ORG_UID billing plan verify --plan plan_a_5k\n```\n\nCurrent means the requested plan is active; scheduled means it is pending; not_reflected means no matching subscription was observed. This proves ",
1051
+ "intents": "",
1052
+ "terms": "text sendbird profile staging org id uid billing plan verify 5k current means requested is active scheduled it pending not reflected no matching subscription was observed this proves state that cli changed never repeat payments after failure inspect dashboard paid changes require explicit customer authorization",
1053
+ "path": "/cli-sections/d58a3b1deaa053e46e8d5bcd.md",
1054
+ "sha256": "7680d06e2d60bcbd6856f9fe259da03de3a8bef7cf22740180d4ac642190fa89",
1055
+ "bytes": 483
1056
+ },
1057
+ {
1058
+ "id": "guide/agent-setup#intro",
1059
+ "title": "Agent installation and first task",
1060
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1061
+ "source": "site/guides.ts",
1062
+ "url": "/agent-setup.html",
1063
+ "excerpt": "Agent installation and first task Inspect and reuse existing CLI/sign-in first. The alpha uses staging OAuth. npm publication and public host-directory listing are separate. Prompts below use an accessible repository or supplied local alph",
1064
+ "intents": "",
1065
+ "terms": "agent installation and first task inspect reuse existing cli sign in alpha uses staging oauth npm publication public host directory listing are separate prompts below use accessible repository or supplied local",
1066
+ "path": "/cli-sections/badb63e537931faa605190fb.md",
1067
+ "sha256": "f19c94e0671868ccf17c26a8b21f8019566132111fc709f047a6ea65f3729f23",
1068
+ "bytes": 280
1069
+ },
1070
+ {
1071
+ "id": "guide/agent-setup#claude",
1072
+ "title": "Agent installation and first task · Paste into Claude Code",
1073
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1074
+ "source": "site/guides.ts",
1075
+ "url": "/agent-setup.html#claude",
1076
+ "excerpt": "```text\nHelp me connect this coding agent to Sendbird and verify account/app read access. Ask whether to save defaults and offer optional Chat practice; do not create test resources just to finish setup.\n\n1. Inspect the existing Sendbird pl",
1077
+ "intents": "",
1078
+ "terms": "text help me connect this coding agent sendbird and verify account app read access ask whether save defaults offer optional chat practice not create test resources just finish setup 1 inspect existing plugin skills actual cli executable node version reuse working installation if is absent use host commands below with repository catalog can or provided local alpha marketplace its absolute directory never claim unpublished npm be installed start fresh session needs it then invoke packaged skill 2 missing lacks required",
1079
+ "path": "/cli-sections/1e8f50f38646f0326bab53e5.md",
1080
+ "sha256": "07a5cfdee4d4fb1f76c3a64337f9ced8f25911c9e896962b4771ab0269a26549",
1081
+ "bytes": 3583
1082
+ },
1083
+ {
1084
+ "id": "guide/agent-setup#codex",
1085
+ "title": "Agent installation and first task · Paste into Codex",
1086
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1087
+ "source": "site/guides.ts",
1088
+ "url": "/agent-setup.html#codex",
1089
+ "excerpt": "```text\nHelp me connect this coding agent to Sendbird and verify account/app read access. Ask whether to save defaults and offer optional Chat practice; do not create test resources just to finish setup.\n\n1. Inspect the existing Sendbird pl",
1090
+ "intents": "",
1091
+ "terms": "text help me connect this coding agent sendbird and verify account app read access ask whether save defaults offer optional chat practice not create test resources just finish setup 1 inspect existing plugin skills actual cli executable node version reuse working installation if is absent use host commands below with repository catalog can or provided local alpha marketplace its absolute directory never claim unpublished npm be installed start fresh session needs it then invoke packaged skill 2 missing lacks required",
1092
+ "path": "/cli-sections/c7c412e84bc0305b4b21adc1.md",
1093
+ "sha256": "400ff324e1a610c6d24a579e1950639c443a1a50a4b72fa2c73b9e3ebe0f778a",
1094
+ "bytes": 3575
1095
+ },
1096
+ {
1097
+ "id": "guide/agent-setup#alpha",
1098
+ "title": "Agent installation and first task · Install the current alpha",
1099
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1100
+ "source": "site/guides.ts",
1101
+ "url": "/agent-setup.html#alpha",
1102
+ "excerpt": "Run `npm run plugins:build -- /ABSOLUTE/NEW_OUTPUT` from a source checkout for a marketplace with CLI archive/checksum. Add its absolute directory in the host and install sendbird-cli@sendbird-cli-local. Its distinct name can coexist with t",
1103
+ "intents": "",
1104
+ "terms": "run npm plugins build absolute new output from source checkout for marketplace with cli archive checksum add its directory in host and install sendbird local distinct name can coexist shared use packaged mjs binary existing global executables are not overwritten automatically verified path github distribution requires repository access",
1105
+ "path": "/cli-sections/c56ba340199510160ca8713b.md",
1106
+ "sha256": "f8f7ad91821542083a58134d2fe72b333698b63772e8a55fa331cd028feefda1",
1107
+ "bytes": 521
1108
+ },
1109
+ {
1110
+ "id": "guide/agent-setup#approval",
1111
+ "title": "Agent installation and first task · Human steps",
1112
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1113
+ "source": "site/guides.ts",
1114
+ "url": "/agent-setup.html#approval",
1115
+ "excerpt": "After browser OAuth and exact target selection, ask whether to save profile defaults. Saving context and activating a profile are separate choices. Chat practice is optional; setup alone creates no users/channels/messages. Reuse prior autho",
1116
+ "intents": "",
1117
+ "terms": "after browser oauth and exact target selection ask whether save profile defaults saving context activating are separate choices chat practice is optional setup alone creates no user channel message reuse prior authorization rather than asking again keep passwords cookies codes out of report installation auth actual results customer app completion separately denials login waits remain pending",
1118
+ "path": "/cli-sections/02cf96303c4c9e1028153d5e.md",
1119
+ "sha256": "3457ecca979821c2c93bedcb6db887300d46eea8703b9741a1d82c7d2586353a",
1120
+ "bytes": 513
1121
+ },
1122
+ {
1123
+ "id": "guide/agent-setup#handoff",
1124
+ "title": "Agent installation and first task · Customer-app handoff",
1125
+ "description": "Install with Claude Code/Codex, approve browser sign-in, select an existing app, and verify access.",
1126
+ "source": "site/guides.ts",
1127
+ "url": "/agent-setup.html#handoff",
1128
+ "excerpt": "The CLI prepares account/resources. Offer official plugin information, explicitly authorized temporary ZIP execution, or no client assistance. Preserve a prior guide-only choice in the current conversation without activating hooks/tools or ",
1129
+ "intents": "",
1130
+ "terms": "cli prepares account resources offer official plugin information explicitly authorized temporary zip execution or no client assistance preserve prior guide only choice in current conversation without activating hooks tools another model wait for and never auto switch after failure keep host settings unchanged unless build actual ui verification are separate outcomes",
1131
+ "path": "/cli-sections/ad6bb013c7d2ef67bada9105.md",
1132
+ "sha256": "5c97f7dff6ef86eb1084fdc0df3909cd83c20eef1a85dfa2a924e3a454f186e0",
1133
+ "bytes": 475
1134
+ },
1135
+ {
1136
+ "id": "guide/recover-uncertain-change#intro",
1137
+ "title": "Recover an uncertain change",
1138
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1139
+ "source": "site/guides.ts",
1140
+ "url": "/recover-uncertain-change.html",
1141
+ "excerpt": "Recover an uncertain change An error may follow a server-side change. Do not immediately repeat the command; read state in the original target.",
1142
+ "intents": "uncertain mutation recovery timeout lost response duplicate retry",
1143
+ "terms": "recover uncertain change error may follow server side not immediately repeat command read state in original target",
1144
+ "path": "/cli-sections/eaffe95051d79772728d8044.md",
1145
+ "sha256": "744f08c9d605867326be11db128601a4f6cda73ae45a01eb7e044adad79e2256",
1146
+ "bytes": 176
1147
+ },
1148
+ {
1149
+ "id": "guide/recover-uncertain-change#state",
1150
+ "title": "Recover an uncertain change · Identify the mutation stage",
1151
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1152
+ "source": "site/guides.ts",
1153
+ "url": "/recover-uncertain-change.html#state",
1154
+ "excerpt": "mutation_state | Meaning | Next action |\n\nnot_attempted | Stopped during validation/authentication/prerequisite reads | Resolve the cause before considering a new execution |\n\nrejected | Server rejected the mutation | Check permission",
1155
+ "intents": "",
1156
+ "terms": "mutation state meaning next action not attempted stopped during validation auth prerequisite reads resolve cause before considering new execution rejected server check permissions inputs or rate limits no automatic retry unknown change may have reached without reliable response use recovery for original target acknowledged processing failed after read back rather than resending failures sdk worker startup conservatively remain when progress cannot be separated status and outcome true establish neither success nor failure",
1157
+ "path": "/cli-sections/769d562eaa59ef763935a70b.md",
1158
+ "sha256": "e1fb6e4d148308d1d109a36edec55e99c7eefb9dc7c783c8621e7de349863bf4",
1159
+ "bytes": 763
1160
+ },
1161
+ {
1162
+ "id": "guide/recover-uncertain-change#read",
1163
+ "title": "Recover an uncertain change · Read the original target",
1164
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1165
+ "source": "site/guides.ts",
1166
+ "url": "/recover-uncertain-change.html#read",
1167
+ "excerpt": "JSON recovery.target records the original profile, environment, organization, app, and actor. Verify the profile still targets that environment, then execute recovery.reads argv. Lists require bounded limits and pagination. The recovery des",
1168
+ "intents": "",
1169
+ "terms": "json recovery target records original profile environment organization app and actor verify still targets that then execute reads argv lists require bounded limits pagination description itself performs no request or mutation text sendbird staging id chat user get message list type group channel url as limit 100 calls settings general replace example ids prefer read commands from actual error reapply private token file host options when originally used guest access is not substitute",
1170
+ "path": "/cli-sections/07f419b748a6828e4c6a0759.md",
1171
+ "sha256": "3a0e8c44ccac9d0fa8d7da765f5527fc70daa05cb074ea611cd0f70c110748ae",
1172
+ "bytes": 817
1173
+ },
1174
+ {
1175
+ "id": "guide/recover-uncertain-change#decide",
1176
+ "title": "Recover an uncertain change · Interpret readback",
1177
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1178
+ "source": "site/guides.ts",
1179
+ "url": "/recover-uncertain-change.html#decide",
1180
+ "excerpt": "Observation | Conclusion |\n\nMatches the requested state | The current state matches; do not repeat the change. This does not prove this request caused it. |\n\nAbsent from message/app/channel list | Pagination, filters, lag, or read access",
1181
+ "intents": "",
1182
+ "terms": "observation conclusion matches requested state current not repeat change this does prove request caused it absent from message app channel list pagination filters lag or read access may hide absence alone authorize retry exact id deletion followed by e found with original target and verified can be concluded different partly applied value inspect concurrency server constraints automatically rerun compensate 401 403 failure outcome remains unverified never downgrade permissions switch accounts infer success",
1183
+ "path": "/cli-sections/ba05f9bbf78e6f66478c0514.md",
1184
+ "sha256": "2c22f14c05b656c8063b22a57f3db51f88c524b13abb418c800cdf015e9f9f33",
1185
+ "bytes": 747
1186
+ },
1187
+ {
1188
+ "id": "guide/recover-uncertain-change#boundaries",
1189
+ "title": "Recover an uncertain change · Operations without automatic confirmation",
1190
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1191
+ "source": "site/guides.ts",
1192
+ "url": "/recover-uncertain-change.html#boundaries",
1193
+ "excerpt": "Messages/app creation with lost unique IDs cannot be identified reliably by matching name/body. Counters need baseline and concurrency evidence. Masked token/Push-secret rotations cannot be verified from redacted values. Support tickets nee",
1194
+ "intents": "",
1195
+ "terms": "message app creation with lost unique ids cannot be identified reliably by matching name body counters need baseline and concurrency evidence masked token push secret rotations verified from redacted values support tickets external system confirmation cli provides no duplicate suppression or exactly once guarantee",
1196
+ "path": "/cli-sections/61277ab8eb8d877864176a43.md",
1197
+ "sha256": "0e0739df224399ca98a69e5a9258683b23e5a81c6f8d4c8f8805de9a128feff9",
1198
+ "bytes": 417
1199
+ },
1200
+ {
1201
+ "id": "guide/recover-uncertain-change#calls",
1202
+ "title": "Recover an uncertain change · Calls write accepted but readback failed",
1203
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1204
+ "source": "site/guides.ts",
1205
+ "url": "/recover-uncertain-change.html#calls",
1206
+ "excerpt": "An automatic readback failure leaves result.readback.status unavailable while the write remains accepted. Follow readback.next; never repeat set/create/delete. Absence from the first Push list page does not prove deletion.",
1207
+ "intents": "",
1208
+ "terms": "automatic readback failure leaves result status unavailable while write remains accepted follow next never repeat set create delete absence from first push list page does not prove deletion",
1209
+ "path": "/cli-sections/af9fc6487f37b83885c236d2.md",
1210
+ "sha256": "6d796a6a138a56efadccd716d4f13d5a6d4dcaf5d0541bc647f90ffe8164d08c",
1211
+ "bytes": 298
1212
+ },
1213
+ {
1214
+ "id": "guide/recover-uncertain-change#privacy",
1215
+ "title": "Recover an uncertain change · Secrets and records",
1216
+ "description": "Avoid duplicate mutations after timeout, lost responses, or readback failures.",
1217
+ "source": "site/guides.ts",
1218
+ "url": "/recover-uncertain-change.html#privacy",
1219
+ "excerpt": "Recovery hints store no bodies, tokens, passwords, or private paths. They include changed field names only, so compare original values privately. There is no automatic retry, compensation, fresh token issuance, or recovery journal.",
1220
+ "intents": "",
1221
+ "terms": "recovery hints store no bodies token passwords or private paths they include changed field names only so compare original values privately there is automatic retry compensation fresh issuance journal",
1222
+ "path": "/cli-sections/70fc9a71c573a752a3634091.md",
1223
+ "sha256": "43bdebeb2dd68056586793551bd309ec1b951114361583a6fa7d6677fcc00dee",
1224
+ "bytes": 286
1225
+ },
1226
+ {
1227
+ "id": "guide/pro-features#intro",
1228
+ "title": "Pro features and verification",
1229
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1230
+ "source": "site/pro-guide.ts",
1231
+ "url": "/pro-features.html",
1232
+ "excerpt": "Pro features and verification Subscription inclusion, app activation, and successful execution are separate facts. Verify the target and prerequisites first. Examples use only authorized staging test resources.",
1233
+ "intents": "",
1234
+ "terms": "pro features and verification subscription inclusion app activation successful execution are separate facts verify target prerequisites first examples use only authorized staging test resources",
1235
+ "path": "/cli-sections/47cfae53d29813459ca7bcff.md",
1236
+ "sha256": "7b6453d93b7706c406c2b442dd3824b1b470714a262cf1d9335e26f19344c703",
1237
+ "bytes": 245
1238
+ },
1239
+ {
1240
+ "id": "guide/pro-features#context",
1241
+ "title": "Pro features and verification · Target and permissions",
1242
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1243
+ "source": "site/pro-guide.ts",
1244
+ "url": "/pro-features.html#context",
1245
+ "excerpt": "```text\nsendbird --profile staging profile list\nsendbird --profile staging app get\nsendbird --profile staging doctor --command 'chat message search' --as-user alice\nsendbird --profile staging app feature list\n```\n\nSDK commands use the actor",
1246
+ "intents": "",
1247
+ "terms": "text sendbird profile staging list app get doctor command chat message search as user alice feature sdk commands use actor bound by dashboard operations oauth account s organization role automatic token also require gate read permission false snapshot may differ from observed runtime behavior compare evidence rather than repeatedly reactivating",
1248
+ "path": "/cli-sections/c2fc01ecc76261e4678dfe92.md",
1249
+ "sha256": "d3d5a620cbef2b0d164e185974b6dfa96c294e185ebef1415e3e4a2ac54e1ccb",
1250
+ "bytes": 573
1251
+ },
1252
+ {
1253
+ "id": "guide/pro-features#search",
1254
+ "title": "Pro features and verification · Search messages, users, and channels",
1255
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1256
+ "source": "site/pro-guide.ts",
1257
+ "url": "/pro-features.html#search",
1258
+ "excerpt": "```text\nsendbird --profile staging chat message search --as-user alice --keyword 'weekend' --channel-url hobby_room --limit 20\nsendbird --profile staging chat sdk user search --as-user alice --nickname-prefix Bob --limit 20\nsendbird --profi",
1259
+ "intents": "",
1260
+ "terms": "text sendbird profile staging chat message search as user alice keyword weekend channel url hobby room limit 20 sdk nickname prefix bob name contains type group moderation start timestamp 1790812800000 end 1790899200000 returns only indexed visible connected actor indexing lag or access may hide recent from are unix milliseconds order is score ts each page request replays earlier pages in new process public does not every private dashboard separately requires messagesearch view mix its last with next",
1261
+ "path": "/cli-sections/b138b047242a124b5c124f4b.md",
1262
+ "sha256": "00eccb1a5b18d971f737b597ca3b794bb97683fee1b61ee89fce45310b0d4496",
1263
+ "bytes": 1001
1264
+ },
1265
+ {
1266
+ "id": "guide/pro-features#messages",
1267
+ "title": "Pro features and verification · Mentions, translation, meta arrays, thumbnails",
1268
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1269
+ "source": "site/pro-guide.ts",
1270
+ "url": "/pro-features.html#messages",
1271
+ "excerpt": "```text\nsendbird --profile staging chat message send --type group --id hobby_room --as-user alice --message 'Bob, see you this weekend' --mention-type users --mentioned-user-ids 'bob' --translation-target-languages 'fr,en'\nsendbird --profil",
1272
+ "intents": "",
1273
+ "terms": "text sendbird profile staging chat message send type group id hobby room as user alice bob see you this weekend mention mentioned ids translation target languages fr en announcement for everyone channel meta keys create tags values add arrays key value get file test image png mime thumbnail sizes width 160 height replace with actual response existing fields remain intact inspect and independently verify recipient ui notifications server may exclude nonmembers never combine mentions individual lists differ from metadata delete",
1274
+ "path": "/cli-sections/6844c447e40d4947a573e537.md",
1275
+ "sha256": "94610925cc5e9b418c66c5a6411b8f54dc09bfc7cfbc6b291395364b4643bc84",
1276
+ "bytes": 1917
1277
+ },
1278
+ {
1279
+ "id": "guide/pro-features#polls",
1280
+ "title": "Pro features and verification · Poll lifecycle and cleanup",
1281
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1282
+ "source": "site/pro-guide.ts",
1283
+ "url": "/pro-features.html#polls",
1284
+ "excerpt": "```text\nsendbird --profile staging chat sdk poll create --as-user alice --title 'Weekend activity' --options 'Hiking,Movies' --allow-multiple-votes false\nsendbird --profile staging chat message send --type group --id hobby_room --as-user al",
1285
+ "intents": "",
1286
+ "terms": "text sendbird profile staging chat sdk poll create as user alice title weekend activity options hiking movies allow multiple votes false message send type group id hobby room choose one option get bob vote ids close yes delete returns unattached save and explicitly attach it in next these steps are not atomic never repeat creation after lost response use actual values from update voters list supported server enforces creator channel permissions for editing closing deleting scheduled cancel now verify timed",
1287
+ "path": "/cli-sections/c78c98b6388d6524a2f4bd6e.md",
1288
+ "sha256": "35d98e8e6cc0fa05836bec59a40a344e8bf98339c2a0b3e5b5dcea910c515cdb",
1289
+ "bytes": 1293
1290
+ },
1291
+ {
1292
+ "id": "guide/pro-features#moderation",
1293
+ "title": "Pro features and verification · Blocking, reporting, and Dashboard moderation",
1294
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1295
+ "source": "site/pro-guide.ts",
1296
+ "url": "/pro-features.html#moderation",
1297
+ "excerpt": "```text\nsendbird --profile staging chat sdk user block --as-user alice --user-id bob --yes\nsendbird --profile staging chat sdk user blocked list --as-user alice\nsendbird --profile staging chat sdk user unblock --as-user alice --user-id bob ",
1298
+ "intents": "",
1299
+ "terms": "text sendbird profile staging chat sdk user block as alice id bob yes blocked list unblock moderation channel ban type group hobby room seconds 60 description authorized test dry run banned mute freeze true blocking differs from bans dashboard uses role permissions without actor token unban unmute detail and operators add require exact duration 1 is indefinite must be intentional requires all permission rather than relying on weak read access report message submits real reports retrieval retraction not guaranteed so",
1300
+ "path": "/cli-sections/c9d197ce810ad618f2094764.md",
1301
+ "sha256": "cbd8f4090c39d87c93d28ffd5b160c8f12f783200f73e5a768e3f7414a359b9d",
1302
+ "bytes": 1323
1303
+ },
1304
+ {
1305
+ "id": "guide/pro-features#filters",
1306
+ "title": "Pro features and verification · Image/profanity filters and precedence",
1307
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1308
+ "source": "site/pro-guide.ts",
1309
+ "url": "/pro-features.html#filters",
1310
+ "excerpt": "```text\nsendbird --profile staging chat settings get\nsendbird --profile staging chat settings custom list\nsendbird --profile staging chat settings update --body-file PRIVATE_FILTER_SETTINGS.json --dry-run\nsendbird --profile staging chat mod",
1311
+ "intents": "",
1312
+ "terms": "text sendbird profile staging chat settings get custom list update body file private filter json dry run moderation keywords global type hobby separate and sends supplied fields only record original first profanity mode 0 disabled 1 replace 2 block 3 detect image normal strict soft true analyzes limits are 5 use app feature set for activation policy verify behavior restoration with authorized test material not customer content",
1313
+ "path": "/cli-sections/3d8b9db2354258a35098fa0f.md",
1314
+ "sha256": "83b48a9581ba6142c8b207c309b792d6f8750ae8a8e0ffa8751f137b83bd265e",
1315
+ "bytes": 853
1316
+ },
1317
+ {
1318
+ "id": "guide/pro-features#push",
1319
+ "title": "Pro features and verification · Chat Push, weekly DND, and translated notifications",
1320
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1321
+ "source": "site/pro-guide.ts",
1322
+ "url": "/pro-features.html#push",
1323
+ "excerpt": "```text\nsendbird --profile staging chat push enabled get\nsendbird --profile staging chat push list --push-type fcm\nsendbird --profile staging chat push create --push-type fcm --credential-file PRIVATE_SERVICE_ACCOUNT.json --dry-run\nsendbird",
1324
+ "intents": "",
1325
+ "terms": "text sendbird profile staging chat push enabled get list type fcm create credential file private service account json dry run sdk user languages set as bob en dnd timezone asia seoul schedules monday start hour 22 minute 0 end 23 59 device register provider body test send providers apns huawei differ from calls voip update delete require yes p8 p12 and files use multipart are not copied into cli config sound only changes need no new key format metadata updates",
1326
+ "path": "/cli-sections/56baf5b262e8e72e7720c127.md",
1327
+ "sha256": "b29ebe81c6cffc95a016e6705149a0663d7f80d0d1db44ac81bd30880bb058eb",
1328
+ "bytes": 2144
1329
+ },
1330
+ {
1331
+ "id": "guide/pro-features#operations",
1332
+ "title": "Pro features and verification · Announcements, analytics, and webhooks",
1333
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1334
+ "source": "site/pro-guide.ts",
1335
+ "url": "/pro-features.html#operations",
1336
+ "excerpt": "```text\nsendbird --profile staging chat announcement list --limit 20\nsendbird --profile staging chat announcement create --body-file PRIVATE_ANNOUNCEMENT.json --dry-run\nsendbird --profile staging chat announcement get --id ANNOUNCEMENT_ID\ns",
1337
+ "intents": "",
1338
+ "terms": "text sendbird profile staging chat announcement list limit 20 create body file private json dry run get id open status action stop analytics metric type message time dimension daily start year 2026 month 10 day 1 end 14 webhook categories update announcements accept 100 explicit targets never automatic all channel selection or repeated broadcasting scheduled at uses unix seconds actions are cancel pause resume legacy may be rejected send is separate from actual recipient delivery exposes nine metrics separately billing",
1339
+ "path": "/cli-sections/3dc2bf1c2e9775027dcb442f.md",
1340
+ "sha256": "84697cf76ed7015a0350d9d32c452d125736308bd67b49aae5e607199081a320",
1341
+ "bytes": 1650
1342
+ },
1343
+ {
1344
+ "id": "guide/pro-features#security",
1345
+ "title": "Pro features and verification · App deletion, IP policy, and SSO",
1346
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1347
+ "source": "site/pro-guide.ts",
1348
+ "url": "/pro-features.html#security",
1349
+ "excerpt": "App deletion needs exact --confirm-app-name, organization permission, and --yes. Recovery is not guaranteed and multiple services including Calls may be affected; do not use in ordinary practice. IP allowlist add/remove require --confirm-ap",
1350
+ "intents": "",
1351
+ "terms": "app deletion needs exact confirm name organization permission and yes recovery is not guaranteed multiple services including calls may be affected use in ordinary practice ip allowlist add remove require source reject changes excluding confirmed these flags reflect human confirmation automatic discovery of actual egress review network policy first org sso get set delete checks security permissions writes private bodies for certificates idp urls enforcement requires login tested true valid x 509 this records person s test cli reproduced jit",
1352
+ "path": "/cli-sections/c839eb6330e15721c13e1c85.md",
1353
+ "sha256": "7a14791072923ec6a28b6ae082202f556adcc8d45fd850fce7db56163659b7f3",
1354
+ "bytes": 946
1355
+ },
1356
+ {
1357
+ "id": "guide/pro-features#evidence",
1358
+ "title": "Pro features and verification · Customer apps and service terms",
1359
+ "description": "Use search, mentions, translation, Polls, moderation, Push, and settings, then verify actual behavior.",
1360
+ "source": "site/pro-guide.ts",
1361
+ "url": "/pro-features.html#evidence",
1362
+ "excerpt": "The selected native plugin or current agent implements UIKit, structured messages, offline cache/queues, throttling, and protected files, then verifies build/runtime. Reading a guide activates no hooks/capabilities. CLI workers connect/disc",
1363
+ "intents": "",
1364
+ "terms": "selected native plugin or current agent implements uikit structured message offline cache queues throttling and protected files then verifies build runtime reading guide activates no hooks capabilities cli workers connect disconnect per invocation are not persistent customer apps report reads as ui verification compare soft caps retention support packages with doctor billing plan actual contract promises unlimited rate limit response sla use trust center https sendbird com security information service status community hipaa baa csm business messaging benefits need account",
1365
+ "path": "/cli-sections/445adcb6012c46f38f96a7f8.md",
1366
+ "sha256": "00b960b612967b7cb4afcaea2d8150ec3720d39c308ffe8505083f2e277046b7",
1367
+ "bytes": 1188
1368
+ },
1369
+ {
1370
+ "id": "guide/cli-skills#intro",
1371
+ "title": "Register the CLI Skill",
1372
+ "description": "Register bundled operating instructions where Claude Code or Codex discovers Skills.",
1373
+ "source": "site/guides.ts",
1374
+ "url": "/cli-skills.html",
1375
+ "excerpt": "Register the CLI Skill Installing the CLI binary does not register its Skill with the host. Choose the host from the current project root.\n\n```text\nsendbird skills install --agent claude --scope project --dry-run\nsendbird skills install --",
1376
+ "intents": "Skill registration discovery Claude Codex",
1377
+ "terms": "register cli skill installing binary does not its with host choose from current project root text sendbird skills install agent claude scope dry run codex status json show only command for you use is default or agents under working directory user uses corresponding home reload start new session and verify availability avoid duplicates when installed plugin already supplies",
1378
+ "path": "/cli-sections/1c584c3c49ed3cd5b71ac398.md",
1379
+ "sha256": "f8e3c5d610ede76cb81f29bd928414eba0a3f2d6d7783946b080b71615a48149",
1380
+ "bytes": 744
1381
+ },
1382
+ {
1383
+ "id": "guide/cli-skills#safety",
1384
+ "title": "Register the CLI Skill · Update and remove",
1385
+ "description": "Register bundled operating instructions where Claude Code or Codex discovers Skills.",
1386
+ "source": "site/guides.ts",
1387
+ "url": "/cli-skills.html#safety",
1388
+ "excerpt": "Registration copies bundled files without network/profile/credential access. Only managed installations with matching receipts and complete file hashes can update. Modified files, extra entries, unmanaged registrations, and symlinks are pre",
1389
+ "intents": "",
1390
+ "terms": "registration copies bundled files without network profile credential access only managed installations with matching receipts and complete file hashes can update modified extra entries unmanaged registrations symlinks are preserved rather than overwritten deleted text sendbird skills remove agent claude scope project dry run yes this verifies local not host loading or automatic selection cloud environments require their own policies use show for current session separate setup onboarding skill is optional included in operating",
1391
+ "path": "/cli-sections/42db84aa07f6f145d91830d1.md",
1392
+ "sha256": "a6c7990f4b7cfbcaf5abf44e055dceac6956941532ca83430ace13991e144044",
1393
+ "bytes": 751
1394
+ },
1395
+ {
1396
+ "id": "guide/cli-skills#client",
1397
+ "title": "Register the CLI Skill · Customer-app assistance",
1398
+ "description": "Register bundled operating instructions where Claude Code or Codex discovers Skills.",
1399
+ "source": "site/guides.ts",
1400
+ "url": "/cli-skills.html#client",
1401
+ "excerpt": "This registers CLI operating instructions. Customer-app work separately offers official plugin information, explicit temporary ZIP execution, or no assistance. Preserve explicitly chosen guide-only work without loading native hooks/tools or",
1402
+ "intents": "",
1403
+ "terms": "this registers cli operating instructions customer app work separately offers official plugin information explicit temporary zip execution or no assistance preserve explicitly chosen guide only without loading native hooks tools another coding process",
1404
+ "path": "/cli-sections/8fd72272fe6a975b747c6a55.md",
1405
+ "sha256": "dd25cac66cef8b10200d7d9a944247a6ce708bd0ccbcdd50df533d9d80765e2a",
1406
+ "bytes": 318
1407
+ },
1408
+ {
1409
+ "id": "guide/client-assistance#intro",
1410
+ "title": "Choose customer-app assistance",
1411
+ "description": "Choose a native plugin, explicitly authorized temporary ZIP execution, or no assistance.",
1412
+ "source": "site/guides.ts",
1413
+ "url": "/client-assistance.html",
1414
+ "excerpt": "Choose customer-app assistance On the first app creation/edit request, ask for a mode and wait. Reuse an existing choice for the same task. No answer or a failure never authorizes an automatic switch.\n\nChoice | Behavior |\n\n1. Official ins",
1415
+ "intents": "",
1416
+ "terms": "choose customer app assistance on first creation edit request ask for mode and wait reuse existing choice same task no answer or failure never authorizes automatic switch behavior 1 official installation information show publisher notice https github com sendbird client plugin what runs your machine guidance not install automatically use native capabilities after person completes setup 2 temporary zip execution only explicit authorization starts verified helper its separate claude process before parent reviews edits verifies build runtime 3 current agent",
1417
+ "path": "/cli-sections/29e50becd923d48366a9597b.md",
1418
+ "sha256": "d28adc1f2984aaf7ec1b998c867f32bef5efef02a489e1474ed78e7edd5ec056",
1419
+ "bytes": 910
1420
+ },
1421
+ {
1422
+ "id": "guide/client-assistance#guides",
1423
+ "title": "Choose customer-app assistance · Explicit guide-only work",
1424
+ "description": "Choose a native plugin, explicitly authorized temporary ZIP execution, or no assistance.",
1425
+ "source": "site/guides.ts",
1426
+ "url": "/client-assistance.html#guides",
1427
+ "excerpt": "Preserve an existing guide-only choice. Use the loaded Skill's scripts/client-guide.mjs through Node and the returned commit/path; this does not authorize ZIP execution.\n\n```text\nnode /ABSOLUTE/LOADED/SKILL/scripts/client-guide.mjs --list\nn",
1428
+ "intents": "",
1429
+ "terms": "preserve existing guide only choice use loaded skill s scripts client mjs through node and returned commit path this does not authorize zip execution text absolute list ref from index reader fetches pinned official repository with gh checking tree blob identity size utf 8 follow up documents same it installs extracts executes no publisher code missing access leaves step pending provides independent signature or legal acknowledgement verification",
1430
+ "path": "/cli-sections/e8c2c527f6e0714e004cd09e.md",
1431
+ "sha256": "be610913b44457a2001263797df9182f7e260c84175fa79c713bbc5d935b22ee",
1432
+ "bytes": 741
1433
+ },
1434
+ {
1435
+ "id": "guide/client-assistance#boundaries",
1436
+ "title": "Choose customer-app assistance · Existing session boundaries",
1437
+ "description": "Choose a native plugin, explicitly authorized temporary ZIP execution, or no assistance.",
1438
+ "source": "site/guides.ts",
1439
+ "url": "/client-assistance.html#boundaries",
1440
+ "excerpt": "Reading guides registers no publisher hooks, tools, agents, or native Skills and disables no existing host plugins. Use host controls for authorized setting changes. Instructions to run another model, broaden permissions, or execute scripts",
1441
+ "intents": "",
1442
+ "terms": "reading guides registers no publisher hooks tools agents or native skills and disables existing host plugins use controls for authorized setting changes instructions run another model broaden permissions execute scripts not override selected mode user authorization report source version commit edits actual build test live results pending checks separately send cli message does verify customer app behavior",
1443
+ "path": "/cli-sections/9fe5d1461d8b3d14a3d7d44b.md",
1444
+ "sha256": "8603ece11aeb18f0ef15c6ce6b47b52067399e60b604c430cdc06850944b15b5",
1445
+ "bytes": 549
1446
+ },
1447
+ {
1448
+ "id": "guide/windows#intro",
1449
+ "title": "Get started on Windows",
1450
+ "description": "PowerShell installation, Credential Manager, arguments, and verification boundaries.",
1451
+ "source": "site/guides.ts",
1452
+ "url": "/windows.html",
1453
+ "excerpt": "Get started on Windows Initial target: Windows 11 x64 and PowerShell 7, with Node.js 22.23.4+ (22.x) or 24.22.1+ (24.x).",
1454
+ "intents": "",
1455
+ "terms": "get started on windows initial target 11 x64 and powershell 7 with node js 22 23 4 x or 24 1",
1456
+ "path": "/cli-sections/8f47539a088bf287da93d7af.md",
1457
+ "sha256": "68e7fe7bf231f0e7e2d56d53ba98a7a4c42e18293c94d38d8ed6313e2adfe972",
1458
+ "bytes": 148
1459
+ },
1460
+ {
1461
+ "id": "guide/windows#install",
1462
+ "title": "Get started on Windows · Install and sign in",
1463
+ "description": "PowerShell installation, Credential Manager, arguments, and verification boundaries.",
1464
+ "source": "site/guides.ts",
1465
+ "url": "/windows.html#install",
1466
+ "excerpt": "Use the command below after npm publication. For an unpublished alpha, use an authorized tarball. Check package availability first.\n\n```text\nnpm install -g @sendbird/cli\nsendbird --version\nsendbird profile create --name staging --env stagin",
1467
+ "intents": "",
1468
+ "terms": "use command below after npm publication for unpublished alpha authorized tarball check package availability first text install g sendbird cli version profile create name staging env auth login status summary browser approval returns through loopback callback if it does not open automatically displayed waiting url token windows credential manager never local file fallback resolve blocked os storage system powershell before retrying",
1469
+ "path": "/cli-sections/75aee877af56cccc6cc5fd0b.md",
1470
+ "sha256": "b4c0893bfba665017cc194eec7705f03f1e71748992884a58ef4505073944a80",
1471
+ "bytes": 642
1472
+ },
1473
+ {
1474
+ "id": "guide/windows#shell",
1475
+ "title": "Get started on Windows · Copy commands safely",
1476
+ "description": "PowerShell installation, Credential Manager, arguments, and verification boundaries.",
1477
+ "source": "site/guides.ts",
1478
+ "url": "/windows.html#shell",
1479
+ "excerpt": "Use PowerShell 7 and npm's sendbird.ps1. Windows describe/--example use PowerShell quoting; agents should prefer example.argv arrays. Do not copy Bash continuations/environment syntax directly.\n\n```text\nsendbird describe chat channel create",
1480
+ "intents": "",
1481
+ "terms": "use powershell 7 and npm s sendbird ps1 windows describe example quoting agents should prefer argv arrays not copy bash continuations environment syntax directly text chat channel create if policy blocks weaken execution node with installed dist cli js or administrator approved launcher cmd shim json handling differs from",
1482
+ "path": "/cli-sections/053cfaf0ce5284182945deb1.md",
1483
+ "sha256": "272fbb8643a851055aa4a8ca3aa51d8b06072c10d0d5f7878dd9ead50c746d55",
1484
+ "bytes": 512
1485
+ },
1486
+ {
1487
+ "id": "guide/windows#safety",
1488
+ "title": "Get started on Windows · Files and installer",
1489
+ "description": "PowerShell installation, Credential Manager, arguments, and verification boundaries.",
1490
+ "source": "site/guides.ts",
1491
+ "url": "/windows.html#safety",
1492
+ "excerpt": "Secret-output files never overwrite existing files. Apply a current-user DACL before writing; administrator/backup privileges remain outside that guarantee. The installer creates cmd/ps1 launchers without symlink privileges and preserves ex",
1493
+ "intents": "",
1494
+ "terms": "secret output files never overwrite existing apply current user dacl before writing administrator backup privileges remain outside that guarantee installer creates cmd ps1 launchers without symlink and preserves use new bin directory or verified executable path for updates",
1495
+ "path": "/cli-sections/2bf1eb18be51436708a97d2c.md",
1496
+ "sha256": "4485cddefeec91cdd21757ee5130c98409e82fb0a4dc7f1e47a6073d63a1b1b6",
1497
+ "bytes": 372
1498
+ },
1499
+ {
1500
+ "id": "guide/windows#validation",
1501
+ "title": "Get started on Windows · Verification boundaries",
1502
+ "description": "PowerShell installation, Credential Manager, arguments, and verification boundaries.",
1503
+ "source": "site/guides.ts",
1504
+ "url": "/windows.html#validation",
1505
+ "excerpt": "Windows CI checks native credential save/delete, ACLs, concurrent locks, package installation, PowerShell arguments, worker termination, and Skill registration. Actual account browser approval, refresh/revocation, Chat exchange, and Claude/",
1506
+ "intents": "",
1507
+ "terms": "windows ci checks native credential save delete acls concurrent locks package installation powershell arguments worker termination and skill registration actual account browser approval refresh revocation chat exchange claude codex loading require separate staging evidence 5 1 cmd arm64 are not fully validated git bash uses node wsl is linux environment requiring secret service",
1508
+ "path": "/cli-sections/c757f9d6d6f0e95260f73979.md",
1509
+ "sha256": "adf80ca23f3ececee2bcdcb372a5512d8b0863c5de7a11b5538ebc880ca502ca",
1510
+ "bytes": 492
1511
+ },
1512
+ {
1513
+ "id": "tutorial/tutorials#intro",
1514
+ "title": "User scenario tutorials",
1515
+ "description": "Reproduce six official Sendbird workflows with the current CLI.",
1516
+ "source": "site/tutorials.ts",
1517
+ "url": "/tutorials.html",
1518
+ "excerpt": "OFFICIAL DOCS → HANDS-ON CLI\n\nLearn Chat through user workflows Six scenarios adapted from official Sendbird JavaScript SDK documentation.\nConnect setup, execution, observation, and cleanup with real CLI commands.\n\n[Start shared setup →](/",
1519
+ "intents": "",
1520
+ "terms": "official docs hands on cli learn chat through user workflows six scenarios adapted from sendbird javascript sdk documentation connect setup execution observation and cleanup with real commands start shared tutorial html command overview focus visible outcomes sources mappings terminals b response ids conditional branches unsupported steps checked 2026 09 21 about 10 minutes 01 first message in open channel alice speaks live event lobby bob receives time follow 15 02 direct read receipts typing reuse conversation for same two distinguish",
1521
+ "path": "/cli-sections/53e843f804193046d146dd07.md",
1522
+ "sha256": "b81c48a5bb8dd74d82b7f38eda0e4d03bf5e3cdb9bf0673839be604da69077fa",
1523
+ "bytes": 1599
1524
+ },
1525
+ {
1526
+ "id": "tutorial/tutorials#adaptation",
1527
+ "title": "User scenario tutorials · How official workflows are adapted",
1528
+ "description": "Reproduce six official Sendbird workflows with the current CLI.",
1529
+ "source": "site/tutorials.ts",
1530
+ "url": "/tutorials.html#adaptation",
1531
+ "excerpt": "Prepare channels/users with Dashboard management commands; use SDK actor commands inside channels. Browser UI, MessageCollection caching, auto-accept changes, and emoji catalog administration are not reproduced wholesale. Each tutorial stat",
1532
+ "intents": "",
1533
+ "terms": "prepare channel user with dashboard management commands use sdk actor inside browser ui messagecollection caching auto accept changes and emoji catalog administration are not reproduced wholesale each tutorial states required manual setup conditions",
1534
+ "path": "/cli-sections/8a05ce74d357148d35a7ece5.md",
1535
+ "sha256": "59b1d7ab92add15d00e4159f283371dc6904bad347db633025e09adab7cb3206",
1536
+ "bytes": 346
1537
+ },
1538
+ {
1539
+ "id": "tutorial/tutorials#evidence",
1540
+ "title": "User scenario tutorials · What proves success?",
1541
+ "description": "Reproduce six official Sendbird workflows with the current CLI.",
1542
+ "source": "site/tutorials.ts",
1543
+ "url": "/tutorials.html#evidence",
1544
+ "excerpt": "Compare send message_id with recipient event data.message_id, then independently read edits, deletion, and receipts. Examples are not measured outcomes. Without app access and tokens, only offline command validation is possible.",
1545
+ "intents": "",
1546
+ "terms": "compare send message id with recipient event data then independently read edits deletion and receipts examples are not measured outcomes without app access token only offline command validation is possible",
1547
+ "path": "/cli-sections/741923bf0d929a7ddbebc6de.md",
1548
+ "sha256": "6aef3ce6461e00940c09763eef8f7405caaadd043953cc05d7b51f2a1f48786d",
1549
+ "bytes": 280
1550
+ },
1551
+ {
1552
+ "id": "tutorial/tutorials#source-index",
1553
+ "title": "User scenario tutorials · Official documentation sources",
1554
+ "description": "Reproduce six official Sendbird workflows with the current CLI.",
1555
+ "source": "site/tutorials.ts",
1556
+ "url": "/tutorials.html#source-index",
1557
+ "excerpt": "- [Send your first message](https://sendbird.com/docs/chat/sdk/v4/javascript/getting-started/send-first-message)\n\n- [Create a channel](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/creating-a-channel/create-a-channel)\n\n- [Channel",
1558
+ "intents": "",
1559
+ "terms": "send your first message https sendbird com docs chat sdk v4 javascript getting started create channel overview auth application authenticating user event handlers handler managing add or remove thread using threading react in group mark as read status typing indicators other member accept decline invitation inviting retrieve retrieving list of update delete",
1560
+ "path": "/cli-sections/8a200a03736bdc3537fec146.md",
1561
+ "sha256": "a4d6b0c06f73a5a70e614a81576986835427e7172d39b765aa2916af16ca9401",
1562
+ "bytes": 1867
1563
+ },
1564
+ {
1565
+ "id": "tutorial/tutorial-setup#intro",
1566
+ "title": "Shared tutorial setup",
1567
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1568
+ "source": "site/tutorials.ts",
1569
+ "url": "/tutorial-setup.html",
1570
+ "excerpt": "TUTORIALS / BEFORE YOU START\n\nShared tutorial setup Prepare Alice and Bob once, then use them in six independent scenarios.",
1571
+ "intents": "setup onboarding",
1572
+ "terms": "tutorials before you start shared tutorial setup prepare alice and bob once then use them in six independent scenarios",
1573
+ "path": "/cli-sections/48feeb98779bacb9c54a7813.md",
1574
+ "sha256": "ba284eb0888430142ac80cba35dfc1e1903c974d31ba41b5abe8d4d47c899bbc",
1575
+ "bytes": 150
1576
+ },
1577
+ {
1578
+ "id": "tutorial/tutorial-setup#requirements",
1579
+ "title": "Shared tutorial setup · Requirements",
1580
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1581
+ "source": "site/tutorials.ts",
1582
+ "url": "/tutorial-setup.html#requirements",
1583
+ "excerpt": "- Node.js 22.23.4+ (22.x) or 24.22.1+ (24.x), installed CLI 0.2.0-alpha.1+, and two Bash terminals.\n\n- A test organization/app, Dashboard sign-in, and permission to create users/channels. Start with [quick start](/getting-started.html) if n",
1584
+ "intents": "",
1585
+ "terms": "node js 22 23 4 x or 24 1 installed cli 0 2 alpha and two bash terminals test organization app dashboard sign in permission create user channel start with quick getting started html if needed sdk actors are separate from administrator auth use dedicated resources never public customer copied commands perform actual creation sends deletion",
1586
+ "path": "/cli-sections/ff94b06de96ccd18682239b2.md",
1587
+ "sha256": "37ca1590fdcdcccc6efcd099607f9565c1dfcfe51b38bc49e13e6c10af3eb300",
1588
+ "bytes": 487
1589
+ },
1590
+ {
1591
+ "id": "tutorial/tutorial-setup#shell",
1592
+ "title": "Shared tutorial setup · 1. Use Bash in both terminals",
1593
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1594
+ "source": "site/tutorials.ts",
1595
+ "url": "/tutorial-setup.html#shell",
1596
+ "excerpt": "```text\nbash\n```\n\nadmin, alice, and bob below are Bash functions created here, not extra CLI binaries. They supply consistent profile/app/actor bindings.",
1597
+ "intents": "",
1598
+ "terms": "text bash admin alice and bob below are functions created here not extra cli binaries they supply consistent profile app actor bindings",
1599
+ "path": "/cli-sections/ce3f1ab23be1825dcfe382e7.md",
1600
+ "sha256": "8c2f632e135f12dd874ff97c7d7fd6aa8e713f54d3fe9e838ee03fa78d0ac5f8",
1601
+ "bytes": 212
1602
+ },
1603
+ {
1604
+ "id": "tutorial/tutorial-setup#context",
1605
+ "title": "Shared tutorial setup · 2. Create the session in terminal A",
1606
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1607
+ "source": "site/tutorials.ts",
1608
+ "url": "/tutorial-setup.html#context",
1609
+ "excerpt": "Replace YOUR_TEST_APP_ID with the real authorized app. Staging is default. OAuth discovers app-specific API/WebSocket hosts, so leave host variables empty unless explicitly overriding the verified Standard/Delight route. Production needs se",
1610
+ "intents": "",
1611
+ "terms": "replace your test app id with real authorized staging is default oauth discovers specific api websocket hosts so leave host variables empty unless explicitly overriding verified standard delight route production needs separate authorization and dedicated resources every command binds text run in bash set intended profile tutorial selected region user token below are explicit compatibility overrides ws umask 077 dir mktemp d tmpdir tmp sendbird xxxxxx node e process stdout write cli require crypto randombytes 6 tostring hex alice bob",
1612
+ "path": "/cli-sections/efbeb415d221d71bdb3fa435.md",
1613
+ "sha256": "e3ea06f43d0286da2b3fec082947e88be80113d256770712b397ffe28872d12d",
1614
+ "bytes": 3104
1615
+ },
1616
+ {
1617
+ "id": "tutorial/tutorial-setup#login",
1618
+ "title": "Shared tutorial setup · 3. Sign in and inspect the app",
1619
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1620
+ "source": "site/tutorials.ts",
1621
+ "url": "/tutorial-setup.html#login",
1622
+ "excerpt": "```text\nsendbird --profile \"$TUTORIAL_PROFILE\" auth login\nadmin app get\n```\n\nVerify app_id before continuing. Create the profile first if missing.",
1623
+ "intents": "",
1624
+ "terms": "text sendbird profile tutorial auth login admin app get verify id before continuing create first if missing",
1625
+ "path": "/cli-sections/ebe70349156ebda7586eb4ce.md",
1626
+ "sha256": "cb4ea49132c0c7f3ef36f70b0a0513a4ad2e19eb1e9123abcd685ce23b36e93c",
1627
+ "bytes": 206
1628
+ },
1629
+ {
1630
+ "id": "tutorial/tutorial-setup#users",
1631
+ "title": "Shared tutorial setup · 4. Prepare new users and tokens",
1632
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1633
+ "source": "site/tutorials.ts",
1634
+ "url": "/tutorial-setup.html#users",
1635
+ "excerpt": "```text\nadmin chat user create --user-id \"$TUTORIAL_ALICE\" --nickname 'Alice' --issue-access-token true\nadmin chat user create --user-id \"$TUTORIAL_BOB\" --nickname 'Bob' --issue-access-token true\n```\n\nCheck both commands succeed. Secrets re",
1636
+ "intents": "",
1637
+ "terms": "text admin chat user create id tutorial alice nickname issue access token true bob check both commands succeed secrets remain masked and sdk are read into memory when connecting not rotate existing customer s",
1638
+ "path": "/cli-sections/2e67e45e5a7de1394d6104d7.md",
1639
+ "sha256": "ced053f48f0b8afa0c5b91b44f44033db3d2ea5fa6405c44f0537cebd68d405d",
1640
+ "bytes": 409
1641
+ },
1642
+ {
1643
+ "id": "tutorial/tutorial-setup#connect",
1644
+ "title": "Shared tutorial setup · 5. Verify SDK actors",
1645
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1646
+ "source": "site/tutorials.ts",
1647
+ "url": "/tutorial-setup.html#connect",
1648
+ "excerpt": "```text\nalice chat sdk status\nbob chat sdk status\n```\n\nCheck connected: true, expected app_id, and each user.user_id. Each command disconnects on completion. Start watch to keep observing events.",
1649
+ "intents": "",
1650
+ "terms": "text alice chat sdk status bob check connected true expected app id and each user command disconnects on completion start watch keep observing events",
1651
+ "path": "/cli-sections/92a7321f3b5035fc630d09eb.md",
1652
+ "sha256": "3428ba308ea56f393dacf01de33be86239ff32f0fe7c98f0e7fd2120d6ff05b3",
1653
+ "bytes": 245
1654
+ },
1655
+ {
1656
+ "id": "tutorial/tutorial-setup#terminal-b",
1657
+ "title": "Shared tutorial setup · 6. Load the same session in terminal B",
1658
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1659
+ "source": "site/tutorials.ts",
1660
+ "url": "/tutorial-setup.html#terminal-b",
1661
+ "excerpt": "Run the printed `source /actual/path/session.sh` line in the second Bash terminal. Do not rerun the whole bootstrap there, which creates a different actor pair. Compare these values in both terminals.\n\n```text\nprintf \"%s\\n\" \"$TUTORIAL_APP_I",
1662
+ "intents": "",
1663
+ "terms": "run printed source actual path session sh line in second bash terminal not rerun whole bootstrap there which creates different actor pair compare these values both terminals text printf s n tutorial app id alice bob dir",
1664
+ "path": "/cli-sections/a6fbb6af8004190b935ab5b7.md",
1665
+ "sha256": "eff513c693bb94b35629a047607bf212a1124d4ccfc4e205fa7e92413f73ff7f",
1666
+ "bytes": 364
1667
+ },
1668
+ {
1669
+ "id": "tutorial/tutorial-setup#results",
1670
+ "title": "Shared tutorial setup · Response IDs and watch rules",
1671
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1672
+ "source": "site/tutorials.ts",
1673
+ "url": "/tutorial-setup.html#results",
1674
+ "excerpt": "Saved JSON has status/result. channel_id dm reads result.channel_url; message_id parent reads result.message_id. Never treat preview as execution evidence or copy invented/documentation IDs.\n\nWait for `ready` before sending from another ter",
1675
+ "intents": "",
1676
+ "terms": "saved json has status result channel id dm reads url message parent never treat preview as execution evidence or copy invented documentation ids wait for ready before send from another terminal watch ends after 120 seconds 100 events restart and again if necessary ctrl c without leave group membership invited actor must call invitation accept follow scenario tutorial invitations html observed state this setup changes no app wide acceptance policy",
1677
+ "path": "/cli-sections/7b7fd44c36ded1774220519d.md",
1678
+ "sha256": "9ef2a7a80c6fea81677015f20eb3d507d16c8feb9f9f2cb9a9ffa61e102052b5",
1679
+ "bytes": 640
1680
+ },
1681
+ {
1682
+ "id": "tutorial/tutorial-setup#cleanup",
1683
+ "title": "Shared tutorial setup · Clean up users after all scenarios",
1684
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1685
+ "source": "site/tutorials.ts",
1686
+ "url": "/tutorial-setup.html#cleanup",
1687
+ "excerpt": "Finish each tutorial's channel cleanup first and stop all watches, then run in A.\n\n```text\nadmin chat user delete --id \"$TUTORIAL_ALICE\" --yes\nadmin chat user delete --id \"$TUTORIAL_BOB\" --yes\n```\n\nManually remove response files/session.sh ",
1688
+ "intents": "",
1689
+ "terms": "finish each tutorial s channel cleanup first and stop all watches then run in text admin chat user delete id alice yes bob manually remove response files session sh inside generated dir afterward no recursive deletion command for arbitrary paths is provided",
1690
+ "path": "/cli-sections/2942fd2a04cdc3605de99cb6.md",
1691
+ "sha256": "6a3372e6ed8f3a7a2df4436083136474f89d9c43943798b193dee7398f2ea3b2",
1692
+ "bytes": 411
1693
+ },
1694
+ {
1695
+ "id": "tutorial/tutorial-setup#troubleshooting",
1696
+ "title": "Shared tutorial setup · Troubleshooting",
1697
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1698
+ "source": "site/tutorials.ts",
1699
+ "url": "/tutorial-setup.html#troubleshooting",
1700
+ "excerpt": "Symptom | Check |\n\nE_AUTH / E_SDK_AUTH | Distinguish Dashboard and SDK credentials; verify token user_id/app_id. |\n\nE_CONTEXT | Verify organization/app ownership, profile environment, and any API/WebSocket override pair. |\n\nPermission/fe",
1701
+ "intents": "",
1702
+ "terms": "symptom check e auth sdk distinguish dashboard and credentials verify token user id app context organization ownership profile environment any api websocket override pair permission feature errors membership sender entitlement activation never use administrator as no events receiver channel send after ready acknowledgement is separate from receipt timeout resend automatically inspect returned ids or created actor state first",
1703
+ "path": "/cli-sections/87381b3b3ab245e902c91aba.md",
1704
+ "sha256": "07f93b8dfb22d97ea2cfc4b472000420cb580a81548c5662e39454aac12cb586",
1705
+ "bytes": 613
1706
+ },
1707
+ {
1708
+ "id": "tutorial/tutorial-setup#sources",
1709
+ "title": "Shared tutorial setup · Sources and verification level",
1710
+ "description": "Prepare two actors and two terminals once, using real response IDs and private credentials.",
1711
+ "source": "site/tutorials.ts",
1712
+ "url": "/tutorial-setup.html#sources",
1713
+ "excerpt": "- [Authentication](https://sendbird.com/docs/chat/sdk/v4/javascript/application/authenticating-a-user/authentication)\n\n- [Send your first message](https://sendbird.com/docs/chat/sdk/v4/javascript/getting-started/send-first-message)\nSources ",
1714
+ "intents": "",
1715
+ "terms": "auth https sendbird com docs chat sdk v4 javascript application authenticating user send your first message getting started sources checked 2026 09 21 parser input validation is offline verify actual server outcomes with authorized test account build not delivery evidence choose scenario tutorials html",
1716
+ "path": "/cli-sections/b10ab6d52c63031aada3ce6e.md",
1717
+ "sha256": "a56b65b5a0f46def6705758e4523de81e34120364e0ffe7fd139c41c10f77310",
1718
+ "bytes": 501
1719
+ },
1720
+ {
1721
+ "id": "tutorial/tutorial-open-chat#intro",
1722
+ "title": "01. First message in an Open channel",
1723
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1724
+ "source": "site/tutorials.ts",
1725
+ "url": "/tutorial-open-chat.html",
1726
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 1 OF 6\n\n01. First message in an Open channel Alice speaks in a live-event lobby and Bob receives the message in real time.\n\nAbout 10 minutes Terminals A / B Official docs checked 2026-09-21",
1727
+ "intents": "open chat first message",
1728
+ "terms": "official docs cli workflow 1 of 6 01 first message in open channel alice speaks live event lobby and bob receives real time about 10 minutes terminals b checked 2026 09 21",
1729
+ "path": "/cli-sections/a1cc43567fc8283cce017324.md",
1730
+ "sha256": "1351d0ff56dc549231d98b144765b55cda60c8a7169fbd3496cd35b9ae53cc42",
1731
+ "bytes": 266
1732
+ },
1733
+ {
1734
+ "id": "tutorial/tutorial-open-chat#prepare",
1735
+ "title": "01. First message in an Open channel · Before you start",
1736
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1737
+ "source": "site/tutorials.ts",
1738
+ "url": "/tutorial-open-chat.html#prepare",
1739
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nCreate Alice and Bob in shared setup and source the same session.sh in bo",
1740
+ "intents": "",
1741
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently create alice bob bash must target test app",
1742
+ "path": "/cli-sections/bdf9658729caf4a4f93c840a.md",
1743
+ "sha256": "6b76b0ab2b8670e08d4a71ef0b87e345fc401d9031a8a18e0f8f063bfba9e634",
1744
+ "bytes": 365
1745
+ },
1746
+ {
1747
+ "id": "tutorial/tutorial-open-chat#mapping",
1748
+ "title": "01. First message in an Open channel · Official workflow → CLI",
1749
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1750
+ "source": "site/tutorials.ts",
1751
+ "url": "/tutorial-open-chat.html#mapping",
1752
+ "excerpt": "Official step | CLI equivalent |\n\nSDK initialization and connect | alice / bob helpers bind app/actor and read user tokens into memory through OAuth |\n\nCreate an Open channel | Administrator chat channel create --type open |\n\nenter → reg",
1753
+ "intents": "",
1754
+ "terms": "official step cli equivalent sdk initialization and connect alice bob helpers bind app actor read user token into memory through oauth create open channel administrator chat type enter register events sendusermessage wait for watch ready then message send exit disconnect completion automatic one shot cleanup",
1755
+ "path": "/cli-sections/3a8c2978f33f841a4808e04b.md",
1756
+ "sha256": "9f563bd28dedc8c42d2b8658d30720f5c90f68bfdbfecb263b06fd61f9f0d792",
1757
+ "bytes": 471
1758
+ },
1759
+ {
1760
+ "id": "tutorial/tutorial-open-chat#step-1",
1761
+ "title": "01. First message in an Open channel · 1. Create the lobby",
1762
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1763
+ "source": "site/tutorials.ts",
1764
+ "url": "/tutorial-open-chat.html#step-1",
1765
+ "excerpt": "Terminal A\n\nCreate a new Open channel only for this exercise and save its response.\n\n```text\nadmin chat channel create --type 'open' --name 'Tutorial open' > \"$TUTORIAL_DIR/open.json\" && cat \"$TUTORIAL_DIR/open.json\"\n```\n\n**Expected result*",
1766
+ "intents": "",
1767
+ "terms": "terminal create new open channel only for this exercise and save its response text admin chat type name tutorial dir json cat expected result contains url later commands read that exact value if creation listing returns 404 inspect routing region support not substitute group record success",
1768
+ "path": "/cli-sections/e9add552e6fac5924fc39d15.md",
1769
+ "sha256": "91128b13a12ae3e99014ad4fc6247ce5e68498e17077904df001125866bc5f80",
1770
+ "bytes": 493
1771
+ },
1772
+ {
1773
+ "id": "tutorial/tutorial-open-chat#step-2",
1774
+ "title": "01. First message in an Open channel · 2. Open Bob's receiver",
1775
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1776
+ "source": "site/tutorials.ts",
1777
+ "url": "/tutorial-open-chat.html#step-2",
1778
+ "excerpt": "Terminal B\n\nKeep this command running. Switch to terminal A only after ready appears.\n\n```text\nbob chat channel watch --type 'open' --id \"$(channel_id open)\" --seconds 120 --max-events 100\n```\n\n**Expected result** The event is ready and cha",
1779
+ "intents": "",
1780
+ "terms": "terminal b keep this command running switch only after ready appears text bob chat channel watch type open id seconds 120 max events 100 expected result event is and url matches json proves readiness not message delivery",
1781
+ "path": "/cli-sections/ef4ef2b5cafaa524b4d91baf.md",
1782
+ "sha256": "5231524e999b2b63182099a5995daa674b71b8e10f059e8cdf933386bc20efeb",
1783
+ "bytes": 387
1784
+ },
1785
+ {
1786
+ "id": "tutorial/tutorial-open-chat#step-3",
1787
+ "title": "01. First message in an Open channel · 3. Alice says hello",
1788
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1789
+ "source": "site/tutorials.ts",
1790
+ "url": "/tutorial-open-chat.html#step-3",
1791
+ "excerpt": "Terminal A\n\nSend while Bob's watch is still running.\n\n```text\nalice chat message send --type 'open' --id \"$(channel_id open)\" --message 'Hello from Alice' > \"$TUTORIAL_DIR/open-first.json\" && cat \"$TUTORIAL_DIR/open-first.json\"\n```\n\n**Expec",
1792
+ "intents": "",
1793
+ "terms": "terminal send while bob s watch is still running text alice chat message type open id channel hello from tutorial dir first json cat expected result records positive in b must receive that received data and establish delivery",
1794
+ "path": "/cli-sections/b26e11ed97ab1ead8f98124b.md",
1795
+ "sha256": "cd9d1a74a01505b336ddd4d8219f7251637ba97bc23a15ecea7e14424a2d3057",
1796
+ "bytes": 505
1797
+ },
1798
+ {
1799
+ "id": "tutorial/tutorial-open-chat#step-4",
1800
+ "title": "01. First message in an Open channel · 4. Read the stored message",
1801
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1802
+ "source": "site/tutorials.ts",
1803
+ "url": "/tutorial-open-chat.html#step-4",
1804
+ "excerpt": "Terminal A\n\nRead the same ID independently of the send acknowledgement.\n\n```text\nalice chat message get --type 'open' --id \"$(channel_id open)\" --message-id \"$(message_id open-first)\"\n```\n\n**Expected result** message_id and message match th",
1805
+ "intents": "",
1806
+ "terms": "terminal read same id independently of send acknowledgement text alice chat message get type open channel first expected result and match previous step stop b s watch with ctrl c check complete reason is interrupted",
1807
+ "path": "/cli-sections/888bef11b214e0884521ac7a.md",
1808
+ "sha256": "79fba748ef5055769fe5045fc3a7917b17defbf4fcc5fa65c5014b2c1596d7d4",
1809
+ "bytes": 396
1810
+ },
1811
+ {
1812
+ "id": "tutorial/tutorial-open-chat#complete",
1813
+ "title": "01. First message in an Open channel · Completion criteria",
1814
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1815
+ "source": "site/tutorials.ts",
1816
+ "url": "/tutorial-open-chat.html#complete",
1817
+ "excerpt": "Verify the same message_id in sender acknowledgement, another user's receive event, and independent readback.\n\nRecord completion only for observed server responses/events. Parser validation and dry-run do not establish actual delivery.",
1818
+ "intents": "",
1819
+ "terms": "verify same message id in sender acknowledgement another user s receive event and independent readback record completion only for observed server responses events parser validation dry run not establish actual delivery",
1820
+ "path": "/cli-sections/a7f84ab8b2f5eeb888e0658d.md",
1821
+ "sha256": "af6bf5a71be37a2fd0610a7620f1ddd95a209fa8c8c76cf93edd8c579e1b282a",
1822
+ "bytes": 299
1823
+ },
1824
+ {
1825
+ "id": "tutorial/tutorial-open-chat#cleanup",
1826
+ "title": "01. First message in an Open channel · Clean up the exercise channel",
1827
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1828
+ "source": "site/tutorials.ts",
1829
+ "url": "/tutorial-open-chat.html#cleanup",
1830
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
1831
+ "intents": "",
1832
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type open id yes",
1833
+ "path": "/cli-sections/13e1ede03cf3ad3049cd683d.md",
1834
+ "sha256": "5a3ab927bb21d16d5e4a78b12fa6bfc9342a8c05ace3405bb8ee6c65387a251b",
1835
+ "bytes": 374
1836
+ },
1837
+ {
1838
+ "id": "tutorial/tutorial-open-chat#differences",
1839
+ "title": "01. First message in an Open channel · Equivalent outcomes, different implementation",
1840
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1841
+ "source": "site/tutorials.ts",
1842
+ "url": "/tutorial-open-chat.html#differences",
1843
+ "excerpt": "The CLI prepares the official example's channel through the Dashboard API. Message delivery uses the actual SDK. Each command reconnects, and Open operations enter/exit automatically; participation is not preserved after watch ends.\n\nTimeou",
1844
+ "intents": "",
1845
+ "terms": "cli prepares official example s channel through dashboard api message delivery uses actual sdk each command reconnects and open operations enter exit automatically participation is not preserved after watch ends timeout does prove write was never applied read exact id if ended restart wait for ready before another authorized send writing these pages did customer",
1846
+ "path": "/cli-sections/39ff588997d6e86faa5b5796.md",
1847
+ "sha256": "11fc1c1043ecefc61df647e69de6b23ec8d496f89ce12b323b3773ed6604b604",
1848
+ "bytes": 531
1849
+ },
1850
+ {
1851
+ "id": "tutorial/tutorial-open-chat#sources",
1852
+ "title": "01. First message in an Open channel · Official sources",
1853
+ "description": "Alice speaks in a live-event lobby and Bob receives the message in real time.",
1854
+ "source": "site/tutorials.ts",
1855
+ "url": "/tutorial-open-chat.html#sources",
1856
+ "excerpt": "- [Send your first message](https://sendbird.com/docs/chat/sdk/v4/javascript/getting-started/send-first-message)\n\n- [Channel event handlers](https://sendbird.com/docs/chat/sdk/v4/javascript/event-handler/managing-channel-event-handlers/add-",
1857
+ "intents": "",
1858
+ "terms": "send your first message https sendbird com docs chat sdk v4 javascript getting started channel event handlers handler managing add or remove these tutorials adapt official workflows current cli behavior they are not copy of code claim one coverage every capability all html next scenario tutorial direct",
1859
+ "path": "/cli-sections/729f7579cfd5fc012088ade7.md",
1860
+ "sha256": "fe6d85f7489ce07324afb18f752536f081f2fceddad67ab9188d3c639ca743b1",
1861
+ "bytes": 688
1862
+ },
1863
+ {
1864
+ "id": "tutorial/tutorial-direct-chat#intro",
1865
+ "title": "02. Direct chat, read receipts, and typing",
1866
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1867
+ "source": "site/tutorials.ts",
1868
+ "url": "/tutorial-direct-chat.html",
1869
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 2 OF 6\n\n02. Direct chat, read receipts, and typing Reuse a conversation for the same two users and distinguish received from read.\n\nAbout 15 minutes Terminals A / B Official docs checked 2026-09-21",
1870
+ "intents": "1:1 private direct conversation read receipts",
1871
+ "terms": "official docs cli workflow 2 of 6 02 direct chat read receipts and typing reuse conversation for same two user distinguish received from about 15 minutes terminals b checked 2026 09 21",
1872
+ "path": "/cli-sections/07375a3a1499f87309083ba0.md",
1873
+ "sha256": "65fae306f704dc6f6d5d5a02dee2b00f03a3d2c66064a9f513d2ef0d9d024fed",
1874
+ "bytes": 280
1875
+ },
1876
+ {
1877
+ "id": "tutorial/tutorial-direct-chat#prepare",
1878
+ "title": "02. Direct chat, read receipts, and typing · Before you start",
1879
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1880
+ "source": "site/tutorials.ts",
1881
+ "url": "/tutorial-direct-chat.html#prepare",
1882
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nComplete shared setup. Use a regular Group channel only. Both users must ",
1883
+ "intents": "",
1884
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently use regular group only user must be joined invited actor accept first",
1885
+ "path": "/cli-sections/f43f0717dc0488900ee004bf.md",
1886
+ "sha256": "2fa39c3bf3e248e5f273751243a8cedb830a9c9e271b9e434d22f79e2895553e",
1887
+ "bytes": 353
1888
+ },
1889
+ {
1890
+ "id": "tutorial/tutorial-direct-chat#mapping",
1891
+ "title": "02. Direct chat, read receipts, and typing · Official workflow → CLI",
1892
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1893
+ "source": "site/tutorials.ts",
1894
+ "url": "/tutorial-direct-chat.html#mapping",
1895
+ "excerpt": "Official step | CLI equivalent |\n\nReuse a distinct direct channel | Call create --is-distinct true again for the same pair |\n\nonTypingStatusUpdated | Typing events in Bob's watch |\n\nmarkAsRead / read members | Bob channel read, then Ali",
1896
+ "intents": "",
1897
+ "terms": "official step cli equivalent reuse distinct direct channel call create is true again for same pair ontypingstatusupdated typing events in bob s watch markasread read member then alice message receipts",
1898
+ "path": "/cli-sections/ae8e8be042ab4fa90da2894d.md",
1899
+ "sha256": "9a198859ae55f59840e760c06281ba83f9c30375e3d9287b1d30440c04f05102",
1900
+ "bytes": 337
1901
+ },
1902
+ {
1903
+ "id": "tutorial/tutorial-direct-chat#step-1",
1904
+ "title": "02. Direct chat, read receipts, and typing · 1. Create the two-user channel",
1905
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1906
+ "source": "site/tutorials.ts",
1907
+ "url": "/tutorial-direct-chat.html#step-1",
1908
+ "excerpt": "Terminal A\n\nCreate a distinct channel for this run's new user pair.\n\n```text\nadmin chat channel create --type 'group' --name 'Tutorial dm' --user-ids \"$TUTORIAL_USERS\" --is-distinct true --is-public false > \"$TUTORIAL_DIR/dm.json\" && cat \"$",
1909
+ "intents": "",
1910
+ "terms": "terminal create distinct channel for this run s new user pair text admin chat type group name tutorial dm ids is true public false dir json cat expected result contains url",
1911
+ "path": "/cli-sections/423c9d7097d3ef2e8722ce2c.md",
1912
+ "sha256": "62a7df38aea457cf826ba85f8cb948632fa82d08a4b65689015d1225a4c3ddfb",
1913
+ "bytes": 397
1914
+ },
1915
+ {
1916
+ "id": "tutorial/tutorial-direct-chat#step-2",
1917
+ "title": "02. Direct chat, read receipts, and typing · 2. Open the same pair again",
1918
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1919
+ "source": "site/tutorials.ts",
1920
+ "url": "/tutorial-direct-chat.html#step-2",
1921
+ "excerpt": "Terminal A\n\nRepeat with the same user pair without changing membership.\n\n```text\nadmin chat channel create --type 'group' --name 'Tutorial dm' --user-ids \"$TUTORIAL_USERS\" --is-distinct true --is-public false > \"$TUTORIAL_DIR/dm-again.json\"",
1922
+ "intents": "",
1923
+ "terms": "terminal repeat with same user pair without changing membership text admin chat channel create type group name tutorial dm ids is distinct true public false dir again json cat test id echo direct was returned expected result both url values must match changes or leave original are outside this reuse check",
1924
+ "path": "/cli-sections/d03965bf3668def338b8fd83.md",
1925
+ "sha256": "906d7954103df03f780c80bc9e8aad75d9ac53726c67f5d2da2511ab99df859a",
1926
+ "bytes": 608
1927
+ },
1928
+ {
1929
+ "id": "tutorial/tutorial-direct-chat#step-3",
1930
+ "title": "02. Direct chat, read receipts, and typing · 3. Bob watches events",
1931
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1932
+ "source": "site/tutorials.ts",
1933
+ "url": "/tutorial-direct-chat.html#step-3",
1934
+ "excerpt": "Terminal B\n\nWait for ready and keep this terminal running.\n\n```text\nbob chat channel watch --type 'group' --id \"$(channel_id dm)\" --seconds 120 --max-events 100\n```\n\n**Expected result** After ready, observe typing and message events from th",
1935
+ "intents": "",
1936
+ "terms": "terminal b wait for ready and keep this running text bob chat channel watch type group id dm seconds 120 max events 100 expected result after observe typing message from following steps",
1937
+ "path": "/cli-sections/05136fb125d49e34e971aafe.md",
1938
+ "sha256": "353f9ffcd4e8a9fb6f9146fa85ab7a503ae57b150bbdb97b33316d10cf951633",
1939
+ "bytes": 330
1940
+ },
1941
+ {
1942
+ "id": "tutorial/tutorial-direct-chat#step-4",
1943
+ "title": "02. Direct chat, read receipts, and typing · 4. Type, then send a message",
1944
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1945
+ "source": "site/tutorials.ts",
1946
+ "url": "/tutorial-direct-chat.html#step-4",
1947
+ "excerpt": "Terminal A\n\nPublish typing state for three seconds, then send.\n\n```text\nalice chat channel typing --type 'group' --id \"$(channel_id dm)\" --seconds 3\nalice chat message send --type 'group' --id \"$(channel_id dm)\" --message 'Are you available",
1948
+ "intents": "",
1949
+ "terms": "terminal publish typing state for three seconds then send text alice chat channel type group id dm 3 message are you available tutorial dir first json cat expected result appears in b s event and disappears when ends compare receive with",
1950
+ "path": "/cli-sections/018c74f33e738283b4d356ba.md",
1951
+ "sha256": "e058cc59a44692f50b303e25cfafc32ca8e3add0fa4b7a1ec84969202c05169b",
1952
+ "bytes": 531
1953
+ },
1954
+ {
1955
+ "id": "tutorial/tutorial-direct-chat#step-5",
1956
+ "title": "02. Direct chat, read receipts, and typing · 5. Check read state after receipt only",
1957
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1958
+ "source": "site/tutorials.ts",
1959
+ "url": "/tutorial-direct-chat.html#step-5",
1960
+ "excerpt": "Terminal A\n\nBob has not called read. Do not sign the test actor into another client.\n\n```text\nalice chat message receipts --type 'group' --id \"$(channel_id dm)\" --message-id \"$(message_id dm-first)\"\n```\n\n**Expected result** Bob must still b",
1961
+ "intents": "",
1962
+ "terms": "terminal bob has not called read sign test actor into another client text alice chat message receipts type group id channel dm first expected result must still be absent from member if already present investigate app marking receipt alone does prove state",
1963
+ "path": "/cli-sections/a4f7d06f3464a819758a18e5.md",
1964
+ "sha256": "cf0f7fc8f70e24456025c8234fc31a8f76dd8120cdd3a4d4b906e7f2d751fb4f",
1965
+ "bytes": 462
1966
+ },
1967
+ {
1968
+ "id": "tutorial/tutorial-direct-chat#step-6",
1969
+ "title": "02. Direct chat, read receipts, and typing · 6. Bob explicitly marks read",
1970
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1971
+ "source": "site/tutorials.ts",
1972
+ "url": "/tutorial-direct-chat.html#step-6",
1973
+ "excerpt": "Terminal B\n\nStop watch with Ctrl+C before running this command.\n\n```text\nbob chat channel read --type 'group' --id \"$(channel_id dm)\"\n```\n\n**Expected result** Read returns read: true. Allow server propagation before the next step.",
1974
+ "intents": "",
1975
+ "terms": "terminal b stop watch with ctrl c before running this command text bob chat channel read type group id dm expected result returns true allow server propagation next step",
1976
+ "path": "/cli-sections/63dec6ed590e2a11b83476ff.md",
1977
+ "sha256": "ab6382d50bbd08490b00f784dd8c44ebd9fdb3d1c245c47886f837781cf02e61",
1978
+ "bytes": 309
1979
+ },
1980
+ {
1981
+ "id": "tutorial/tutorial-direct-chat#step-7",
1982
+ "title": "02. Direct chat, read receipts, and typing · 7. Read receipts again",
1983
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1984
+ "source": "site/tutorials.ts",
1985
+ "url": "/tutorial-direct-chat.html#step-7",
1986
+ "excerpt": "Terminal A\n\nRead the receipts for the message just sent.\n\n```text\nalice chat message receipts --type 'group' --id \"$(channel_id dm)\" --message-id \"$(message_id dm-first)\"\n```\n\n**Expected result** read_members includes TUTORIAL_BOB, and unre",
1987
+ "intents": "",
1988
+ "terms": "terminal read receipts for message just sent text alice chat type group id channel dm first expected result member includes tutorial bob and unread count is zero in this two user test",
1989
+ "path": "/cli-sections/1ba7da147607bdedc89d90cb.md",
1990
+ "sha256": "922e8d1569f46f023ee1fd9c194f7129cfc63e92321164dc40f4570f94016779",
1991
+ "bytes": 360
1992
+ },
1993
+ {
1994
+ "id": "tutorial/tutorial-direct-chat#complete",
1995
+ "title": "02. Direct chat, read receipts, and typing · Completion criteria",
1996
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
1997
+ "source": "site/tutorials.ts",
1998
+ "url": "/tutorial-direct-chat.html#complete",
1999
+ "excerpt": "Verify channel reuse, another user's typing, and the difference between receipt and explicit read.\n\nRecord completion only for observed server responses/events. Parser validation and dry-run do not establish actual delivery.",
2000
+ "intents": "",
2001
+ "terms": "verify channel reuse another user s typing and difference between receipt explicit read record completion only for observed server responses events parser validation dry run not establish actual delivery",
2002
+ "path": "/cli-sections/c3b0da580fbab096399d41e4.md",
2003
+ "sha256": "2170b4b3bb5a25db5fd96637ce15a45b90ceb0d20c24139bba2d2be0718b75fc",
2004
+ "bytes": 294
2005
+ },
2006
+ {
2007
+ "id": "tutorial/tutorial-direct-chat#cleanup",
2008
+ "title": "02. Direct chat, read receipts, and typing · Clean up the exercise channel",
2009
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
2010
+ "source": "site/tutorials.ts",
2011
+ "url": "/tutorial-direct-chat.html#cleanup",
2012
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
2013
+ "intents": "",
2014
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type group id dm yes",
2015
+ "path": "/cli-sections/0c4ed6af7082d699cfe43eb0.md",
2016
+ "sha256": "c8fc4c6a95431a60f4217baf3d7f6292db0126dbe971b2ed6c69a22c34765bf8",
2017
+ "bytes": 379
2018
+ },
2019
+ {
2020
+ "id": "tutorial/tutorial-direct-chat#differences",
2021
+ "title": "02. Direct chat, read receipts, and typing · Equivalent outcomes, different implementation",
2022
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
2023
+ "source": "site/tutorials.ts",
2024
+ "url": "/tutorial-direct-chat.html#differences",
2025
+ "excerpt": "Use watch and one-shot user commands instead of a persistent chat UI. Receipt and read state are separate. Read receipts independently; do not substitute Supergroup or administrator messages.\n\nTimeout does not prove a write was never applie",
2026
+ "intents": "",
2027
+ "terms": "use watch and one shot user commands instead of persistent chat ui receipt read state are separate receipts independently not substitute supergroup or administrator message timeout does prove write was never applied exact id if ended restart wait for ready before another authorized send writing these pages did customer channel",
2028
+ "path": "/cli-sections/e71553f3fd34305ecacb90bb.md",
2029
+ "sha256": "5814252f1de973d63e812dcc556732cafa8f6cdcfdb6754dd6d576a6517d0816",
2030
+ "bytes": 496
2031
+ },
2032
+ {
2033
+ "id": "tutorial/tutorial-direct-chat#sources",
2034
+ "title": "02. Direct chat, read receipts, and typing · Official sources",
2035
+ "description": "Reuse a conversation for the same two users and distinguish received from read.",
2036
+ "source": "site/tutorials.ts",
2037
+ "url": "/tutorial-direct-chat.html#sources",
2038
+ "excerpt": "- [Create a channel](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/creating-a-channel/create-a-channel)\n\n- [Mark messages as read](https://sendbird.com/docs/chat/sdk/v4/javascript/message/managing-read-status-in-a-group-channel/m",
2039
+ "intents": "",
2040
+ "terms": "create channel https sendbird com docs chat sdk v4 javascript mark message as read managing status in group send typing indicators other member these tutorials adapt official workflows current cli behavior they are not copy of code or claim one coverage every capability all html next scenario tutorial team thread",
2041
+ "path": "/cli-sections/a07a5c65bff216b5ca07bf4d.md",
2042
+ "sha256": "31a92ab8fa382a0f608de94e16f0db03f7193b0ddf78b4cc77f621c711369d11",
2043
+ "bytes": 715
2044
+ },
2045
+ {
2046
+ "id": "tutorial/tutorial-team-thread#intro",
2047
+ "title": "03. Files, replies, and reactions in team chat",
2048
+ "description": "Reply to a task, share a file, and verify reactions.",
2049
+ "source": "site/tutorials.ts",
2050
+ "url": "/tutorial-team-thread.html",
2051
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 3 OF 6\n\n03. Files, replies, and reactions in team chat Reply to a task, share a file, and verify reactions.\n\nAbout 15 minutes Terminals A / B Official docs checked 2026-09-21",
2052
+ "intents": "team conversation file reply reaction",
2053
+ "terms": "official docs cli workflow 3 of 6 03 files replies and reaction in team chat reply task share file verify about 15 minutes terminals b checked 2026 09 21",
2054
+ "path": "/cli-sections/d1f0316132459d5848143a8e.md",
2055
+ "sha256": "9767f746d4073992a31dc2c3e05baadb3d55dbda4cd46bf87bb661ed987d92aa",
2056
+ "bytes": 261
2057
+ },
2058
+ {
2059
+ "id": "tutorial/tutorial-team-thread#prepare",
2060
+ "title": "03. Files, replies, and reactions in team chat · Before you start",
2061
+ "description": "Reply to a task, share a file, and verify reactions.",
2062
+ "source": "site/tutorials.ts",
2063
+ "url": "/tutorial-team-thread.html#prepare",
2064
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nComplete shared setup with Group access. Run reactions only when the app ",
2065
+ "intents": "",
2066
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently with group access reaction only when app supports them registered emoji key is known",
2067
+ "path": "/cli-sections/2090b495678f72ef42286120.md",
2068
+ "sha256": "ca6dfb6f857119c29ca48b315796e4e801f6b93487768bc831cb494843b4dc0a",
2069
+ "bytes": 361
2070
+ },
2071
+ {
2072
+ "id": "tutorial/tutorial-team-thread#mapping",
2073
+ "title": "03. Files, replies, and reactions in team chat · Official workflow → CLI",
2074
+ "description": "Reply to a task, share a file, and verify reactions.",
2075
+ "source": "site/tutorials.ts",
2076
+ "url": "/tutorial-team-thread.html#mapping",
2077
+ "excerpt": "Official step | CLI equivalent |\n\nsendUserMessage / parentMessageId | message send → message reply |\n\ngetThreadedMessagesByTimestamp | message thread |\n\nsendFileMessage | message file --file |\n\naddReaction / deleteReaction | message re",
2078
+ "intents": "",
2079
+ "terms": "official step cli equivalent sendusermessage parentmessageid message send reply getthreadedmessagesbytimestamp thread sendfilemessage file addreaction deletereaction reaction add remove",
2080
+ "path": "/cli-sections/8d1c14c2f9c103cf6139cf5b.md",
2081
+ "sha256": "6c8a98d51b25754e3b8d73baa67d81ac51db8431d22beb0b4b8aa83c986e6650",
2082
+ "bytes": 341
2083
+ },
2084
+ {
2085
+ "id": "tutorial/tutorial-team-thread#step-1",
2086
+ "title": "03. Files, replies, and reactions in team chat · 1. Create a team channel and parent message",
2087
+ "description": "Reply to a task, share a file, and verify reactions.",
2088
+ "source": "site/tutorials.ts",
2089
+ "url": "/tutorial-team-thread.html#step-1",
2090
+ "excerpt": "Terminal A\n\nThis channel is independent of the other tutorials.\n\n```text\nadmin chat channel create --type 'group' --name 'Tutorial team' --user-ids \"$TUTORIAL_USERS\" --is-distinct false --is-public false > \"$TUTORIAL_DIR/team.json\" && cat \"",
2091
+ "intents": "",
2092
+ "terms": "terminal this channel is independent of other tutorials text admin chat create type group name tutorial team user ids distinct false public dir json cat alice message send id please review draft parent expected result thread s root",
2093
+ "path": "/cli-sections/d43c562b92e381fe4b3bb95f.md",
2094
+ "sha256": "c2add20bb2df2f654ca9bdcd976d6a6b768fb1e4cee13e999adfb3b92572bb0d",
2095
+ "bytes": 602
2096
+ },
2097
+ {
2098
+ "id": "tutorial/tutorial-team-thread#step-2",
2099
+ "title": "03. Files, replies, and reactions in team chat · 2. Bob posts a reply",
2100
+ "description": "Reply to a task, share a file, and verify reactions.",
2101
+ "source": "site/tutorials.ts",
2102
+ "url": "/tutorial-team-thread.html#step-2",
2103
+ "excerpt": "Terminal B\n\nReply to the original message ID; do not use a reply as another parent.\n\n```text\nbob chat message reply --type 'group' --id \"$(channel_id team)\" --message-id \"$(message_id parent)\" --message 'I will review it' > \"$TUTORIAL_DIR/r",
2104
+ "intents": "",
2105
+ "terms": "terminal b reply original message id not use as another parent text bob chat type group channel team will review it tutorial dir json cat expected result matches",
2106
+ "path": "/cli-sections/f1f7dfc048d8e2ee8f91934a.md",
2107
+ "sha256": "ae7be6e1eccbc29d4f83c6101b47cf62e28d862a1084748358b4e8fd7d5ed0a3",
2108
+ "bytes": 445
2109
+ },
2110
+ {
2111
+ "id": "tutorial/tutorial-team-thread#step-3",
2112
+ "title": "03. Files, replies, and reactions in team chat · 3. Read the thread",
2113
+ "description": "Reply to a task, share a file, and verify reactions.",
2114
+ "source": "site/tutorials.ts",
2115
+ "url": "/tutorial-team-thread.html#step-3",
2116
+ "excerpt": "Terminal A\n\nRead replies attached to this parent instead of all channel history.\n\n```text\nalice chat message thread --type 'group' --id \"$(channel_id team)\" --message-id \"$(message_id parent)\" --limit 20\n```\n\n**Expected result** parent.mess",
2117
+ "intents": "",
2118
+ "terms": "terminal read replies attached this parent instead of all channel history text alice chat message thread type group id team limit 20 expected result must match original and include bob s reply mismatched or empty list after acknowledged fails verification follow next before for larger threads deduplicate by",
2119
+ "path": "/cli-sections/9099737b90036c5918ebbd52.md",
2120
+ "sha256": "91ba072b4700ce24abc9b69a2b9f13c761993bdb849fd4517bbb941254dc2b96",
2121
+ "bytes": 535
2122
+ },
2123
+ {
2124
+ "id": "tutorial/tutorial-team-thread#step-4",
2125
+ "title": "03. Files, replies, and reactions in team chat · 4. Create a small exercise file",
2126
+ "description": "Reply to a task, share a file, and verify reactions.",
2127
+ "source": "site/tutorials.ts",
2128
+ "url": "/tutorial-team-thread.html#step-4",
2129
+ "excerpt": "Terminal A\n\nCreate test text instead of uploading a personal file.\n\n```text\nprintf \"%s\\n\" \"Tutorial draft\" > \"$TUTORIAL_DIR/draft.txt\"\n```\n\n**Expected result** draft.txt exists inside TUTORIAL_DIR.",
2130
+ "intents": "",
2131
+ "terms": "terminal create test text instead of uploading personal file printf s n tutorial draft dir txt expected result exists inside",
2132
+ "path": "/cli-sections/46f0b4e5b3cfbd55e5813124.md",
2133
+ "sha256": "2d9cc19b815fbbc89c9c10e01c19e32f20a12be5e0eedaa5d5658f146d2ca157",
2134
+ "bytes": 283
2135
+ },
2136
+ {
2137
+ "id": "tutorial/tutorial-team-thread#step-5",
2138
+ "title": "03. Files, replies, and reactions in team chat · 5. Share the file and read it back",
2139
+ "description": "Reply to a task, share a file, and verify reactions.",
2140
+ "source": "site/tutorials.ts",
2141
+ "url": "/tutorial-team-thread.html#step-5",
2142
+ "excerpt": "Terminal A\n\nUpload only the file created for this exercise.\n\n```text\nalice chat message file --type 'group' --id \"$(channel_id team)\" --file \"$TUTORIAL_DIR/draft.txt\" --file-name 'draft.txt' --mime-type 'text/plain' > \"$TUTORIAL_DIR/file.js",
2143
+ "intents": "",
2144
+ "terms": "terminal upload only file created for this exercise text alice chat message type group id channel team tutorial dir draft txt name mime plain json cat bob get expected result check and positive size access encrypted url is not s success criterion",
2145
+ "path": "/cli-sections/9f6e862a1a9f0dfc5b2586a9.md",
2146
+ "sha256": "62944e1c149543aae579fab794a1e7e2bb6970d8f32a403c5c6ce7c2394c9d8a",
2147
+ "bytes": 616
2148
+ },
2149
+ {
2150
+ "id": "tutorial/tutorial-team-thread#step-6",
2151
+ "title": "03. Files, replies, and reactions in team chat · 6. Add and remove a reaction",
2152
+ "description": "Reply to a task, share a file, and verify reactions.",
2153
+ "source": "site/tutorials.ts",
2154
+ "url": "/tutorial-team-thread.html#step-6",
2155
+ "excerpt": "Terminal B Only when reactions are supported and a registered emoji key exists\n\nSet the key variable from the app's actual catalog first. Never assume an example key is registered.\n\n```text\nalice chat sdk emoji list > \"$TUTORIAL_DIR/emoji.",
2156
+ "intents": "",
2157
+ "terms": "terminal b only when reaction are supported and registered emoji key exists set variable from app s actual catalog first never assume example is text alice chat sdk list tutorial dir json node e const x parse require fs readfilesync process argv 1 utf8 if ok result emojis length exit stdout write 0 echo no was verified not run step bob message add type group id channel team parent get remove expected after adding matching includes in user ids removal",
2158
+ "path": "/cli-sections/77bbc3cbd947d4f7d572db2a.md",
2159
+ "sha256": "ca24cf63ede72e2b54e1d66d63d83925d8e53b7222fcbe163aaeafa0bed117c7",
2160
+ "bytes": 1281
2161
+ },
2162
+ {
2163
+ "id": "tutorial/tutorial-team-thread#complete",
2164
+ "title": "03. Files, replies, and reactions in team chat · Completion criteria",
2165
+ "description": "Reply to a task, share a file, and verify reactions.",
2166
+ "source": "site/tutorials.ts",
2167
+ "url": "/tutorial-team-thread.html#complete",
2168
+ "excerpt": "Read back parent/reply linkage and the file message. Record reaction add/remove separately only when its prerequisites were met.\n\nRecord completion only for observed server responses/events. Parser validation and dry-run do not establish ac",
2169
+ "intents": "",
2170
+ "terms": "read back parent reply linkage and file message record reaction add remove separately only when its prerequisites were met completion for observed server responses events parser validation dry run not establish actual delivery",
2171
+ "path": "/cli-sections/d47b61edf840a9845c8324d5.md",
2172
+ "sha256": "4c8e0ea9d95bd4efe4d9f45ac0a56c0812a023ddfda039749674a3a850ab6501",
2173
+ "bytes": 328
2174
+ },
2175
+ {
2176
+ "id": "tutorial/tutorial-team-thread#cleanup",
2177
+ "title": "03. Files, replies, and reactions in team chat · Clean up the exercise channel",
2178
+ "description": "Reply to a task, share a file, and verify reactions.",
2179
+ "source": "site/tutorials.ts",
2180
+ "url": "/tutorial-team-thread.html#cleanup",
2181
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
2182
+ "intents": "",
2183
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type group id team yes",
2184
+ "path": "/cli-sections/8b49670f79c3035504757387.md",
2185
+ "sha256": "1d7603c82e6ed50f89069185854901363a3e786cc25acff19930886c75f8214d",
2186
+ "bytes": 385
2187
+ },
2188
+ {
2189
+ "id": "tutorial/tutorial-team-thread#differences",
2190
+ "title": "03. Files, replies, and reactions in team chat · Equivalent outcomes, different implementation",
2191
+ "description": "Reply to a task, share a file, and verify reactions.",
2192
+ "source": "site/tutorials.ts",
2193
+ "url": "/tutorial-team-thread.html#differences",
2194
+ "excerpt": "Local files are limited to 25 MiB. Thread pages contain first-level replies and may overlap. Read real keys with chat sdk emoji list. Emoji catalog administration is outside this tutorial.\n\nTimeout does not prove a write was never applied. ",
2195
+ "intents": "",
2196
+ "terms": "local files are limited 25 mib thread pages contain first level replies and may overlap read real keys with chat sdk emoji list catalog administration is outside this tutorial timeout does not prove write was never applied exact id if watch ended restart wait for ready before another authorized send writing these did message customer channel",
2197
+ "path": "/cli-sections/0e7b7f65292bb3dcab4f0b72.md",
2198
+ "sha256": "bee768eebf8a1b146eeb47eaac450336c343ccc8d37efafad35823c9a818bd6a",
2199
+ "bytes": 497
2200
+ },
2201
+ {
2202
+ "id": "tutorial/tutorial-team-thread#sources",
2203
+ "title": "03. Files, replies, and reactions in team chat · Official sources",
2204
+ "description": "Reply to a task, share a file, and verify reactions.",
2205
+ "source": "site/tutorials.ts",
2206
+ "url": "/tutorial-team-thread.html#sources",
2207
+ "excerpt": "- [Send a message](https://sendbird.com/docs/chat/sdk/v4/javascript/message/sending-a-message/send-a-message)\n\n- [Create a message thread](https://sendbird.com/docs/chat/sdk/v4/javascript/message/using-message-threading/create-a-message-thr",
2208
+ "intents": "",
2209
+ "terms": "send message https sendbird com docs chat sdk v4 javascript create thread using threading react managing in group channel these tutorials adapt official workflows current cli behavior they are not copy of code or claim one coverage every capability all html next scenario tutorial invitations",
2210
+ "path": "/cli-sections/cc2c931b6f17610887fe1a64.md",
2211
+ "sha256": "7da8f31461f20455582800e914646b0a0ad8cbe05c1d12739be204d3f4384b23",
2212
+ "bytes": 696
2213
+ },
2214
+ {
2215
+ "id": "tutorial/tutorial-invitations#intro",
2216
+ "title": "04. Private group invitations and leaving",
2217
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2218
+ "source": "site/tutorials.ts",
2219
+ "url": "/tutorial-invitations.html",
2220
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 4 OF 6\n\n04. Private group invitations and leaving Distinguish automatically accepted invitations from explicit acceptance.\n\nAbout 10 minutes Terminals A / B Official docs checked 2026-09-21",
2221
+ "intents": "invite private group",
2222
+ "terms": "official docs cli workflow 4 of 6 04 private group invitations and leave distinguish automatically accepted from explicit acceptance about 10 minutes terminals b checked 2026 09 21",
2223
+ "path": "/cli-sections/cfed6bdf37c1260ddba75cb8.md",
2224
+ "sha256": "182c7921c2376a83a6fb62510bb280c4f02b2b3393f556e16da85ca39351a2a7",
2225
+ "bytes": 271
2226
+ },
2227
+ {
2228
+ "id": "tutorial/tutorial-invitations#prepare",
2229
+ "title": "04. Private group invitations and leaving · Before you start",
2230
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2231
+ "source": "site/tutorials.ts",
2232
+ "url": "/tutorial-invitations.html#prepare",
2233
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nComplete shared setup. The administrator needs member read/invite permiss",
2234
+ "intents": "",
2235
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently administrator needs member read invite permissions bob must not initially belong this",
2236
+ "path": "/cli-sections/d28c4f993cc95dd3ca3098c4.md",
2237
+ "sha256": "5a2d4de7b80c6bbefe203956ed5d8a7eb360fbc573cc2f8da1c4deae695de0de",
2238
+ "bytes": 358
2239
+ },
2240
+ {
2241
+ "id": "tutorial/tutorial-invitations#mapping",
2242
+ "title": "04. Private group invitations and leaving · Official workflow → CLI",
2243
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2244
+ "source": "site/tutorials.ts",
2245
+ "url": "/tutorial-invitations.html#mapping",
2246
+ "excerpt": "Official step | CLI equivalent |\n\nSend invitation | Dashboard members invite |\n\nBranch on autoAccept | Inspect Bob.state in members list |\n\nacceptInvitation / leave | Bob invitation accept / channel leave |",
2247
+ "intents": "",
2248
+ "terms": "official step cli equivalent send invitation dashboard member invite branch on autoaccept inspect bob state in list acceptinvitation leave accept channel",
2249
+ "path": "/cli-sections/b21434c875162a70712052d5.md",
2250
+ "sha256": "a8ebeabc1947eb33340c023a4865506a8c41fb712943c6ac6f97dcf09287a08c",
2251
+ "bytes": 285
2252
+ },
2253
+ {
2254
+ "id": "tutorial/tutorial-invitations#step-1",
2255
+ "title": "04. Private group invitations and leaving · 1. Create a private group containing only Alice",
2256
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2257
+ "source": "site/tutorials.ts",
2258
+ "url": "/tutorial-invitations.html#step-1",
2259
+ "excerpt": "Terminal A\n\nDo not include Bob initially.\n\n```text\nadmin chat channel create --type 'group' --name 'Tutorial invite' --user-ids \"$TUTORIAL_ALICE_ONLY\" --is-distinct false --is-public false > \"$TUTORIAL_DIR/invite.json\" && cat \"$TUTORIAL_DIR",
2260
+ "intents": "",
2261
+ "terms": "terminal not include bob initially text admin chat channel create type group name tutorial invite user ids alice only is distinct false public dir json cat expected result member read contains and",
2262
+ "path": "/cli-sections/a117f80bade5e3e36ceb43ee.md",
2263
+ "sha256": "abcc5563590046b429714a414b75353787ee62367a15ecdfea3c067c1d6dac2e",
2264
+ "bytes": 420
2265
+ },
2266
+ {
2267
+ "id": "tutorial/tutorial-invitations#step-2",
2268
+ "title": "04. Private group invitations and leaving · 2. Invite Bob and read membership",
2269
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2270
+ "source": "site/tutorials.ts",
2271
+ "url": "/tutorial-invitations.html#step-2",
2272
+ "excerpt": "Terminal A\n\nInvite Bob through the management API.\n\n```text\nadmin chat channel members invite --type 'group' --id \"$(channel_id invite)\" --user-ids \"$TUTORIAL_BOB_ONLY\"\nadmin chat channel members list --type 'group' --id \"$(channel_id invit",
2273
+ "intents": "",
2274
+ "terms": "terminal invite bob through management api text admin chat channel member type group id user ids tutorial only list limit 20 expected result find state skip acceptance if joined accept invited",
2275
+ "path": "/cli-sections/79e58fccc5ab40c4ab82c6f5.md",
2276
+ "sha256": "11007bd16b84896c55a9d1ed0d0c56ddafe591a236cce40927dd168197885a9d",
2277
+ "bytes": 446
2278
+ },
2279
+ {
2280
+ "id": "tutorial/tutorial-invitations#step-3",
2281
+ "title": "04. Private group invitations and leaving · 3. Accept the pending invitation",
2282
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2283
+ "source": "site/tutorials.ts",
2284
+ "url": "/tutorial-invitations.html#step-3",
2285
+ "excerpt": "Terminal B Only when Bob.state is invited\n\nNever repeat acceptance unconditionally for an already joined user.\n\n```text\nbob chat channel invitation accept --type 'group' --id \"$(channel_id invite)\"\n```\n\n**Expected result** channel_url matc",
2286
+ "intents": "",
2287
+ "terms": "terminal b only when bob state is invited never repeat acceptance unconditionally for already joined user text chat channel invitation accept type group id invite expected result url matches not test rejection by calling and decline consecutively on this same",
2288
+ "path": "/cli-sections/d2cc73b75f3f4fbe845e5300.md",
2289
+ "sha256": "67f39d06735119b419b65977e865dfb1821a4d9ad7a227d6b8ea4b70ea325d69",
2290
+ "bytes": 437
2291
+ },
2292
+ {
2293
+ "id": "tutorial/tutorial-invitations#step-4",
2294
+ "title": "04. Private group invitations and leaving · 4. Send after joining",
2295
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2296
+ "source": "site/tutorials.ts",
2297
+ "url": "/tutorial-invitations.html#step-4",
2298
+ "excerpt": "Terminal B\n\nConfirm joined state before sending.\n\n```text\nbob chat message send --type 'group' --id \"$(channel_id invite)\" --message 'Thanks for the invitation' > \"$TUTORIAL_DIR/invite-first.json\" && cat \"$TUTORIAL_DIR/invite-first.json\"\n``",
2299
+ "intents": "",
2300
+ "terms": "terminal b confirm joined state before send text bob chat message type group id channel invite thanks for invitation tutorial dir first json cat expected result sender user is and positive",
2301
+ "path": "/cli-sections/32ccace0ef1a19d11034acfd.md",
2302
+ "sha256": "561028bb7da8a95b62c0841f6ba69ac60d9764ac7bc75f22ba4f4d1907e59635",
2303
+ "bytes": 383
2304
+ },
2305
+ {
2306
+ "id": "tutorial/tutorial-invitations#step-5",
2307
+ "title": "04. Private group invitations and leaving · 5. Bob leaves and the administrator verifies",
2308
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2309
+ "source": "site/tutorials.ts",
2310
+ "url": "/tutorial-invitations.html#step-5",
2311
+ "excerpt": "Terminal B\n\nLeave only this exercise's channel.\n\n```text\nbob chat channel leave --type 'group' --id \"$(channel_id invite)\" --yes\n```\n\n**Expected result** Verify left: true.",
2312
+ "intents": "",
2313
+ "terms": "terminal b leave only this exercise s channel text bob chat type group id invite yes expected result verify left true",
2314
+ "path": "/cli-sections/aceaf079ad5236ebbc7ea3bd.md",
2315
+ "sha256": "68af2278be3c25fecf4e7e0f9924e5aa70f4b9d93a4d159b2dc846c5837ce2ee",
2316
+ "bytes": 266
2317
+ },
2318
+ {
2319
+ "id": "tutorial/tutorial-invitations#step-6",
2320
+ "title": "04. Private group invitations and leaving · 6. Confirm membership ended",
2321
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2322
+ "source": "site/tutorials.ts",
2323
+ "url": "/tutorial-invitations.html#step-6",
2324
+ "excerpt": "Terminal A\n\nThe administrator reads members again.\n\n```text\nadmin chat channel members list --type 'group' --id \"$(channel_id invite)\" --limit 20\n```\n\n**Expected result** Bob no longer appears as a joined member.",
2325
+ "intents": "",
2326
+ "terms": "terminal administrator reads member again text admin chat channel list type group id invite limit 20 expected result bob no longer appears as joined",
2327
+ "path": "/cli-sections/98fa8f5aa56d4c85e901b4bb.md",
2328
+ "sha256": "ee8ea27e63af5122aa9aadaf2cb57fd3b36ab131ba083cf7e0aa672b8e280ad5",
2329
+ "bytes": 289
2330
+ },
2331
+ {
2332
+ "id": "tutorial/tutorial-invitations#complete",
2333
+ "title": "04. Private group invitations and leaving · Completion criteria",
2334
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2335
+ "source": "site/tutorials.ts",
2336
+ "url": "/tutorial-invitations.html#complete",
2337
+ "excerpt": "Follow the observed invitation state, verify Bob's send, then read membership after leaving. Without a pending invitation, record explicit acceptance as unverified.\n\nRecord completion only for observed server responses/events. Parser valida",
2338
+ "intents": "",
2339
+ "terms": "follow observed invitation state verify bob s send then read membership after leave without pending record explicit acceptance as unverified completion only for server responses events parser validation and dry run not establish actual delivery",
2340
+ "path": "/cli-sections/ff5e03eb3db60c5ec3bf611e.md",
2341
+ "sha256": "96b6813005998e9e91b70cf10192aa833aaa5548893a56cddc752e5ee191769f",
2342
+ "bytes": 359
2343
+ },
2344
+ {
2345
+ "id": "tutorial/tutorial-invitations#cleanup",
2346
+ "title": "04. Private group invitations and leaving · Clean up the exercise channel",
2347
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2348
+ "source": "site/tutorials.ts",
2349
+ "url": "/tutorial-invitations.html#cleanup",
2350
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
2351
+ "intents": "",
2352
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type group id invite yes",
2353
+ "path": "/cli-sections/91b562f65c339d67bbbd84e0.md",
2354
+ "sha256": "c6770c189081c67a91304fac58a42834089147c195baefe469569783051ed4ca",
2355
+ "bytes": 382
2356
+ },
2357
+ {
2358
+ "id": "tutorial/tutorial-invitations#differences",
2359
+ "title": "04. Private group invitations and leaving · Equivalent outcomes, different implementation",
2360
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2361
+ "source": "site/tutorials.ts",
2362
+ "url": "/tutorial-invitations.html#differences",
2363
+ "excerpt": "Read/change per-user auto-accept with chat sdk user invitation get/set. This basic exercise follows the current state without changing app-wide policy. To test explicit acceptance, change only this run's Bob with --auto-accept false and res",
2364
+ "intents": "",
2365
+ "terms": "read change per user auto accept with chat sdk invitation get set this basic exercise follows current state without changing app wide policy test explicit acceptance only run s bob false and restore original afterward reproduce for invited invitations use dashboard administration not member permissions timeout does prove write was never applied exact id if watch ended restart wait ready before another authorized send writing these pages did message customer channel",
2366
+ "path": "/cli-sections/33de470a068f938ad4480e96.md",
2367
+ "sha256": "5cdc296d5f3f2abc62f857d54ad6e563ee65135983ac7028bef89f93c28afbb6",
2368
+ "bytes": 687
2369
+ },
2370
+ {
2371
+ "id": "tutorial/tutorial-invitations#sources",
2372
+ "title": "04. Private group invitations and leaving · Official sources",
2373
+ "description": "Distinguish automatically accepted invitations from explicit acceptance.",
2374
+ "source": "site/tutorials.ts",
2375
+ "url": "/tutorial-invitations.html#sources",
2376
+ "excerpt": "- [Accept or decline an invitation](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/inviting-users-to-a-group-channel/accept-or-decline-an-invitation)\n\n- [Channel overview](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/o",
2377
+ "intents": "",
2378
+ "terms": "accept or decline invitation https sendbird com docs chat sdk v4 javascript channel inviting user group overview these tutorials adapt official workflows current cli behavior they are not copy of code claim one coverage every capability all html next scenario tutorial supergroup",
2379
+ "path": "/cli-sections/b6892da5ba1f074d78397e73.md",
2380
+ "sha256": "c869a63b3dce2630492cd90f082237dd6a91de4507c0c48985ea31a8a1429a01",
2381
+ "bytes": 563
2382
+ },
2383
+ {
2384
+ "id": "tutorial/tutorial-supergroup#intro",
2385
+ "title": "05. Public Supergroup community",
2386
+ "description": "Join a public community without invitation, chat, then leave.",
2387
+ "source": "site/tutorials.ts",
2388
+ "url": "/tutorial-supergroup.html",
2389
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 5 OF 6\n\n05. Public Supergroup community Join a public community without invitation, chat, then leave.\n\nAbout 10 minutes Terminals A / B Official docs checked 2026-09-21",
2390
+ "intents": "supergroup community",
2391
+ "terms": "official docs cli workflow 5 of 6 05 public supergroup community join without invitation chat then leave about 10 minutes terminals b checked 2026 09 21",
2392
+ "path": "/cli-sections/66e23c55685ed79c05fb9f1b.md",
2393
+ "sha256": "99e7b731ab25e72e38411d3915ef6b558f43b98ed04a378cb7f299e1ca223c3b",
2394
+ "bytes": 240
2395
+ },
2396
+ {
2397
+ "id": "tutorial/tutorial-supergroup#prepare",
2398
+ "title": "05. Public Supergroup community · Before you start",
2399
+ "description": "Join a public community without invitation, chat, then leave.",
2400
+ "source": "site/tutorials.ts",
2401
+ "url": "/tutorial-supergroup.html#prepare",
2402
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nComplete setup with an app entitled to Supergroup. Prefer an authorized S",
2403
+ "intents": "",
2404
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently with app entitled supergroup prefer authorized standard chat test verify feature support separately delight regions on unsupported responses inspect plan features never substitute regular group claim success",
2405
+ "path": "/cli-sections/a8a431b26c6623ba43b9efc3.md",
2406
+ "sha256": "aa417d5dbebe2f1a6d3f1e2469cd12c8b84a0a1553854bbbf7e9c712bef3de7a",
2407
+ "bytes": 485
2408
+ },
2409
+ {
2410
+ "id": "tutorial/tutorial-supergroup#mapping",
2411
+ "title": "05. Public Supergroup community · Official workflow → CLI",
2412
+ "description": "Join a public community without invitation, chat, then leave.",
2413
+ "source": "site/tutorials.ts",
2414
+ "url": "/tutorial-supergroup.html#mapping",
2415
+ "excerpt": "Official step | CLI equivalent |\n\nisSuper: true / isPublic: true | create --type supergroup --is-public true |\n\nJoin the public channel | Bob channel join |\n\nReceive and leave | Bob watch → Alice send → Bob leave |",
2416
+ "intents": "",
2417
+ "terms": "official step cli equivalent issuper true ispublic create type supergroup is public join channel bob receive and leave watch alice send",
2418
+ "path": "/cli-sections/7d6cec47f0a18939ade2bc6c.md",
2419
+ "sha256": "69f69b185284433d01aa3edb34abab46b3f06ad088261a17922ac12c06dc0bee",
2420
+ "bytes": 287
2421
+ },
2422
+ {
2423
+ "id": "tutorial/tutorial-supergroup#step-1",
2424
+ "title": "05. Public Supergroup community · 1. Create a public Supergroup",
2425
+ "description": "Join a public community without invitation, chat, then leave.",
2426
+ "source": "site/tutorials.ts",
2427
+ "url": "/tutorial-supergroup.html#step-1",
2428
+ "excerpt": "Terminal A\n\nInclude Alice initially; Bob will join explicitly.\n\n```text\nadmin chat channel create --type 'supergroup' --name 'Tutorial community' --user-ids \"$TUTORIAL_ALICE_ONLY\" --is-distinct false --is-public true > \"$TUTORIAL_DIR/commun",
2429
+ "intents": "",
2430
+ "terms": "terminal include alice initially bob will join explicitly text admin chat channel create type supergroup name tutorial community user ids only is distinct false public true dir json cat expected result must report both super and otherwise stop inspect request region app features cleanup uses actual verified in creation readback",
2431
+ "path": "/cli-sections/b1641b4ecc67d0382e042341.md",
2432
+ "sha256": "1c083263e481de7cde3929e6f646f8e952680b86f1f5af01a26b115091ef03a4",
2433
+ "bytes": 564
2434
+ },
2435
+ {
2436
+ "id": "tutorial/tutorial-supergroup#step-2",
2437
+ "title": "05. Public Supergroup community · 2. Bob joins publicly",
2438
+ "description": "Join a public community without invitation, chat, then leave.",
2439
+ "source": "site/tutorials.ts",
2440
+ "url": "/tutorial-supergroup.html#step-2",
2441
+ "excerpt": "Terminal B\n\nThis differs from accepting a private group invitation.\n\n```text\nbob chat channel join --type 'supergroup' --id \"$(channel_id community)\"\n```\n\n**Expected result** Verify type: supergroup and the intended channel_url.",
2442
+ "intents": "",
2443
+ "terms": "terminal b this differs from accepting private group invitation text bob chat channel join type supergroup id community expected result verify and intended url",
2444
+ "path": "/cli-sections/f33e2c52ecf4309de3dbdaae.md",
2445
+ "sha256": "7e6784b9676359b3a59f0f213e74ff3707c95dd08f2ec5b264be7860ff733950",
2446
+ "bytes": 289
2447
+ },
2448
+ {
2449
+ "id": "tutorial/tutorial-supergroup#step-3",
2450
+ "title": "05. Public Supergroup community · 3. Bob starts receiving events",
2451
+ "description": "Join a public community without invitation, chat, then leave.",
2452
+ "source": "site/tutorials.ts",
2453
+ "url": "/tutorial-supergroup.html#step-3",
2454
+ "excerpt": "Terminal B\n\nWait for ready before switching to terminal A.\n\n```text\nbob chat channel watch --type 'supergroup' --id \"$(channel_id community)\" --seconds 120 --max-events 100\n```\n\n**Expected result** Keep the connection running after ready.",
2455
+ "intents": "",
2456
+ "terms": "terminal b wait for ready before switching text bob chat channel watch type supergroup id community seconds 120 max events 100 expected result keep connection running after",
2457
+ "path": "/cli-sections/c924a3267b58472cc66e2d1a.md",
2458
+ "sha256": "d9009a161d04abdcac0292f1c811537ecfc3e259a380968d069ee425748a451c",
2459
+ "bytes": 308
2460
+ },
2461
+ {
2462
+ "id": "tutorial/tutorial-supergroup#step-4",
2463
+ "title": "05. Public Supergroup community · 4. Alice sends to the community",
2464
+ "description": "Join a public community without invitation, chat, then leave.",
2465
+ "source": "site/tutorials.ts",
2466
+ "url": "/tutorial-supergroup.html#step-4",
2467
+ "excerpt": "Terminal A\n\nBoth terminals use type supergroup.\n\n```text\nalice chat message send --type 'supergroup' --id \"$(channel_id community)\" --message 'Welcome to the community' > \"$TUTORIAL_DIR/community-first.json\" && cat \"$TUTORIAL_DIR/community-",
2468
+ "intents": "",
2469
+ "terms": "terminal both terminals use type supergroup text alice chat message send id channel community welcome tutorial dir first json cat expected result s matches b received data",
2470
+ "path": "/cli-sections/774417537f690e46b33639c2.md",
2471
+ "sha256": "9c7176d808233293d579c1d6256b41314587aba859e87db07b7d4ecd29cc2d9a",
2472
+ "bytes": 408
2473
+ },
2474
+ {
2475
+ "id": "tutorial/tutorial-supergroup#step-5",
2476
+ "title": "05. Public Supergroup community · 5. Bob stops and leaves",
2477
+ "description": "Join a public community without invitation, chat, then leave.",
2478
+ "source": "site/tutorials.ts",
2479
+ "url": "/tutorial-supergroup.html#step-5",
2480
+ "excerpt": "Terminal B\n\nStop watch with Ctrl+C, then execute leave.\n\n```text\nbob chat channel leave --type 'supergroup' --id \"$(channel_id community)\" --yes\n```\n\n**Expected result** Verify left: true. Closing a WebSocket does not itself leave a Group c",
2481
+ "intents": "",
2482
+ "terms": "terminal b stop watch with ctrl c then execute leave text bob chat channel type supergroup id community yes expected result verify left true closing websocket does not itself group",
2483
+ "path": "/cli-sections/dacafb8d2995c358ab4a8a1a.md",
2484
+ "sha256": "f3e414ac3263fb7523c78ad0b198bdad6f8aa7a70d98303865014e97071d00ce",
2485
+ "bytes": 310
2486
+ },
2487
+ {
2488
+ "id": "tutorial/tutorial-supergroup#complete",
2489
+ "title": "05. Public Supergroup community · Completion criteria",
2490
+ "description": "Join a public community without invitation, chat, then leave.",
2491
+ "source": "site/tutorials.ts",
2492
+ "url": "/tutorial-supergroup.html#complete",
2493
+ "excerpt": "Verify public Supergroup participation, independent recipient events, and explicit leaving.\n\nRecord completion only for observed server responses/events. Parser validation and dry-run do not establish actual delivery.",
2494
+ "intents": "",
2495
+ "terms": "verify public supergroup participation independent recipient events and explicit leave record completion only for observed server responses parser validation dry run not establish actual delivery",
2496
+ "path": "/cli-sections/23fead9c7944d7881dec0b6e.md",
2497
+ "sha256": "93a0195a960dd2405f48793b2b1038bffea745aff1050b149717ce554edaa8a8",
2498
+ "bytes": 276
2499
+ },
2500
+ {
2501
+ "id": "tutorial/tutorial-supergroup#cleanup",
2502
+ "title": "05. Public Supergroup community · Clean up the exercise channel",
2503
+ "description": "Join a public community without invitation, chat, then leave.",
2504
+ "source": "site/tutorials.ts",
2505
+ "url": "/tutorial-supergroup.html#cleanup",
2506
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
2507
+ "intents": "",
2508
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type supergroup id community yes",
2509
+ "path": "/cli-sections/f435eede3d46a09707bacc0f.md",
2510
+ "sha256": "d6a8e53f4761fc4586cb6b7d0d7979a109a63aa641f968c0d1c51e821651cfe9",
2511
+ "bytes": 380
2512
+ },
2513
+ {
2514
+ "id": "tutorial/tutorial-supergroup#differences",
2515
+ "title": "05. Public Supergroup community · Equivalent outcomes, different implementation",
2516
+ "description": "Join a public community without invitation, chat, then leave.",
2517
+ "source": "site/tutorials.ts",
2518
+ "url": "/tutorial-supergroup.html#differences",
2519
+ "excerpt": "This verifies public joining and message exchange, not large-scale load. Distinct channels and regular-Group read receipts/typing are excluded.\n\nTimeout does not prove a write was never applied. Read the exact ID; if watch ended, restart an",
2520
+ "intents": "",
2521
+ "terms": "this verifies public join and message exchange not large scale load distinct channel regular group read receipts typing are excluded timeout does prove write was never applied exact id if watch ended restart wait for ready before another authorized send writing these pages did customer",
2522
+ "path": "/cli-sections/b3618d168ed119dc40bc125b.md",
2523
+ "sha256": "f43efae94822549239d5b421539b1b14f0fcb0588fc9f3d2b35cb5770f41bebe",
2524
+ "bytes": 437
2525
+ },
2526
+ {
2527
+ "id": "tutorial/tutorial-supergroup#sources",
2528
+ "title": "05. Public Supergroup community · Official sources",
2529
+ "description": "Join a public community without invitation, chat, then leave.",
2530
+ "source": "site/tutorials.ts",
2531
+ "url": "/tutorial-supergroup.html#sources",
2532
+ "excerpt": "- [Create a channel](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/creating-a-channel/create-a-channel)\n\n- [Channel overview](https://sendbird.com/docs/chat/sdk/v4/javascript/channel/overview-channel)\n\n- [Channel event handlers](",
2533
+ "intents": "",
2534
+ "terms": "create channel https sendbird com docs chat sdk v4 javascript overview event handlers handler managing add or remove these tutorials adapt official workflows current cli behavior they are not copy of code claim one coverage every capability all html next scenario tutorial message lifecycle",
2535
+ "path": "/cli-sections/3f10c9befd820e4193e63e85.md",
2536
+ "sha256": "3492ec23c876a5c0d2e0e235b10db4e7c6926587d927e55c3dd601ebc3b0b1d4",
2537
+ "bytes": 677
2538
+ },
2539
+ {
2540
+ "id": "tutorial/tutorial-message-lifecycle#intro",
2541
+ "title": "06. Message history, updates, and deletion",
2542
+ "description": "Follow the same message ID through history and changes.",
2543
+ "source": "site/tutorials.ts",
2544
+ "url": "/tutorial-message-lifecycle.html",
2545
+ "excerpt": "OFFICIAL DOCS → CLI WORKFLOW / 6 OF 6\n\n06. Message history, updates, and deletion Follow the same message ID through history and changes.\n\nAbout 10 minutes Terminals A / B Official docs checked 2026-09-21",
2546
+ "intents": "message history edit delete",
2547
+ "terms": "official docs cli workflow 6 of 06 message history updates and deletion follow same id through changes about 10 minutes terminals b checked 2026 09 21",
2548
+ "path": "/cli-sections/233e0111a74ab008e85bbb9e.md",
2549
+ "sha256": "46f4dafabe1259ac8a09dc69d68cc6be9a8680a10c09e39127180122cc084e09",
2550
+ "bytes": 256
2551
+ },
2552
+ {
2553
+ "id": "tutorial/tutorial-message-lifecycle#prepare",
2554
+ "title": "06. Message history, updates, and deletion · Before you start",
2555
+ "description": "Follow the same message ID through history and changes.",
2556
+ "source": "site/tutorials.ts",
2557
+ "url": "/tutorial-message-lifecycle.html#prepare",
2558
+ "excerpt": "Complete [shared setup](/tutorial-setup.html) once and source the same session.sh in both terminals. Each tutorial creates its own channel and can run independently.\n\nComplete shared setup. Use only message IDs created by this scenario, nev",
2559
+ "intents": "",
2560
+ "terms": "complete shared setup tutorial html once and source same session sh in both terminals each creates its own channel can run independently use only message ids created by this scenario never existing customer content",
2561
+ "path": "/cli-sections/532103c73e4880fc3fc9855b.md",
2562
+ "sha256": "df94685645f01638bd4cfbfd2ab59c10614553ad9d7c51f5c5b1784e0ecc2ab9",
2563
+ "bytes": 336
2564
+ },
2565
+ {
2566
+ "id": "tutorial/tutorial-message-lifecycle#mapping",
2567
+ "title": "06. Message history, updates, and deletion · Official workflow → CLI",
2568
+ "description": "Follow the same message ID through history and changes.",
2569
+ "source": "site/tutorials.ts",
2570
+ "url": "/tutorial-message-lifecycle.html#mapping",
2571
+ "excerpt": "Official step | CLI equivalent |\n\nRead before a boundary | message list --limit / --before-id |\n\nupdateUserMessage | Alice message update |\n\nonMessageUpdated / onMessageDeleted | Change events in Bob's watch |\n\ndeleteMessage | Sender m",
2572
+ "intents": "",
2573
+ "terms": "official step cli equivalent read before boundary message list limit id updateusermessage alice update onmessageupdated onmessagedeleted change events in bob s watch deletemessage sender delete yes",
2574
+ "path": "/cli-sections/0221a9c1356c64885bbf8356.md",
2575
+ "sha256": "e72ec7c24c732fe5f656bc9c24c6c08c45338f4e907d4b15e976b28e5dcecbc0",
2576
+ "bytes": 337
2577
+ },
2578
+ {
2579
+ "id": "tutorial/tutorial-message-lifecycle#step-1",
2580
+ "title": "06. Message history, updates, and deletion · 1. Prepare a new channel with history",
2581
+ "description": "Follow the same message ID through history and changes.",
2582
+ "source": "site/tutorials.ts",
2583
+ "url": "/tutorial-message-lifecycle.html#step-1",
2584
+ "excerpt": "Terminal A\n\nSend three distinguishable messages and save each response.\n\n```text\nadmin chat channel create --type 'group' --name 'Tutorial history' --user-ids \"$TUTORIAL_USERS\" --is-distinct false --is-public false > \"$TUTORIAL_DIR/history.",
2585
+ "intents": "",
2586
+ "terms": "terminal send three distinguishable message and save each response text admin chat channel create type group name tutorial history user ids is distinct false public dir json cat alice id first draft one second note two third expected result contains different positive",
2587
+ "path": "/cli-sections/75f809404eaae40ffb6a8807.md",
2588
+ "sha256": "1a2ffde98f7a2136a7ec8d08b3ad20c70777f2f11a4864554b5ef368be938820",
2589
+ "bytes": 950
2590
+ },
2591
+ {
2592
+ "id": "tutorial/tutorial-message-lifecycle#step-2",
2593
+ "title": "06. Message history, updates, and deletion · 2. Read the newest and next pages",
2594
+ "description": "Follow the same message ID through history and changes.",
2595
+ "source": "site/tutorials.ts",
2596
+ "url": "/tutorial-message-lifecycle.html#step-2",
2597
+ "excerpt": "Terminal A\n\nUse a small page size to verify actual pagination.\n\n```text\nalice chat message list --type 'group' --id \"$(channel_id history)\" --limit 2 > \"$TUTORIAL_DIR/history-page.json\" && cat \"$TUTORIAL_DIR/history-page.json\"\nalice chat me",
2598
+ "intents": "",
2599
+ "terms": "terminal use small page size verify actual pagination text alice chat message list type group id channel history limit 2 tutorial dir json cat before value next expected result first contains newest two includes older draft not request another for null cursor compare ids rather than inferring sdk ordering from array position alone",
2600
+ "path": "/cli-sections/01067d18e4c6f3e92c89bedb.md",
2601
+ "sha256": "53d2a4a45dcc3e4c02cea3b7c9b00a3306d90ca09e881af3505624ae8c649344",
2602
+ "bytes": 703
2603
+ },
2604
+ {
2605
+ "id": "tutorial/tutorial-message-lifecycle#step-3",
2606
+ "title": "06. Message history, updates, and deletion · 3. Bob watches changes",
2607
+ "description": "Follow the same message ID through history and changes.",
2608
+ "source": "site/tutorials.ts",
2609
+ "url": "/tutorial-message-lifecycle.html#step-3",
2610
+ "excerpt": "Terminal B\n\nStart watch, wait for ready, then return to A.\n\n```text\nbob chat channel watch --type 'group' --id \"$(channel_id history)\" --seconds 120 --max-events 100\n```\n\n**Expected result** Keep this running while A edits/deletes.",
2611
+ "intents": "",
2612
+ "terms": "terminal b start watch wait for ready then return text bob chat channel type group id history seconds 120 max events 100 expected result keep this running while edits deletes",
2613
+ "path": "/cli-sections/95010f53805914c1ff8ad804.md",
2614
+ "sha256": "591c5b071b127bff092dd5c84bbafc3251c50f49edf0d262f0c43da1c80b1b74",
2615
+ "bytes": 304
2616
+ },
2617
+ {
2618
+ "id": "tutorial/tutorial-message-lifecycle#step-4",
2619
+ "title": "06. Message history, updates, and deletion · 4. Alice edits the original",
2620
+ "description": "Follow the same message ID through history and changes.",
2621
+ "source": "site/tutorials.ts",
2622
+ "url": "/tutorial-message-lifecycle.html#step-4",
2623
+ "excerpt": "Terminal A\n\nEdit only the message sent by Alice.\n\n```text\nalice chat message update --type 'group' --id \"$(channel_id history)\" --message-id \"$(message_id history-one)\" --message 'Final draft'\nalice chat message get --type 'group' --id \"$(c",
2624
+ "intents": "",
2625
+ "terms": "terminal edit only message sent by alice text chat update type group id channel history one final draft get expected result stays same and becomes b receives updated for that",
2626
+ "path": "/cli-sections/4752e0a9e4a1bc54d2020203.md",
2627
+ "sha256": "c3d4d2da8f8dc4aafd485027d2c46612a135bf06412f38eccb0d0e32307e7b01",
2628
+ "bytes": 502
2629
+ },
2630
+ {
2631
+ "id": "tutorial/tutorial-message-lifecycle#step-5",
2632
+ "title": "06. Message history, updates, and deletion · 5. Delete the same message",
2633
+ "description": "Follow the same message ID through history and changes.",
2634
+ "source": "site/tutorials.ts",
2635
+ "url": "/tutorial-message-lifecycle.html#step-5",
2636
+ "excerpt": "Terminal A\n\nPreview the exact target, then delete only this exercise message.\n\n```text\nalice chat message delete --type 'group' --id \"$(channel_id history)\" --message-id \"$(message_id history-one)\" --dry-run\nalice chat message delete --type",
2637
+ "intents": "",
2638
+ "terms": "terminal preview exact target then delete only this exercise message text alice chat type group id channel history one dry run yes expected result verify deleted true and b s data must match",
2639
+ "path": "/cli-sections/4944f08cab8eaf24a9873c61.md",
2640
+ "sha256": "61e862b2417d30ff5a9ecb6cb498f332f4cbbe67dd77230e5473c4141e0ecef7",
2641
+ "bytes": 514
2642
+ },
2643
+ {
2644
+ "id": "tutorial/tutorial-message-lifecycle#step-6",
2645
+ "title": "06. Message history, updates, and deletion · 6. Verify post-deletion read failure",
2646
+ "description": "Follow the same message ID through history and changes.",
2647
+ "source": "site/tutorials.ts",
2648
+ "url": "/tutorial-message-lifecycle.html#step-6",
2649
+ "excerpt": "Terminal A\n\nThis step must fail. Do not resend or create a replacement message to hide the result.\n\n```text\nalice chat message get --type 'group' --id \"$(channel_id history)\" --message-id \"$(message_id history-one)\"\n```\n\n**Expected result**",
2650
+ "intents": "",
2651
+ "terms": "terminal this step must fail not resend or create replacement message hide result text alice chat get type group id channel history one expected expect e found sdk s resource missing code stop b with ctrl c",
2652
+ "path": "/cli-sections/91580fba76ed352e09473774.md",
2653
+ "sha256": "7ebeeb480dc668aba891eeaff7c2d50e299ba8f6f261589cec219fd7e806e6d5",
2654
+ "bytes": 402
2655
+ },
2656
+ {
2657
+ "id": "tutorial/tutorial-message-lifecycle#complete",
2658
+ "title": "06. Message history, updates, and deletion · Completion criteria",
2659
+ "description": "Follow the same message ID through history and changes.",
2660
+ "source": "site/tutorials.ts",
2661
+ "url": "/tutorial-message-lifecycle.html#complete",
2662
+ "excerpt": "Verify ID-based pagination, an edit retaining the ID, deletion events, and post-deletion absence.\n\nRecord completion only for observed server responses/events. Parser validation and dry-run do not establish actual delivery.",
2663
+ "intents": "",
2664
+ "terms": "verify id based pagination edit retaining deletion events and post absence record completion only for observed server responses parser validation dry run not establish actual delivery",
2665
+ "path": "/cli-sections/a9e9fa22e1a9a6f18b5725f8.md",
2666
+ "sha256": "c5e9d4c1095ae1c53ec0169791a57dde5a7b7e3b219f947346fbe220c9d20bbe",
2667
+ "bytes": 293
2668
+ },
2669
+ {
2670
+ "id": "tutorial/tutorial-message-lifecycle#cleanup",
2671
+ "title": "06. Message history, updates, and deletion · Clean up the exercise channel",
2672
+ "description": "Follow the same message ID through history and changes.",
2673
+ "source": "site/tutorials.ts",
2674
+ "url": "/tutorial-message-lifecycle.html#cleanup",
2675
+ "excerpt": "Stop watch with Ctrl+C, then run cleanup in A. These commands delete only the channel stored in this tutorial's JSON. Create a fresh channel for a rerun and never replace saved responses with another channel's data.\n\n```text\nadmin chat chan",
2676
+ "intents": "",
2677
+ "terms": "stop watch with ctrl c then run cleanup in these commands delete only channel stored this tutorial s json create fresh for rerun and never replace saved responses another data text admin chat type group id history yes",
2678
+ "path": "/cli-sections/158fe69b5e62f735a43321f5.md",
2679
+ "sha256": "1ee9aeb3c014ef089acde30a2ac2d472cfc5ef39a7793b40cf5650818e94c54b",
2680
+ "bytes": 384
2681
+ },
2682
+ {
2683
+ "id": "tutorial/tutorial-message-lifecycle#differences",
2684
+ "title": "06. Message history, updates, and deletion · Equivalent outcomes, different implementation",
2685
+ "description": "Follow the same message ID through history and changes.",
2686
+ "source": "site/tutorials.ts",
2687
+ "url": "/tutorial-message-lifecycle.html#differences",
2688
+ "excerpt": "The CLI does not provide Group MessageCollection UI/cache synchronization. It verifies SDK server history with real-time watch events. This covers text edits, not file-message edits or full history export.\n\nTimeout does not prove a write wa",
2689
+ "intents": "",
2690
+ "terms": "cli does not provide group messagecollection ui cache synchronization it verifies sdk server history with real time watch events this covers text edits file message or full export timeout prove write was never applied read exact id if ended restart and wait for ready before another authorized send writing these pages did customer channel",
2691
+ "path": "/cli-sections/08b316b522ac8aa47ac6fae5.md",
2692
+ "sha256": "7ec78e5a9eaec6a362da0d5905a6bb1f5005baf68ad093a568a33caba7316b57",
2693
+ "bytes": 510
2694
+ },
2695
+ {
2696
+ "id": "tutorial/tutorial-message-lifecycle#sources",
2697
+ "title": "06. Message history, updates, and deletion · Official sources",
2698
+ "description": "Follow the same message ID through history and changes.",
2699
+ "source": "site/tutorials.ts",
2700
+ "url": "/tutorial-message-lifecycle.html#sources",
2701
+ "excerpt": "- [Retrieve messages](https://sendbird.com/docs/chat/sdk/v4/javascript/message/retrieving-messages/retrieve-a-list-of-messages)\n\n- [Update a message](https://sendbird.com/docs/chat/sdk/v4/javascript/message/managing-a-message/update-a-messa",
2702
+ "intents": "",
2703
+ "terms": "retrieve message https sendbird com docs chat sdk v4 javascript retrieving list of update managing delete these tutorials adapt official workflows current cli behavior they are not copy code or claim one coverage every capability all html",
2704
+ "path": "/cli-sections/0e026d53bb531483e49b5108.md",
2705
+ "sha256": "1a334033b32d20188c53abed2d825fa33b41b86a805ae741f854ec459c8b2523",
2706
+ "bytes": 621
2707
+ }
2708
+ ]
2709
+ }