@clidey/dory 1.0.7 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +12 -1
  2. package/bin/chat-server.ts +270 -0
  3. package/bin/dist/analytics-server.d.ts +11 -0
  4. package/bin/dist/analytics-server.d.ts.map +1 -0
  5. package/bin/dist/analytics-server.js +121 -0
  6. package/bin/dist/analytics-server.js.map +1 -0
  7. package/bin/dist/automation.d.ts +35 -0
  8. package/bin/dist/automation.d.ts.map +1 -0
  9. package/bin/dist/automation.js +259 -0
  10. package/bin/dist/automation.js.map +1 -0
  11. package/bin/dist/chat-server.d.ts +8 -0
  12. package/bin/dist/chat-server.d.ts.map +1 -0
  13. package/bin/dist/chat-server.js +322 -0
  14. package/bin/dist/chat-server.js.map +1 -0
  15. package/bin/dist/check.d.ts +16 -0
  16. package/bin/dist/check.d.ts.map +1 -0
  17. package/bin/dist/check.js +247 -0
  18. package/bin/dist/check.js.map +1 -0
  19. package/bin/dist/dory.js +252 -402
  20. package/bin/dist/dory.js.map +1 -1
  21. package/bin/dist/i18n-init.d.ts +6 -0
  22. package/bin/dist/i18n-init.d.ts.map +1 -0
  23. package/bin/dist/i18n-init.js +56 -0
  24. package/bin/dist/i18n-init.js.map +1 -0
  25. package/bin/dist/mcp-http.d.ts +8 -0
  26. package/bin/dist/mcp-http.d.ts.map +1 -0
  27. package/bin/dist/mcp-http.js +72 -0
  28. package/bin/dist/mcp-http.js.map +1 -0
  29. package/bin/dist/mcp.d.ts +2 -0
  30. package/bin/dist/mcp.d.ts.map +1 -0
  31. package/bin/dist/mcp.js +81 -0
  32. package/bin/dist/mcp.js.map +1 -0
  33. package/bin/dist/preview-entry.d.ts +2 -0
  34. package/bin/dist/preview-entry.d.ts.map +1 -0
  35. package/bin/dist/preview-entry.js +6 -0
  36. package/bin/dist/preview-entry.js.map +1 -0
  37. package/bin/dist/preview-server.d.ts +5 -0
  38. package/bin/dist/preview-server.d.ts.map +1 -0
  39. package/bin/dist/preview-server.js +159 -0
  40. package/bin/dist/preview-server.js.map +1 -0
  41. package/bin/dist/project-config.d.ts +22 -0
  42. package/bin/dist/project-config.d.ts.map +1 -0
  43. package/bin/dist/project-config.js +44 -0
  44. package/bin/dist/project-config.js.map +1 -0
  45. package/dist/index.html +57 -0
  46. package/dist/runtime/dory-runtime.css +2 -0
  47. package/dist/runtime/dory-runtime.html +14 -0
  48. package/dist/runtime/dory-runtime.js +5490 -0
  49. package/docs/api-playground-demo.mdx +119 -0
  50. package/docs/api-reference/asyncapi.json +324 -0
  51. package/docs/api-reference/openapi.json +366 -0
  52. package/docs/api-reference/operations/create.mdx +5 -0
  53. package/docs/api-reference/operations/delete.mdx +5 -0
  54. package/docs/api-reference/operations/get.mdx +5 -0
  55. package/docs/api-reference/operations/update.mdx +5 -0
  56. package/docs/api-reference/websocket-operations/receive-chat-message.mdx +5 -0
  57. package/docs/api-reference/websocket-operations/receive-notifications.mdx +5 -0
  58. package/docs/api-reference/websocket-operations/receive-presence-update.mdx +5 -0
  59. package/docs/api-reference/websocket-operations/send-chat-message.mdx +5 -0
  60. package/docs/api-reference/websocket-operations/send-presence-update.mdx +5 -0
  61. package/docs/assets/dory.jpeg +0 -0
  62. package/docs/components/accordion.mdx +145 -0
  63. package/docs/components/callouts.mdx +134 -0
  64. package/docs/components/cards.mdx +153 -0
  65. package/docs/components/code-blocks.mdx +281 -0
  66. package/docs/components/expandable.mdx +189 -0
  67. package/docs/components/icons.mdx +71 -0
  68. package/docs/components/images.mdx +82 -0
  69. package/docs/components/latex.mdx +148 -0
  70. package/docs/components/layout.mdx +175 -0
  71. package/docs/components/lists.mdx +134 -0
  72. package/docs/components/mermaid.mdx +149 -0
  73. package/docs/components/overview.mdx +81 -0
  74. package/docs/components/source.mdx +130 -0
  75. package/docs/components/steps.mdx +122 -0
  76. package/docs/components/tables.mdx +114 -0
  77. package/docs/components/tags.mdx +179 -0
  78. package/docs/components/typography.mdx +185 -0
  79. package/docs/configuration/analytics.mdx +45 -0
  80. package/docs/configuration/chat.mdx +59 -0
  81. package/docs/configuration/dory-json.mdx +278 -0
  82. package/docs/configuration/embed.mdx +73 -0
  83. package/docs/configuration/fonts.mdx +86 -0
  84. package/docs/configuration/internationalization.mdx +61 -0
  85. package/docs/configuration/navigation.mdx +217 -0
  86. package/docs/configuration/theming.mdx +166 -0
  87. package/docs/dory.json +129 -0
  88. package/docs/embed-example.html +176 -0
  89. package/docs/favicon.svg +18 -0
  90. package/docs/features.mdx +440 -0
  91. package/docs/getting-started/automation.mdx +76 -0
  92. package/docs/getting-started/configuration.mdx +95 -0
  93. package/docs/getting-started/installation.mdx +88 -0
  94. package/docs/getting-started/quick-start.mdx +53 -0
  95. package/docs/getting-started/whodb-ee-apps.mdx +122 -0
  96. package/docs/introduction.mdx +50 -0
  97. package/docs/logo/logo.svg +18 -0
  98. package/docs/playgrounds/api-playground.mdx +122 -0
  99. package/docs/playgrounds/websocket-playground.mdx +98 -0
  100. package/docs/social-card.png +0 -0
  101. package/docs/social-card.svg +17 -0
  102. package/docs/websocket-playground-demo.mdx +135 -0
  103. package/package.json +23 -17
  104. package/scripts/verify-runtime-parity.mjs +146 -0
  105. package/src/app.css +19 -1
  106. package/src/assets/fonts/HankenGrotesk.ttf +0 -0
  107. package/src/assets/fonts/OFL.txt +94 -0
  108. package/src/components/chat-assistant.tsx +229 -0
  109. package/src/components/dropdown.tsx +3 -3
  110. package/src/components/error-boundary.tsx +2 -2
  111. package/src/components/hooks.tsx +20 -1
  112. package/src/components/navigation.tsx +82 -51
  113. package/src/components/notification.tsx +2 -3
  114. package/src/components/routes.tsx +17 -19
  115. package/src/components/search-index.test.ts +15 -0
  116. package/src/components/search-index.ts +49 -48
  117. package/src/components/search.tsx +208 -104
  118. package/src/components/store.ts +27 -9
  119. package/src/config/mdx-common.ts +11 -0
  120. package/src/config/mdx.ts +10 -11
  121. package/src/embed/loader.ts +0 -3
  122. package/src/embed/types.ts +0 -2
  123. package/src/embed/widget-iframe.ts +19 -21
  124. package/src/embedded-runtime/config.ts +138 -0
  125. package/src/embedded-runtime/index.tsx +680 -0
  126. package/src/embedded-runtime/runtime.html +14 -0
  127. package/src/entry-server.tsx +46 -124
  128. package/src/main.tsx +16 -4
  129. package/src/mdx/accordion.tsx +3 -3
  130. package/src/mdx/api-playground.tsx +18 -16
  131. package/src/mdx/async-api.tsx +2 -2
  132. package/src/mdx/card.tsx +3 -2
  133. package/src/mdx/code.tsx +11 -9
  134. package/src/mdx/fence.tsx +6 -5
  135. package/src/mdx/icon-grid.tsx +4 -1
  136. package/src/mdx/icon-names.test.ts +15 -0
  137. package/src/mdx/icon-names.ts +60 -0
  138. package/src/mdx/icon-source-variants.ts +102 -0
  139. package/src/mdx/icon.tsx +12 -73
  140. package/src/mdx/latex.tsx +3 -2
  141. package/src/mdx/mdx.tsx +1 -1
  142. package/src/mdx/mermaid.tsx +12 -6
  143. package/src/mdx/open-api.tsx +130 -74
  144. package/src/mdx/preprocess.test.ts +16 -0
  145. package/src/mdx/preprocess.ts +61 -0
  146. package/src/mdx/processor.ts +4 -96
  147. package/src/mdx/source.tsx +5 -4
  148. package/src/mdx/specimen.tsx +38 -6
  149. package/src/mdx/tabs.tsx +29 -21
  150. package/src/mdx/text.tsx +9 -9
  151. package/src/mdx/try-it-panel.tsx +284 -0
  152. package/src/mdx/type-scale.tsx +4 -4
  153. package/src/mdx/websocket-playground.tsx +21 -14
  154. package/src/plugins/analytics-injector.ts +8 -0
  155. package/src/plugins/chat-dev-server.ts +32 -0
  156. package/src/plugins/docs-assets.test.ts +25 -0
  157. package/src/plugins/docs-assets.ts +6 -2
  158. package/src/plugins/frontmatter-dev-server.ts +2 -2
  159. package/src/plugins/frontmatter-generator.ts +1 -1
  160. package/src/plugins/html-files-middleware.test.ts +21 -1
  161. package/src/plugins/html-files-middleware.ts +26 -6
  162. package/src/plugins/html-metadata-injector.ts +24 -4
  163. package/src/plugins/llm-txt-dev-server.ts +2 -2
  164. package/src/plugins/llm-txt-generator.ts +21 -4
  165. package/src/plugins/prerender.ts +47 -20
  166. package/src/plugins/robots-generator.ts +1 -1
  167. package/src/plugins/sanitize.ts +1 -1
  168. package/src/plugins/shared.ts +6 -18
  169. package/src/plugins/sitemap-generator.ts +1 -1
  170. package/src/plugins/social-preview.test.ts +71 -0
  171. package/src/plugins/social-preview.ts +87 -0
  172. package/src/plugins/unified-mdx-plugin.ts +1 -1
  173. package/src/theme.scss +630 -207
  174. package/src/types/config.ts +53 -1
  175. package/src/ui/breadcrumb.tsx +17 -0
  176. package/src/ui/docs-header-view.tsx +32 -0
  177. package/src/ui/docs-navigation-view.tsx +69 -0
  178. package/src/ui/docs-page-frame.tsx +50 -0
  179. package/src/ui/dory-mark.tsx +9 -0
  180. package/src/ui/header.tsx +33 -90
  181. package/src/ui/layout.tsx +99 -153
  182. package/src/ui/mobile-navigation.tsx +10 -8
  183. package/src/ui/page-actions.tsx +67 -0
  184. package/src/ui/page-feedback.tsx +50 -0
  185. package/src/ui/page-footer.tsx +23 -0
  186. package/src/ui/prev-next-link.tsx +15 -69
  187. package/src/ui/prev-next-view.tsx +27 -0
  188. package/src/ui/table-of-content-view.tsx +167 -0
  189. package/src/ui/table-of-content.tsx +25 -183
  190. package/src/utils/analytics.test.ts +36 -0
  191. package/src/utils/analytics.ts +35 -0
  192. package/src/utils/colors.ts +7 -0
  193. package/src/utils/content-scope.test.ts +26 -0
  194. package/src/utils/content-scope.ts +39 -0
  195. package/src/utils/search-content.ts +12 -0
  196. package/src/utils/theme.ts +1 -7
  197. package/vite.config.ssr.ts +3 -3
  198. package/vite.config.ts +21 -15
