@volter/twin-sentry 0.1.36 → 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,87 @@
1
+ {
2
+ "//": "GENERATED by scripts/pack-facts.ts — current pack descriptors and explicit world-runtime server backings; no prior-artifact entries are retained.",
3
+ "packs": {
4
+ "sentry": {
5
+ "adoption": {
6
+ "sdks": [
7
+ "@sentry/astro",
8
+ "@sentry/browser",
9
+ "@sentry/electron",
10
+ "@sentry/nextjs",
11
+ "@sentry/node",
12
+ "@sentry/nestjs",
13
+ "@sentry/react",
14
+ "@sentry/react-native",
15
+ "@sentry/remix",
16
+ "@sentry/sveltekit",
17
+ "@sentry/vue",
18
+ "@sentry/cli"
19
+ ],
20
+ "pypi": [
21
+ "sentry-sdk"
22
+ ],
23
+ "envStems": [
24
+ "APPSMITHSENTRY",
25
+ "SENTRY"
26
+ ]
27
+ },
28
+ "hosts": [
29
+ {
30
+ "host": "sentry.io"
31
+ },
32
+ {
33
+ "host": "us.sentry.io"
34
+ },
35
+ {
36
+ "host": "de.sentry.io"
37
+ },
38
+ {
39
+ "suffix": ".ingest.sentry.io"
40
+ },
41
+ {
42
+ "suffix": ".ingest.us.sentry.io"
43
+ },
44
+ {
45
+ "suffix": ".ingest.de.sentry.io"
46
+ }
47
+ ],
48
+ "archetype": "crud",
49
+ "protocol": {
50
+ "declared": "3",
51
+ "major": 3,
52
+ "standing": "current"
53
+ },
54
+ "transport": "rest",
55
+ "resources": [
56
+ "organization",
57
+ "project",
58
+ "project_key",
59
+ "event",
60
+ "issue",
61
+ "release",
62
+ "monitor",
63
+ "check_in"
64
+ ],
65
+ "endpointEnvNone": "an SDK sends to its DSN's host and sentry-cli to SENTRY_URL (sentry.io by default); the DSN the World issues names the World's ingest host, claimed by the host rules",
66
+ "credentialDoor": {
67
+ "path": "/_twin/app-credentials",
68
+ "body": {},
69
+ "fill": {
70
+ "SENTRY_DSN": "dsn",
71
+ "NEXT_PUBLIC_SENTRY_DSN": "dsn",
72
+ "NEXT_PUBLIC_SENTRY_DSN_CLIENT": "dsn",
73
+ "SENTRY_FRONT_DSN": "dsn",
74
+ "SENTRY_DSN_API": "dsn",
75
+ "VITE_SENTRY_DSN": "dsn",
76
+ "EXPO_PUBLIC_SENTRY_DSN": "dsn",
77
+ "SENTRY_AUTH_TOKEN": "auth_token",
78
+ "SENTRY_ORG": "org",
79
+ "SENTRY_ORGANIZATION": "org",
80
+ "SENTRY_PROJECT": "project"
81
+ }
82
+ },
83
+ "serveExport": "createSentryTwinServer"
84
+ }
85
+ },
86
+ "undeclared": []
87
+ }
@@ -0,0 +1,30 @@
1
+ # Sentry ingest
2
+
3
+ - **Why this document:** Sentry publishes no OpenAPI document for its ingestion endpoint (Relay's). This one is written
4
+ from Sentry's SDK developer documentation, getsentry/sentry-docs at `3ec4e139711af82b38a3c2c17261f5f5cdb66dfc`
5
+ (read 2026-09-30): `develop-docs/sdk/foundations/envelopes/index.mdx` (the endpoint, its headers, its authentication
6
+ and its size limits), `envelopes/envelope-items.mdx` (the item types), `transport/authentication.mdx` (the DSN and
7
+ `X-Sentry-Auth`), `transport/index.mdx` (the answer) and `transport/rate-limiting.mdx`.
8
+ - **Its one operation:** `POST /api/<project_id>/envelope/`, at the DSN's host (`o<org id>.ingest[.<region>].sentry.io`).
9
+ - **Corrections:** none.
10
+
11
+ - **Vendored document SHA-256** (openapi.json, decompressed bytes where gzipped): `f5f0151cb49d36d435404491c130ecaafd3b520762cb54478565b267d6e78906`.
12
+ - **Read by:** Codex contributor.
13
+
14
+ ## Offline derivation
15
+
16
+ `write-spec.ts` reads the retained reference bytes below and writes `openapi.json` without network access.
17
+
18
+ - `envelopes.mdx.gz`, decompressed SHA-256: `d3dba9159ea9ca150c551629c9d7eae8514e72f98656afd6f6a79fb2d184a130`.
19
+
20
+ - `envelope-items.mdx.gz`, decompressed SHA-256: `95fbf84df1c6d2481e72cd20a96574a226d919adf687f4bd908a78fa2cedcf8c`.
21
+
22
+ - `transport.mdx.gz`, decompressed SHA-256: `5e22a8f52cbfbe39ca85f5202022541be5afae0061f6baac04d77e9aebcbeec8`.
23
+
24
+ - `authentication.mdx.gz`, decompressed SHA-256: `ed0a7df5e3bbfec47df29a07ba6f3109eba99dbd62270b8e0cd08dd316616816`.
25
+
26
+ - `compression.mdx.gz`, decompressed SHA-256: `2fdae4a2362ff90931403d1efe96623526823d7ce3ae67ca456d3cbfb2d62223`.
27
+
28
+ - `rate-limiting.mdx.gz`, decompressed SHA-256: `22b10f68810b813cfef32ba3eadbdb17e05d679e4384ddcd5810bfa3d55c8145`.
29
+
30
+ `compression.mdx.gz` retains `transport/compression.mdx`, including gzip, deflate, br and zstd.
@@ -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
+ ]
@@ -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
+ }
@@ -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
+ }