@volter/twin-sentry 0.1.37 → 1.0.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 (188) hide show
  1. package/README.md +21 -134
  2. package/api/spec/SOURCE.md +15 -0
  3. package/api/spec/doc-examples.json +12 -0
  4. package/api/spec/openapi.json.gz +0 -0
  5. package/api/spec/patches.json +5350 -0
  6. package/api/spec/sources.json +122 -0
  7. package/api/src/fetch.ts +18 -0
  8. package/api/src/generated/surface.gen.json +1 -0
  9. package/api/src/generated/ui.gen.json +1 -0
  10. package/api/src/index.ts +3 -0
  11. package/api/src/manifest.ts +136 -0
  12. package/api/src/semantics/api.ts +246 -0
  13. package/api/src/semantics/around.ts +36 -0
  14. package/api/src/semantics/doors.ts +50 -0
  15. package/api/src/semantics/index.ts +19 -0
  16. package/api/src/semantics/shared.ts +35 -0
  17. package/api/src/semantics/states.ts +17 -0
  18. package/dist/api/spec/SOURCE.md +15 -0
  19. package/dist/api/spec/doc-examples.json +12 -0
  20. package/dist/api/spec/openapi.json.gz +0 -0
  21. package/dist/api/spec/patches.json +5350 -0
  22. package/dist/api/spec/sources.json +122 -0
  23. package/dist/api/src/fetch.d.ts +2 -0
  24. package/dist/api/src/fetch.js +17 -0
  25. package/dist/api/src/fetch.ts +18 -0
  26. package/dist/api/src/generated/surface.gen.json +1 -0
  27. package/dist/api/src/generated/ui.gen.json +1 -0
  28. package/dist/api/src/index.d.ts +2 -0
  29. package/dist/api/src/index.js +3 -0
  30. package/dist/api/src/index.ts +3 -0
  31. package/dist/api/src/manifest.d.ts +2 -0
  32. package/dist/api/src/manifest.js +135 -0
  33. package/dist/api/src/manifest.ts +136 -0
  34. package/dist/api/src/semantics/api.d.ts +13 -0
  35. package/dist/api/src/semantics/api.js +267 -0
  36. package/dist/api/src/semantics/api.ts +246 -0
  37. package/dist/api/src/semantics/around.d.ts +2 -0
  38. package/dist/api/src/semantics/around.js +41 -0
  39. package/dist/api/src/semantics/around.ts +36 -0
  40. package/dist/api/src/semantics/doors.d.ts +8 -0
  41. package/dist/api/src/semantics/doors.js +39 -0
  42. package/dist/api/src/semantics/doors.ts +50 -0
  43. package/dist/api/src/semantics/index.d.ts +2 -0
  44. package/dist/api/src/semantics/index.js +15 -0
  45. package/dist/api/src/semantics/index.ts +19 -0
  46. package/dist/api/src/semantics/shared.d.ts +15 -0
  47. package/dist/api/src/semantics/shared.js +27 -0
  48. package/dist/api/src/semantics/shared.ts +35 -0
  49. package/dist/api/src/semantics/states.d.ts +24 -0
  50. package/dist/api/src/semantics/states.js +17 -0
  51. package/dist/api/src/semantics/states.ts +17 -0
  52. package/dist/generated/pack-facts.json +87 -0
  53. package/dist/ingest/spec/SOURCE.md +30 -0
  54. package/dist/ingest/spec/authentication.mdx.gz +0 -0
  55. package/dist/ingest/spec/compression.mdx.gz +0 -0
  56. package/dist/ingest/spec/doc-examples.json +216 -0
  57. package/dist/ingest/spec/envelope-items.mdx.gz +0 -0
  58. package/dist/ingest/spec/envelopes.mdx.gz +0 -0
  59. package/dist/ingest/spec/openapi.json +178 -0
  60. package/dist/ingest/spec/rate-limiting.mdx.gz +0 -0
  61. package/dist/ingest/spec/sources.json +25 -0
  62. package/dist/ingest/spec/transport.mdx.gz +0 -0
  63. package/dist/ingest/spec/write-spec.ts +192 -0
  64. package/dist/ingest/src/fetch.d.ts +2 -0
  65. package/dist/ingest/src/fetch.js +15 -0
  66. package/dist/ingest/src/fetch.ts +16 -0
  67. package/dist/ingest/src/generated/surface.gen.json +1 -0
  68. package/dist/ingest/src/generated/ui.gen.json +1 -0
  69. package/dist/ingest/src/index.d.ts +2 -0
  70. package/dist/ingest/src/index.js +3 -0
  71. package/dist/ingest/src/index.ts +3 -0
  72. package/dist/ingest/src/manifest.d.ts +2 -0
  73. package/dist/ingest/src/manifest.js +34 -0
  74. package/dist/ingest/src/manifest.ts +39 -0
  75. package/dist/ingest/src/semantics/api.d.ts +2 -0
  76. package/dist/ingest/src/semantics/api.js +240 -0
  77. package/dist/ingest/src/semantics/api.ts +188 -0
  78. package/dist/ingest/src/semantics/around.d.ts +2 -0
  79. package/dist/ingest/src/semantics/around.js +6 -0
  80. package/dist/ingest/src/semantics/around.ts +7 -0
  81. package/dist/ingest/src/semantics/index.d.ts +2 -0
  82. package/dist/ingest/src/semantics/index.js +4 -0
  83. package/dist/ingest/src/semantics/index.ts +8 -0
  84. package/dist/ingest/src/semantics/shared.d.ts +4 -0
  85. package/dist/ingest/src/semantics/shared.js +2 -0
  86. package/dist/ingest/src/semantics/shared.ts +7 -0
  87. package/dist/ingest/src/semantics/states.d.ts +1 -0
  88. package/dist/ingest/src/semantics/states.js +2 -0
  89. package/dist/ingest/src/semantics/states.ts +2 -0
  90. package/dist/journeys/coverage.json +205 -0
  91. package/dist/journeys/customer-life.json +923 -0
  92. package/dist/journeys/customer-life.outline.md +51 -0
  93. package/dist/journeys/decisions.json +170 -0
  94. package/dist/journeys/demand.json +136 -0
  95. package/dist/journeys/score.json +231 -0
  96. package/dist/journeys/unreachable.json +29 -0
  97. package/dist/journeys/vendor-examples.json +474 -0
  98. package/dist/spec/sources.json +76 -0
  99. package/dist/src/cli.js +12 -27
  100. package/dist/src/fetch.d.ts +2 -0
  101. package/dist/src/fetch.js +9 -0
  102. package/dist/src/index.d.ts +5 -15
  103. package/dist/src/index.js +12 -75
  104. package/dist/src/manifest.d.ts +2 -0
  105. package/dist/src/manifest.js +34 -0
  106. package/dist/src/semantics/shared.d.ts +87 -0
  107. package/dist/src/semantics/shared.js +411 -0
  108. package/dist/src/server.d.ts +7 -0
  109. package/dist/src/server.js +7 -0
  110. package/generated/pack-facts.json +87 -0
  111. package/ingest/spec/SOURCE.md +30 -0
  112. package/ingest/spec/authentication.mdx.gz +0 -0
  113. package/ingest/spec/compression.mdx.gz +0 -0
  114. package/ingest/spec/doc-examples.json +216 -0
  115. package/ingest/spec/envelope-items.mdx.gz +0 -0
  116. package/ingest/spec/envelopes.mdx.gz +0 -0
  117. package/ingest/spec/openapi.json +178 -0
  118. package/ingest/spec/rate-limiting.mdx.gz +0 -0
  119. package/ingest/spec/sources.json +25 -0
  120. package/ingest/spec/transport.mdx.gz +0 -0
  121. package/ingest/spec/write-spec.ts +192 -0
  122. package/ingest/src/fetch.ts +16 -0
  123. package/ingest/src/generated/surface.gen.json +1 -0
  124. package/ingest/src/generated/ui.gen.json +1 -0
  125. package/ingest/src/index.ts +3 -0
  126. package/ingest/src/manifest.ts +39 -0
  127. package/ingest/src/semantics/api.ts +188 -0
  128. package/ingest/src/semantics/around.ts +7 -0
  129. package/ingest/src/semantics/index.ts +8 -0
  130. package/ingest/src/semantics/shared.ts +7 -0
  131. package/ingest/src/semantics/states.ts +2 -0
  132. package/journeys/coverage.json +205 -0
  133. package/journeys/customer-life.json +923 -0
  134. package/journeys/customer-life.outline.md +51 -0
  135. package/journeys/decisions.json +170 -0
  136. package/journeys/demand.json +136 -0
  137. package/journeys/score.json +231 -0
  138. package/journeys/unreachable.json +29 -0
  139. package/journeys/vendor-examples.json +474 -0
  140. package/package.json +16 -42
  141. package/spec/sources.json +76 -0
  142. package/src/cli.ts +12 -24
  143. package/src/fetch.ts +10 -0
  144. package/src/index.ts +12 -143
  145. package/src/manifest.ts +40 -0
  146. package/src/semantics/shared.ts +443 -0
  147. package/src/server.ts +8 -0
  148. package/client/sentry-mirror.css +0 -99
  149. package/client/sentry-mirror.tsx +0 -352
  150. package/dist/client/sentry-mirror.bundle.js +0 -388
  151. package/dist/client/sentry-mirror.css +0 -99
  152. package/dist/client/sentry-mirror.d.ts +0 -17
  153. package/dist/client/sentry-mirror.js +0 -156
  154. package/dist/client/sentry-mirror.tsx +0 -352
  155. package/dist/src/sentry-budget.d.ts +0 -50
  156. package/dist/src/sentry-budget.js +0 -145
  157. package/dist/src/sentry-capabilities.d.ts +0 -3
  158. package/dist/src/sentry-capabilities.js +0 -1180
  159. package/dist/src/sentry-conformance.d.ts +0 -22
  160. package/dist/src/sentry-conformance.js +0 -97
  161. package/dist/src/sentry-connector.d.ts +0 -77
  162. package/dist/src/sentry-connector.js +0 -226
  163. package/dist/src/sentry-events.d.ts +0 -54
  164. package/dist/src/sentry-events.js +0 -132
  165. package/dist/src/sentry-ingest.d.ts +0 -137
  166. package/dist/src/sentry-ingest.js +0 -387
  167. package/dist/src/sentry-mirror-ui.d.ts +0 -38
  168. package/dist/src/sentry-mirror-ui.js +0 -162
  169. package/dist/src/sentry-perform-harness.d.ts +0 -9
  170. package/dist/src/sentry-perform-harness.js +0 -20
  171. package/dist/src/sentry-server.d.ts +0 -14
  172. package/dist/src/sentry-server.js +0 -27
  173. package/dist/src/sentry-twin.d.ts +0 -17
  174. package/dist/src/sentry-twin.js +0 -1739
  175. package/dist/test-fixtures/sentry-openapi-operations.SOURCE.md +0 -24
  176. package/dist/test-fixtures/sentry-openapi-operations.json +0 -1837
  177. package/src/sentry-budget.ts +0 -171
  178. package/src/sentry-capabilities.ts +0 -1222
  179. package/src/sentry-conformance.ts +0 -110
  180. package/src/sentry-connector.ts +0 -260
  181. package/src/sentry-events.ts +0 -172
  182. package/src/sentry-ingest.ts +0 -471
  183. package/src/sentry-mirror-ui.ts +0 -162
  184. package/src/sentry-perform-harness.ts +0 -19
  185. package/src/sentry-server.ts +0 -35
  186. package/src/sentry-twin.ts +0 -1615
  187. package/test-fixtures/sentry-openapi-operations.SOURCE.md +0 -24
  188. package/test-fixtures/sentry-openapi-operations.json +0 -1837
@@ -0,0 +1,216 @@
1
+ [
2
+ {
3
+ "title": "Envelope with 2 Items",
4
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
5
+ "operation": "sendEnvelope",
6
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\",\"dsn\":\"https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42\"}\n{\"type\":\"attachment\",\"length\":10,\"content_type\":\"text/plain\",\"filename\":\"hello.txt\"}\n\ufeffHello\r\n\n{\"type\":\"event\",\"length\":41,\"content_type\":\"application/json\",\"filename\":\"application.log\"}\n{\"message\":\"hello world\",\"level\":\"error\"}\n",
7
+ "output": {
8
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
9
+ },
10
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
11
+ "status": 200,
12
+ "placeholders": {
13
+ "names": [
14
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
15
+ ],
16
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
17
+ }
18
+ },
19
+ {
20
+ "title": "Envelope with 2 Items, last newline omitted",
21
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
22
+ "operation": "sendEnvelope",
23
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\",\"dsn\":\"https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42\"}\n{\"type\":\"attachment\",\"length\":10,\"content_type\":\"text/plain\",\"filename\":\"hello.txt\"}\n\ufeffHello\r\n\n{\"type\":\"event\",\"length\":41,\"content_type\":\"application/json\",\"filename\":\"application.log\"}\n{\"message\":\"hello world\",\"level\":\"error\"}",
24
+ "output": {
25
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
26
+ },
27
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
28
+ "status": 200,
29
+ "placeholders": {
30
+ "names": [
31
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
32
+ ],
33
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
34
+ }
35
+ },
36
+ {
37
+ "title": "Envelope with 2 empty attachments",
38
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
39
+ "operation": "sendEnvelope",
40
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\"}\n{\"type\":\"attachment\",\"length\":0}\n\n{\"type\":\"attachment\",\"length\":0}\n\n",
41
+ "output": {
42
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
43
+ },
44
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
45
+ "status": 200,
46
+ "placeholders": {
47
+ "names": [
48
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
49
+ ],
50
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
51
+ }
52
+ },
53
+ {
54
+ "title": "Envelope with 2 empty attachments, last newline omitted",
55
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
56
+ "operation": "sendEnvelope",
57
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\"}\n{\"type\":\"attachment\",\"length\":0}\n\n{\"type\":\"attachment\",\"length\":0}\n",
58
+ "output": {
59
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
60
+ },
61
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
62
+ "status": 200,
63
+ "placeholders": {
64
+ "names": [
65
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
66
+ ],
67
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
68
+ }
69
+ },
70
+ {
71
+ "title": "Item with implicit length, terminated by newline",
72
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
73
+ "operation": "sendEnvelope",
74
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\"}\n{\"type\":\"attachment\"}\nhelloworld\n",
75
+ "output": {
76
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
77
+ },
78
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
79
+ "status": 200,
80
+ "placeholders": {
81
+ "names": [
82
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
83
+ ],
84
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
85
+ }
86
+ },
87
+ {
88
+ "title": "Item with implicit length, last newline omitted, terminated by EOF",
89
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
90
+ "operation": "sendEnvelope",
91
+ "input": "{\"event_id\":\"9ec79c33ec9942ab8353589fcb2e04dc\"}\n{\"type\":\"attachment\"}\nhelloworld",
92
+ "output": {
93
+ "id": "9ec79c33ec9942ab8353589fcb2e04dc"
94
+ },
95
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
96
+ "status": 200,
97
+ "placeholders": {
98
+ "names": [
99
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
100
+ ],
101
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
102
+ }
103
+ },
104
+ {
105
+ "title": "Envelope without headers, implicit length, last newline omitted, terminated by EOF",
106
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
107
+ "operation": "sendEnvelope",
108
+ "input": "{}\n{\"type\":\"session\"}\n{\"started\": \"2020-02-07T14:16:00Z\",\"attrs\":{\"release\":\"sentry-test@1.0.0\"}}",
109
+ "output": {},
110
+ "means": "The full envelope format accepts these exact items and optional trailing newline. DSN fields stand for the receiving project.",
111
+ "status": 200,
112
+ "placeholders": {
113
+ "names": [
114
+ "https://e12d836b15bb49d7bbf99e64295d995b:@sentry.io/42"
115
+ ],
116
+ "quote": "set the \"dsn\" Envelope header to the full DSN string"
117
+ }
118
+ },
119
+ {
120
+ "title": "Missing authentication",
121
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
122
+ "operation": "sendEnvelope",
123
+ "input": "{}\n",
124
+ "output": {},
125
+ "status": 403,
126
+ "means": "If both are missing, the Envelope is rejected with status code 403 Forbidden."
127
+ },
128
+ {
129
+ "title": "Conflicting authentication",
130
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
131
+ "operation": "sendEnvelope",
132
+ "input": "{\"dsn\":\"https://different@sentry.io/42\"}\n",
133
+ "output": {},
134
+ "status": 403,
135
+ "means": "If multiple forms of authentication are given, the endpoint validates that the information matches and otherwise rejects the request."
136
+ },
137
+ {
138
+ "title": "Truncated payload",
139
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
140
+ "operation": "sendEnvelope",
141
+ "input": "{}\n{\"type\":\"attachment\",\"length\":12}\nshort",
142
+ "output": {},
143
+ "status": 400,
144
+ "means": "If length cannot be consumed, that is, the Envelope is EOF before the number of bytes has been consumed, then the Envelope is malformed."
145
+ },
146
+ {
147
+ "title": "Missing item header type",
148
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
149
+ "operation": "sendEnvelope",
150
+ "input": "{}\n{}\npayload\n",
151
+ "output": {},
152
+ "status": 400,
153
+ "means": "type: String, required. Specifies the type of this Item and its contents."
154
+ },
155
+ {
156
+ "title": "Wrong length boundary",
157
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
158
+ "operation": "sendEnvelope",
159
+ "input": "{}\n{\"type\":\"attachment\",\"length\":1}\nab",
160
+ "output": {},
161
+ "status": 400,
162
+ "means": "Length-prefixed payloads must terminate with newline or EOF. Any other character, including whitespace, means the Envelope is malformed."
163
+ },
164
+ {
165
+ "title": "Unknown items are skipped and retained",
166
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
167
+ "operation": "sendEnvelope",
168
+ "input": "{}\n{\"type\":\"future-item\",\"length\":9,\"future_header\":true}\nhello\nraw\n",
169
+ "output": {},
170
+ "status": 200,
171
+ "means": "Implementations must gracefully skip and retain Items of unknown type, along with their payload. Unknown attributes must be forwarded to the upstream."
172
+ },
173
+ {
174
+ "title": "Event item size limit",
175
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
176
+ "operation": "sendEnvelope",
177
+ "status": 413,
178
+ "output": {},
179
+ "means": "1 MiB for event errors and transactions envelope items."
180
+ },
181
+ {
182
+ "title": "Session count limit",
183
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
184
+ "operation": "sendEnvelope",
185
+ "status": 413,
186
+ "output": {},
187
+ "means": "100 sessions per envelope"
188
+ },
189
+ {
190
+ "title": "Aggregated bucket limit",
191
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
192
+ "operation": "sendEnvelope",
193
+ "status": 413,
194
+ "output": {},
195
+ "means": "100 pre-aggregated session buckets per each sessions item"
196
+ },
197
+ {
198
+ "title": "Metric item limit",
199
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx",
200
+ "operation": "sendEnvelope",
201
+ "status": 413,
202
+ "output": {},
203
+ "means": "2 KiB for each metric within an envelope. Relay discards the entire envelope if the one of the metrics exceeds 2 KiB."
204
+ },
205
+ {
206
+ "title": "Envelope event ID takes precedence",
207
+ "source": "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/envelope-items.mdx",
208
+ "operation": "sendEnvelope",
209
+ "status": 200,
210
+ "input": "{\"event_id\":\"11111111111141118111111111111111\"}\n{\"type\":\"event\"}\n{\"event_id\":\"22222222222242228222222222222222\",\"message\":\"header takes precedence\",\"platform\":\"javascript\"}\n",
211
+ "output": {
212
+ "id": "11111111111141118111111111111111"
213
+ },
214
+ "means": "If the identifier mismatches between the Envelope and payload, the Envelope header takes precedence."
215
+ }
216
+ ]
Binary file
@@ -0,0 +1,178 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Sentry ingest (Relay): the envelope endpoint",
5
+ "version": "sentry-docs 3ec4e139",
6
+ "description": "Written from Sentry's SDK developer documentation (spec/SOURCE.md): the one endpoint every Sentry SDK sends its data to. Sentry publishes no OpenAPI document for it."
7
+ },
8
+ "servers": [
9
+ {
10
+ "url": "https://o0.ingest.us.sentry.io",
11
+ "description": "the DSN's host: o<org id>.ingest[.<region>].sentry.io"
12
+ }
13
+ ],
14
+ "paths": {
15
+ "/api/{project_id}/envelope/": {
16
+ "post": {
17
+ "operationId": "sendEnvelope",
18
+ "summary": "Ingest an envelope",
19
+ "description": "The main ingestion endpoint for Envelopes. An envelope is a header line and items, each an item header line and its payload (an event, a transaction, a session, an attachment, a replay, a profile, a check-in, feedback, logs, a client report).",
20
+ "tags": [
21
+ "Ingest"
22
+ ],
23
+ "parameters": [
24
+ {
25
+ "name": "project_id",
26
+ "in": "path",
27
+ "required": true,
28
+ "schema": {
29
+ "type": "string",
30
+ "pattern": "^[0-9]+$"
31
+ },
32
+ "description": "The DSN's project id"
33
+ },
34
+ {
35
+ "name": "sentry_key",
36
+ "in": "query",
37
+ "required": false,
38
+ "schema": {
39
+ "type": "string"
40
+ },
41
+ "description": "The DSN's public key, where the X-Sentry-Auth header cannot be sent"
42
+ },
43
+ {
44
+ "name": "sentry_version",
45
+ "in": "query",
46
+ "required": false,
47
+ "schema": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ {
52
+ "name": "sentry_client",
53
+ "in": "query",
54
+ "required": false,
55
+ "schema": {
56
+ "type": "string"
57
+ }
58
+ },
59
+ {
60
+ "name": "X-Sentry-Auth",
61
+ "in": "header",
62
+ "required": false,
63
+ "schema": {
64
+ "type": "string"
65
+ },
66
+ "description": "Sentry sentry_version=7, sentry_client=<name/version>, sentry_key=<public key>"
67
+ },
68
+ {
69
+ "name": "Content-Encoding",
70
+ "in": "header",
71
+ "required": false,
72
+ "schema": {
73
+ "type": "string",
74
+ "enum": [
75
+ "gzip",
76
+ "deflate",
77
+ "br",
78
+ "zstd"
79
+ ]
80
+ }
81
+ }
82
+ ],
83
+ "requestBody": {
84
+ "required": true,
85
+ "content": {
86
+ "application/x-sentry-envelope": {
87
+ "schema": {
88
+ "type": "string",
89
+ "format": "binary"
90
+ }
91
+ },
92
+ "text/plain": {
93
+ "schema": {
94
+ "type": "string",
95
+ "format": "binary"
96
+ }
97
+ }
98
+ }
99
+ },
100
+ "responses": {
101
+ "200": {
102
+ "description": "The envelope was accepted",
103
+ "content": {
104
+ "application/json": {
105
+ "schema": {
106
+ "type": "object",
107
+ "properties": {
108
+ "id": {
109
+ "type": "string",
110
+ "description": "the envelope's event_id, when it has one"
111
+ }
112
+ }
113
+ },
114
+ "example": {
115
+ "id": "fc6d8c0c43fc4630ad850ee518f1b9d0"
116
+ }
117
+ }
118
+ }
119
+ },
120
+ "400": {
121
+ "description": "The envelope could not be read",
122
+ "headers": {
123
+ "X-Sentry-Error": {
124
+ "schema": {
125
+ "type": "string"
126
+ }
127
+ }
128
+ },
129
+ "content": {
130
+ "application/json": {
131
+ "schema": {
132
+ "type": "object",
133
+ "properties": {
134
+ "detail": {
135
+ "type": "string"
136
+ },
137
+ "causes": {
138
+ "type": "array",
139
+ "items": {
140
+ "type": "string"
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "403": {
149
+ "description": "No authentication, or a key the project does not have"
150
+ },
151
+ "413": {
152
+ "description": "The envelope or an item exceeds its size limit"
153
+ },
154
+ "429": {
155
+ "description": "Rate limited",
156
+ "headers": {
157
+ "Retry-After": {
158
+ "schema": {
159
+ "type": "string"
160
+ }
161
+ },
162
+ "X-Sentry-Rate-Limits": {
163
+ "schema": {
164
+ "type": "string"
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+ },
173
+ "tags": [
174
+ {
175
+ "name": "Ingest"
176
+ }
177
+ ]
178
+ }
Binary file
@@ -0,0 +1,25 @@
1
+ {
2
+ "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/envelopes/index.mdx": {
3
+ "status": 200,
4
+ "checked": "2026-10-03",
5
+ "quotes": {
6
+ "*200 MiB* for an envelope after decompression including all envelope items.": true,
7
+ "*1 MiB* for event (errors and transactions), span, log, and metric (statsd, buckets, meta) envelope items.": true,
8
+ "Implementations **must gracefully skip and retain** Items of unknown type": true
9
+ }
10
+ },
11
+ "https://raw.githubusercontent.com/getsentry/sentry-docs/3ec4e139711af82b38a3c2c17261f5f5cdb66dfc/develop-docs/sdk/foundations/transport/compression.mdx": {
12
+ "status": 200,
13
+ "checked": "2026-10-03",
14
+ "quotes": {
15
+ "The following content encodings are accepted by Relay and Sentry:": true
16
+ }
17
+ },
18
+ "https://raw.githubusercontent.com/getsentry/sentry/2efdd4760a75a3d395e3534b7f66a7fbb0c3f22e/src/sentry/monitors/serializers.py": {
19
+ "status": 200,
20
+ "checked": "2026-10-03",
21
+ "quotes": {
22
+ "str(obj.guid)": true
23
+ }
24
+ }
25
+ }
Binary file
@@ -0,0 +1,192 @@
1
+ // Offline envelope specification: the pinned reference bytes named in SOURCE.md own the facts.
2
+ import { readFileSync, writeFileSync } from 'node:fs';
3
+ import { gunzipSync } from 'node:zlib';
4
+ const reference = (name: string) => gunzipSync(readFileSync(new URL(name + '.mdx.gz', import.meta.url))).toString();
5
+ const envelopes = reference('envelopes');
6
+ const transport = reference('transport');
7
+ const authentication = reference('authentication');
8
+ const items = reference('envelope-items');
9
+ const compression = reference('compression');
10
+ reference('rate-limiting');
11
+ for (const [text, words] of [[envelopes, 'POST /api/<project_id>/envelope/'], [envelopes, '403 Forbidden'], [envelopes, '200 MiB'], [authentication, 'sentry_key'], [items, 'check_in'], [transport, '200'], [compression, 'zstd']]) {
12
+ if (!text.includes(words)) throw new Error('Pinned reference does not hold: ' + words);
13
+ }
14
+ const document = {
15
+ "openapi": "3.0.3",
16
+ "info": {
17
+ "title": "Sentry ingest (Relay): the envelope endpoint",
18
+ "version": "sentry-docs 3ec4e139",
19
+ "description": "Written from Sentry's SDK developer documentation (spec/SOURCE.md): the one endpoint every Sentry SDK sends its data to. Sentry publishes no OpenAPI document for it."
20
+ },
21
+ "servers": [
22
+ {
23
+ "url": "https://o0.ingest.us.sentry.io",
24
+ "description": "the DSN's host: o<org id>.ingest[.<region>].sentry.io"
25
+ }
26
+ ],
27
+ "paths": {
28
+ "/api/{project_id}/envelope/": {
29
+ "post": {
30
+ "operationId": "sendEnvelope",
31
+ "summary": "Ingest an envelope",
32
+ "description": "The main ingestion endpoint for Envelopes. An envelope is a header line and items, each an item header line and its payload (an event, a transaction, a session, an attachment, a replay, a profile, a check-in, feedback, logs, a client report).",
33
+ "tags": [
34
+ "Ingest"
35
+ ],
36
+ "parameters": [
37
+ {
38
+ "name": "project_id",
39
+ "in": "path",
40
+ "required": true,
41
+ "schema": {
42
+ "type": "string",
43
+ "pattern": "^[0-9]+$"
44
+ },
45
+ "description": "The DSN's project id"
46
+ },
47
+ {
48
+ "name": "sentry_key",
49
+ "in": "query",
50
+ "required": false,
51
+ "schema": {
52
+ "type": "string"
53
+ },
54
+ "description": "The DSN's public key, where the X-Sentry-Auth header cannot be sent"
55
+ },
56
+ {
57
+ "name": "sentry_version",
58
+ "in": "query",
59
+ "required": false,
60
+ "schema": {
61
+ "type": "string"
62
+ }
63
+ },
64
+ {
65
+ "name": "sentry_client",
66
+ "in": "query",
67
+ "required": false,
68
+ "schema": {
69
+ "type": "string"
70
+ }
71
+ },
72
+ {
73
+ "name": "X-Sentry-Auth",
74
+ "in": "header",
75
+ "required": false,
76
+ "schema": {
77
+ "type": "string"
78
+ },
79
+ "description": "Sentry sentry_version=7, sentry_client=<name/version>, sentry_key=<public key>"
80
+ },
81
+ {
82
+ "name": "Content-Encoding",
83
+ "in": "header",
84
+ "required": false,
85
+ "schema": {
86
+ "type": "string",
87
+ "enum": [
88
+ "gzip",
89
+ "deflate",
90
+ "br",
91
+ "zstd"
92
+ ]
93
+ }
94
+ }
95
+ ],
96
+ "requestBody": {
97
+ "required": true,
98
+ "content": {
99
+ "application/x-sentry-envelope": {
100
+ "schema": {
101
+ "type": "string",
102
+ "format": "binary"
103
+ }
104
+ },
105
+ "text/plain": {
106
+ "schema": {
107
+ "type": "string",
108
+ "format": "binary"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "responses": {
114
+ "200": {
115
+ "description": "The envelope was accepted",
116
+ "content": {
117
+ "application/json": {
118
+ "schema": {
119
+ "type": "object",
120
+ "properties": {
121
+ "id": {
122
+ "type": "string",
123
+ "description": "the envelope's event_id, when it has one"
124
+ }
125
+ }
126
+ },
127
+ "example": {
128
+ "id": "fc6d8c0c43fc4630ad850ee518f1b9d0"
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "400": {
134
+ "description": "The envelope could not be read",
135
+ "headers": {
136
+ "X-Sentry-Error": {
137
+ "schema": {
138
+ "type": "string"
139
+ }
140
+ }
141
+ },
142
+ "content": {
143
+ "application/json": {
144
+ "schema": {
145
+ "type": "object",
146
+ "properties": {
147
+ "detail": {
148
+ "type": "string"
149
+ },
150
+ "causes": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+ },
161
+ "403": {
162
+ "description": "No authentication, or a key the project does not have"
163
+ },
164
+ "413": {
165
+ "description": "The envelope or an item exceeds its size limit"
166
+ },
167
+ "429": {
168
+ "description": "Rate limited",
169
+ "headers": {
170
+ "Retry-After": {
171
+ "schema": {
172
+ "type": "string"
173
+ }
174
+ },
175
+ "X-Sentry-Rate-Limits": {
176
+ "schema": {
177
+ "type": "string"
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "tags": [
187
+ {
188
+ "name": "Ingest"
189
+ }
190
+ ]
191
+ };
192
+ writeFileSync(new URL('openapi.json', import.meta.url), JSON.stringify(document, null, 2) + '\n');
@@ -0,0 +1,16 @@
1
+ // GENERATED by scripts/create-pack.ts (--init, --index): a fixed file. The kernel serves the discovery door, the clock,
2
+ // the World's doors, the vendor's screens and the API from the pack's parts (architecture, "The pack contract").
3
+ import { createPackFetch, type DerivedFetch, type DerivedSurface, type PackFetchOptions } from '@volter/world-core';
4
+ import surface from './generated/surface.gen.json' with { type: 'json' };
5
+ import { manifest } from './manifest.ts';
6
+ import { around } from './semantics/around.ts';
7
+ import { ingestSemantics } from './semantics/index.ts';
8
+
9
+ export function createIngestLaneFetch(options: PackFetchOptions = {}): DerivedFetch {
10
+ return createPackFetch({
11
+ manifest,
12
+ surface: surface as DerivedSurface,
13
+ handlers: ingestSemantics,
14
+ around,
15
+ }, options);
16
+ }
@@ -0,0 +1 @@
1
+ {"generatedBy":"scripts/derive-pack.ts","spec":"openapi.json","format":"openapi","version":"sentry-docs 3ec4e139","resources":[],"operations":[{"id":"sendEnvelope","method":"post","path":"/api/{project_id}/envelope/","pathParams":["project_id"],"query":[{"name":"sentry_client","type":"string","required":false},{"name":"sentry_key","type":"string","required":false},{"name":"sentry_version","type":"string","required":false}],"body":[{"name":"body","type":"blob","required":true}],"bodyEncoding":"none","successStatus":200,"class":"non-resource"}]}
@@ -0,0 +1 @@
1
+ {"generatedBy":"scripts/derive-pack.ts","resources":{}}
@@ -0,0 +1,3 @@
1
+ // The ingest lane of the sentry pack: the vendor's manifest routes its requests here.
2
+ export { createIngestLaneFetch } from './fetch.ts';
3
+ export { manifest } from './manifest.ts';