@@ -0,0 +1,119 @@
1
+ ---
2
+ title: 'API Playground Demo'
3
+ description: 'Interactive API playground for testing HTTP endpoints'
4
+ openapi: 'POST /plants'
5
+ ---
6
+
7
+ # API Playground Demo
8
+
9
+ This page demonstrates the new HTTP API playground that allows you to test API endpoints directly from the documentation.
10
+
11
+ ## Basic GET Request
12
+
13
+ Test a simple GET request with query parameters:
14
+
15
+ <APIPlayground
16
+ method="GET"
17
+ url="/api/users"
18
+ title="Get Users"
19
+ description="Retrieve a list of users with optional filtering"
20
+ parameters={[
21
+ {
22
+ name: "page",
23
+ type: "number",
24
+ description: "Page number for pagination",
25
+ defaultValue: "1"
26
+ },
27
+ {
28
+ name: "limit",
29
+ type: "number",
30
+ description: "Number of items per page",
31
+ defaultValue: "10"
32
+ },
33
+ {
34
+ name: "search",
35
+ type: "string",
36
+ description: "Search term to filter users"
37
+ }
38
+ ]}
39
+ baseUrl="https://jsonplaceholder.typicode.com"
40
+ />
41
+
42
+ ## POST Request with Body
43
+
44
+ Test a POST request with a JSON body:
45
+
46
+ <APIPlayground
47
+ method="POST"
48
+ url="/api/users"
49
+ title="Create User"
50
+ description="Create a new user account"
51
+ parameters={[]}
52
+ body={{
53
+ "name": "John Doe",
54
+ "email": "john@example.com",
55
+ "username": "johndoe"
56
+ }}
57
+ headers={{
58
+ "Content-Type": "application/json"
59
+ }}
60
+ authType="bearer"
61
+ baseUrl="https://jsonplaceholder.typicode.com"
62
+ />
63
+
64
+ ## Authenticated Endpoint
65
+
66
+ Test an endpoint that requires authentication:
67
+
68
+ <APIPlayground
69
+ method="GET"
70
+ url="/api/profile/{userId}"
71
+ title="Get User Profile"
72
+ description="Get detailed profile information for a specific user"
73
+ parameters={[
74
+ {
75
+ name: "userId",
76
+ type: "string",
77
+ required: true,
78
+ description: "The ID of the user to retrieve"
79
+ }
80
+ ]}
81
+ authType="bearer"
82
+ baseUrl="https://jsonplaceholder.typicode.com"
83
+ />
84
+
85
+ ## Features
86
+
87
+ The API playground provides:
88
+
89
+ - **Interactive Request Configuration**: Set parameters, headers, request body, and authentication
90
+ - **Multiple Auth Types**: Support for Bearer token, API key, and Basic authentication
91
+ - **Real-time Response**: See actual HTTP responses with status codes, headers, and formatted JSON
92
+ - **Request Timing**: Monitor request duration for performance analysis
93
+ - **Error Handling**: Clear error messages for failed requests
94
+ - **Copy-Paste Ready**: Generate curl commands and code examples
95
+
96
+ ## Usage in Documentation
97
+
98
+ To add a playground to your API documentation, use the `APIPlayground` component:
99
+
100
+ ```mdx
101
+ <APIPlayground
102
+ method="GET"
103
+ url="/api/endpoint"
104
+ title="Endpoint Title"
105
+ description="Description of what this endpoint does"
106
+ parameters={[
107
+ {
108
+ name: "param1",
109
+ type: "string",
110
+ required: true,
111
+ description: "Parameter description"
112
+ }
113
+ ]}
114
+ authType="bearer"
115
+ baseUrl="https://api.example.com"
116
+ />
117
+ ```
118
+
119
+ The playground seamlessly integrates with your existing API documentation and provides a Postman-like experience directly in the docs.
@@ -0,0 +1,324 @@
1
+ {
2
+ "asyncapi": "3.0.0",
3
+ "info": {
4
+ "title": "Chat WebSocket API",
5
+ "version": "1.0.0",
6
+ "description": "Real-time chat API using WebSocket for bidirectional communication"
7
+ },
8
+ "servers": {
9
+ "development": {
10
+ "host": "localhost:8080",
11
+ "pathname": "/ws",
12
+ "protocol": "ws",
13
+ "description": "Development WebSocket server"
14
+ },
15
+ "production": {
16
+ "host": "api.example.com",
17
+ "pathname": "/ws",
18
+ "protocol": "wss",
19
+ "description": "Production WebSocket server"
20
+ }
21
+ },
22
+ "channels": {
23
+ "/chat": {
24
+ "address": "/chat",
25
+ "title": "Chat Channel",
26
+ "description": "Channel for sending and receiving chat messages",
27
+ "subscribe": {
28
+ "operationId": "receiveChatMessage",
29
+ "summary": "Receive chat messages",
30
+ "description": "Subscribe to receive chat messages from other users",
31
+ "message": {
32
+ "$ref": "#/components/messages/ChatMessage"
33
+ }
34
+ },
35
+ "publish": {
36
+ "operationId": "sendChatMessage",
37
+ "summary": "Send chat message",
38
+ "description": "Send a chat message to other users",
39
+ "message": {
40
+ "$ref": "#/components/messages/ChatMessage"
41
+ }
42
+ }
43
+ },
44
+ "/notifications": {
45
+ "address": "/notifications",
46
+ "title": "Notifications Channel",
47
+ "description": "Channel for receiving system notifications",
48
+ "subscribe": {
49
+ "operationId": "receiveNotification",
50
+ "summary": "Receive notifications",
51
+ "description": "Subscribe to receive system notifications",
52
+ "message": {
53
+ "$ref": "#/components/messages/Notification"
54
+ }
55
+ }
56
+ },
57
+ "/presence": {
58
+ "address": "/presence",
59
+ "title": "Presence Channel",
60
+ "description": "Channel for user presence updates",
61
+ "subscribe": {
62
+ "operationId": "receivePresenceUpdate",
63
+ "summary": "Receive presence updates",
64
+ "description": "Subscribe to receive user presence updates",
65
+ "message": {
66
+ "$ref": "#/components/messages/PresenceUpdate"
67
+ }
68
+ },
69
+ "publish": {
70
+ "operationId": "sendPresenceUpdate",
71
+ "summary": "Send presence update",
72
+ "description": "Send a presence update",
73
+ "message": {
74
+ "$ref": "#/components/messages/PresenceUpdate"
75
+ }
76
+ }
77
+ }
78
+ },
79
+ "components": {
80
+ "messages": {
81
+ "ChatMessage": {
82
+ "name": "ChatMessage",
83
+ "title": "Chat Message",
84
+ "summary": "Message sent in a chat conversation",
85
+ "description": "A message sent by a user in a chat conversation",
86
+ "contentType": "application/json",
87
+ "payload": {
88
+ "$ref": "#/components/schemas/ChatMessagePayload"
89
+ },
90
+ "headers": {
91
+ "$ref": "#/components/schemas/MessageHeaders"
92
+ },
93
+ "examples": [
94
+ {
95
+ "id": "msg_123",
96
+ "type": "message",
97
+ "content": "Hello, how are you?",
98
+ "userId": "user_456",
99
+ "username": "john_doe",
100
+ "timestamp": "2024-01-15T10:30:00Z",
101
+ "channel": "general"
102
+ }
103
+ ]
104
+ },
105
+ "Notification": {
106
+ "name": "Notification",
107
+ "title": "System Notification",
108
+ "summary": "System-generated notification",
109
+ "description": "A notification sent by the system to inform users about events",
110
+ "contentType": "application/json",
111
+ "payload": {
112
+ "$ref": "#/components/schemas/NotificationPayload"
113
+ },
114
+ "headers": {
115
+ "$ref": "#/components/schemas/MessageHeaders"
116
+ },
117
+ "examples": [
118
+ {
119
+ "id": "notif_789",
120
+ "type": "notification",
121
+ "title": "New Message",
122
+ "message": "You have a new message from Alice",
123
+ "level": "info",
124
+ "timestamp": "2024-01-15T10:35:00Z",
125
+ "userId": "user_456"
126
+ }
127
+ ]
128
+ },
129
+ "PresenceUpdate": {
130
+ "name": "PresenceUpdate",
131
+ "title": "Presence Update",
132
+ "summary": "User presence status update",
133
+ "description": "Update about a user's presence status (online, offline, away)",
134
+ "contentType": "application/json",
135
+ "payload": {
136
+ "$ref": "#/components/schemas/PresenceUpdatePayload"
137
+ },
138
+ "headers": {
139
+ "$ref": "#/components/schemas/MessageHeaders"
140
+ },
141
+ "examples": [
142
+ {
143
+ "id": "presence_101",
144
+ "type": "presence",
145
+ "userId": "user_456",
146
+ "username": "john_doe",
147
+ "status": "online",
148
+ "lastSeen": "2024-01-15T10:40:00Z",
149
+ "timestamp": "2024-01-15T10:40:00Z"
150
+ }
151
+ ]
152
+ }
153
+ },
154
+ "schemas": {
155
+ "ChatMessagePayload": {
156
+ "type": "object",
157
+ "required": ["id", "type", "content", "userId", "username", "timestamp"],
158
+ "properties": {
159
+ "id": {
160
+ "type": "string",
161
+ "description": "Unique identifier for the message",
162
+ "example": "msg_123"
163
+ },
164
+ "type": {
165
+ "type": "string",
166
+ "enum": ["message"],
167
+ "description": "Message type identifier",
168
+ "example": "message"
169
+ },
170
+ "content": {
171
+ "type": "string",
172
+ "description": "The message content",
173
+ "example": "Hello, how are you?"
174
+ },
175
+ "userId": {
176
+ "type": "string",
177
+ "description": "ID of the user who sent the message",
178
+ "example": "user_456"
179
+ },
180
+ "username": {
181
+ "type": "string",
182
+ "description": "Username of the sender",
183
+ "example": "john_doe"
184
+ },
185
+ "timestamp": {
186
+ "type": "string",
187
+ "format": "date-time",
188
+ "description": "When the message was sent",
189
+ "example": "2024-01-15T10:30:00Z"
190
+ },
191
+ "channel": {
192
+ "type": "string",
193
+ "description": "Channel where the message was sent",
194
+ "example": "general"
195
+ },
196
+ "replyTo": {
197
+ "type": "string",
198
+ "description": "ID of the message this is replying to",
199
+ "example": "msg_122"
200
+ }
201
+ }
202
+ },
203
+ "NotificationPayload": {
204
+ "type": "object",
205
+ "required": ["id", "type", "title", "message", "timestamp"],
206
+ "properties": {
207
+ "id": {
208
+ "type": "string",
209
+ "description": "Unique identifier for the notification",
210
+ "example": "notif_789"
211
+ },
212
+ "type": {
213
+ "type": "string",
214
+ "enum": ["notification"],
215
+ "description": "Message type identifier",
216
+ "example": "notification"
217
+ },
218
+ "title": {
219
+ "type": "string",
220
+ "description": "Notification title",
221
+ "example": "New Message"
222
+ },
223
+ "message": {
224
+ "type": "string",
225
+ "description": "Notification message content",
226
+ "example": "You have a new message from Alice"
227
+ },
228
+ "level": {
229
+ "type": "string",
230
+ "enum": ["info", "warning", "error", "success"],
231
+ "description": "Notification level",
232
+ "example": "info"
233
+ },
234
+ "timestamp": {
235
+ "type": "string",
236
+ "format": "date-time",
237
+ "description": "When the notification was created",
238
+ "example": "2024-01-15T10:35:00Z"
239
+ },
240
+ "userId": {
241
+ "type": "string",
242
+ "description": "ID of the user receiving the notification",
243
+ "example": "user_456"
244
+ },
245
+ "actionUrl": {
246
+ "type": "string",
247
+ "description": "URL to navigate to when notification is clicked",
248
+ "example": "/chat/general"
249
+ }
250
+ }
251
+ },
252
+ "PresenceUpdatePayload": {
253
+ "type": "object",
254
+ "required": ["id", "type", "userId", "username", "status", "timestamp"],
255
+ "properties": {
256
+ "id": {
257
+ "type": "string",
258
+ "description": "Unique identifier for the presence update",
259
+ "example": "presence_101"
260
+ },
261
+ "type": {
262
+ "type": "string",
263
+ "enum": ["presence"],
264
+ "description": "Message type identifier",
265
+ "example": "presence"
266
+ },
267
+ "userId": {
268
+ "type": "string",
269
+ "description": "ID of the user whose presence is being updated",
270
+ "example": "user_456"
271
+ },
272
+ "username": {
273
+ "type": "string",
274
+ "description": "Username of the user",
275
+ "example": "john_doe"
276
+ },
277
+ "status": {
278
+ "type": "string",
279
+ "enum": ["online", "offline", "away", "busy"],
280
+ "description": "User's presence status",
281
+ "example": "online"
282
+ },
283
+ "lastSeen": {
284
+ "type": "string",
285
+ "format": "date-time",
286
+ "description": "When the user was last seen",
287
+ "example": "2024-01-15T10:40:00Z"
288
+ },
289
+ "timestamp": {
290
+ "type": "string",
291
+ "format": "date-time",
292
+ "description": "When the presence update was sent",
293
+ "example": "2024-01-15T10:40:00Z"
294
+ }
295
+ }
296
+ },
297
+ "MessageHeaders": {
298
+ "type": "object",
299
+ "properties": {
300
+ "correlation-id": {
301
+ "type": "string",
302
+ "description": "Correlation ID for request tracking",
303
+ "example": "corr_123"
304
+ },
305
+ "user-id": {
306
+ "type": "string",
307
+ "description": "ID of the user sending the message",
308
+ "example": "user_456"
309
+ },
310
+ "session-id": {
311
+ "type": "string",
312
+ "description": "Session ID for the connection",
313
+ "example": "sess_789"
314
+ },
315
+ "client-version": {
316
+ "type": "string",
317
+ "description": "Version of the client application",
318
+ "example": "1.0.0"
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }