@volter/world-core 3.0.164 → 3.0.166

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 (60) hide show
  1. package/attach.cjs +7 -3
  2. package/dist/attach.cjs +7 -3
  3. package/dist/generated/pack-facts.json +44 -3660
  4. package/dist/pack-facts.cjs +4 -4
  5. package/dist/src/browser.d.ts +4 -0
  6. package/dist/src/browser.js +10 -0
  7. package/dist/src/checkout.d.ts +4 -0
  8. package/dist/src/checkout.js +13 -0
  9. package/dist/src/derived-core.d.ts +45 -5
  10. package/dist/src/derived-core.js +53 -8
  11. package/dist/src/derived-real.js +144 -2
  12. package/dist/src/derived.d.ts +1 -1
  13. package/dist/src/executor.d.ts +2 -2
  14. package/dist/src/executor.js +13 -0
  15. package/dist/src/git/index.d.ts +1 -0
  16. package/dist/src/git/index.js +1 -0
  17. package/dist/src/git/smart-http-client.d.ts +28 -0
  18. package/dist/src/git/smart-http-client.js +95 -0
  19. package/dist/src/git/smart-http.d.ts +3 -0
  20. package/dist/src/git/smart-http.js +9 -0
  21. package/dist/src/head.d.ts +16 -1
  22. package/dist/src/head.js +52 -7
  23. package/dist/src/html.d.ts +29 -0
  24. package/dist/src/html.js +64 -0
  25. package/dist/src/index.d.ts +3 -1
  26. package/dist/src/index.js +3 -0
  27. package/dist/src/pack-fetch.js +41 -2
  28. package/dist/src/pack-paths.d.ts +2 -3
  29. package/dist/src/pack-paths.js +3 -13
  30. package/dist/src/packRegistry.d.ts +17 -1
  31. package/dist/src/runtime.d.ts +2 -0
  32. package/dist/src/runtime.js +3 -0
  33. package/dist/src/serve-http.d.ts +1 -1
  34. package/dist/src/serve-http.js +11 -2
  35. package/dist/src/smtp-server.d.ts +78 -0
  36. package/dist/src/smtp-server.js +160 -0
  37. package/dist/src/smtp.d.ts +29 -11
  38. package/dist/src/smtp.js +221 -52
  39. package/generated/pack-facts.json +44 -3660
  40. package/pack-facts.cjs +4 -4
  41. package/package.json +8 -2
  42. package/src/browser.ts +10 -0
  43. package/src/checkout.ts +12 -0
  44. package/src/derived-core.ts +68 -12
  45. package/src/derived-real.ts +121 -2
  46. package/src/derived.ts +2 -2
  47. package/src/executor.ts +13 -2
  48. package/src/git/index.ts +1 -0
  49. package/src/git/smart-http-client.ts +99 -0
  50. package/src/git/smart-http.ts +7 -0
  51. package/src/head.ts +37 -6
  52. package/src/html.ts +72 -0
  53. package/src/index.ts +4 -1
  54. package/src/pack-fetch.ts +35 -2
  55. package/src/pack-paths.ts +3 -11
  56. package/src/packRegistry.ts +9 -1
  57. package/src/runtime.ts +3 -0
  58. package/src/serve-http.ts +11 -3
  59. package/src/smtp-server.ts +166 -0
  60. package/src/smtp.ts +199 -53
@@ -1,371 +1,36 @@
1
1
  {
2
- "//": "GENERATED by scripts/pack-facts.ts — current pack descriptors and explicit world-runtime server backings; no prior-artifact entries are retained.",
2
+ "//": "GENERATED by scripts/pack-facts.ts — the platform's own server backings (world-runtime/src/backings.ts); a pack's facts are its own generated/pack-facts.json.",
3
3
  "packs": {
4
- "ai-gateway": {
5
- "adoption": {
6
- "sdks": [
7
- "@ai-sdk/gateway"
8
- ],
9
- "envStems": [
10
- "AI_GATEWAY"
11
- ]
12
- },
13
- "hosts": [
14
- {
15
- "host": "ai-gateway.vercel.sh"
16
- }
17
- ],
18
- "archetype": "crud",
19
- "protocol": {
20
- "declared": "3",
21
- "major": 3,
22
- "standing": "current"
23
- },
24
- "transport": "rest",
25
- "resources": [],
26
- "endpointEnvNone": "@ai-sdk/gateway calls https://ai-gateway.vercel.sh/v4/ai and an OpenAI client is given https://ai-gateway.vercel.sh/v1 in code; the World claims the host",
27
- "credentialDoor": {
28
- "account": {
29
- "field": "account"
30
- },
31
- "path": "/_twin/app-credentials",
32
- "body": {},
33
- "fill": {
34
- "AI_GATEWAY_API_KEY": "api_key"
35
- }
36
- },
37
- "serveExport": "createAiGatewayTwinServer"
38
- },
39
- "ambientcg": {
40
- "adoption": {
41
- "sdks": [],
42
- "envStems": []
43
- },
44
- "hosts": [
45
- {
46
- "host": "ambientcg.com"
47
- },
48
- {
49
- "host": "acg-download.struffelproductions.com"
50
- },
51
- {
52
- "host": "acg-media.struffelproductions.com"
53
- }
54
- ],
55
- "archetype": "crud",
56
- "protocol": {
57
- "declared": "3",
58
- "major": 3,
59
- "standing": "current"
4
+ "livekit": {
5
+ "serverBacking": {
6
+ "command": "livekit-server"
60
7
  },
61
- "transport": "rest",
62
- "resources": [
63
- "asset"
64
- ],
65
- "endpointEnvNone": "the editor calls ambientcg.com and the urls it answers; the World claims the hosts",
66
- "serveExport": "createAmbientcgTwinServer"
67
- },
68
- "anthropic": {
69
8
  "adoption": {
70
9
  "sdks": [
71
- "@anthropic-ai/sdk",
72
- "@ai-sdk/anthropic",
73
- "@anthropic-ai/vertex-sdk",
74
- "@anthropic-ai/bedrock-sdk",
75
- "@anthropic-ai/claude-agent-sdk"
76
- ],
77
- "scopes": [
78
- "@anthropic-ai/"
10
+ "livekit-client",
11
+ "livekit-server-sdk",
12
+ "@livekit/rtc-node",
13
+ "@livekit/react-native",
14
+ "@livekit/react-native-expo-plugin",
15
+ "@livekit/react-native-webrtc"
79
16
  ],
80
17
  "pypi": [
81
- "anthropic",
82
- "claude-agent-sdk",
83
- "claude-code-sdk"
84
- ],
85
- "envStems": [
86
- "ANTHROPIC"
87
- ]
88
- },
89
- "hosts": [
90
- {
91
- "host": "api.anthropic.com"
92
- },
93
- {
94
- "host": "platform.claude.com"
95
- },
96
- {
97
- "host": "console.anthropic.com"
98
- }
99
- ],
100
- "archetype": "generative",
101
- "protocol": {
102
- "declared": "3",
103
- "major": 3,
104
- "standing": "current"
105
- },
106
- "transport": "rest",
107
- "resources": [
108
- "organization",
109
- "workspace"
110
- ],
111
- "endpointEnv": {
112
- "name": "ANTHROPIC_BASE_URL",
113
- "note": "the SDKs' base URL (the TypeScript and Python SDKs and Claude Code read ANTHROPIC_BASE_URL)"
114
- },
115
- "credentialDoor": {
116
- "account": {
117
- "field": "account"
118
- },
119
- "path": "/_twin/app-credentials",
120
- "body": {},
121
- "fill": {
122
- "ANTHROPIC_API_KEY": "key"
123
- }
124
- },
125
- "serveExport": "createAnthropicTwinServer"
126
- },
127
- "aws": {
128
- "adoption": {
129
- "sdks": [
130
- "@aws-sdk/client-secrets-manager",
131
- "@aws-sdk/client-s3"
132
- ],
133
- "pypi": [],
134
- "envStems": [
135
- "AWS"
136
- ],
137
- "worldIds": [
138
- "secretsmanager",
139
- "s3"
140
- ]
141
- },
142
- "hosts": [
143
- {
144
- "key": "s3",
145
- "host": "s3.amazonaws.com"
146
- },
147
- {
148
- "key": "secretsmanager",
149
- "hostPattern": "^secretsmanager(-fips)?\\.[a-z0-9-]+\\.amazonaws\\.com$"
150
- },
151
- {
152
- "key": "s3",
153
- "suffix": ".s3.amazonaws.com"
154
- },
155
- {
156
- "key": "s3",
157
- "hostPattern": "^s3[.-][a-z0-9-]+\\.amazonaws\\.com$"
158
- },
159
- {
160
- "key": "s3",
161
- "hostPattern": "\\.s3[.-][a-z0-9-]+\\.amazonaws\\.com$"
162
- }
163
- ],
164
- "archetype": "crud",
165
- "protocol": {
166
- "declared": "3",
167
- "major": 3,
168
- "standing": "current"
169
- },
170
- "transport": "rest",
171
- "resources": [
172
- "secret",
173
- "s3_bucket",
174
- "s3_object",
175
- "s3_upload",
176
- "s3_part"
177
- ],
178
- "endpointEnv": {
179
- "name": "AWS_ENDPOINT_URL",
180
- "note": "The AWS SDKs read AWS_ENDPOINT_URL as every service's endpoint (https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html)."
181
- },
182
- "credentialDoor": {
183
- "account": {
184
- "field": "account"
185
- },
186
- "path": "/_twin/app-credentials",
187
- "body": {},
188
- "fill": {
189
- "AWS_ACCESS_KEY_ID": "access_key_id",
190
- "AWS_SECRET_ACCESS_KEY": "secret_access_key",
191
- "AWS_ACCESS_KEY": "access_key_id",
192
- "AWS_SECRET_KEY": "secret_access_key"
193
- }
194
- },
195
- "serveExport": "createAwsTwinServer"
196
- },
197
- "axiom": {
198
- "adoption": {
199
- "sdks": [
200
- "@axiomhq/js",
201
- "@axiomhq/logging",
202
- "@axiomhq/nextjs",
203
- "@axiomhq/winston",
204
- "next-axiom"
18
+ "livekit",
19
+ "livekit-agents",
20
+ "livekit-api"
205
21
  ],
206
22
  "envStems": [
207
- "AXIOM"
23
+ "LIVEKIT"
208
24
  ]
209
25
  },
210
- "hosts": [
211
- {
212
- "host": "api.axiom.co"
213
- },
214
- {
215
- "host": "cloud.axiom.co",
216
- "pathPattern": "^/api/v1/datasets/"
217
- }
218
- ],
219
- "archetype": "crud",
220
- "protocol": {
221
- "declared": "3",
222
- "major": 3,
223
- "standing": "current"
224
- },
225
- "transport": "rest",
226
- "resources": [],
26
+ "hostsNone": "The World runs the vendor server on its declared endpoint; SDKs read LIVEKIT_URL.",
227
27
  "endpointEnv": {
228
- "name": "AXIOM_URL",
229
- "note": "Optional next-axiom 0.17.0 reads this base URL; all API operations remain gaps."
230
- },
231
- "serveExport": "createAxiomTwinServer"
232
- },
233
- "bitly": {
234
- "adoption": {
235
- "sdks": [],
236
- "envStems": [
237
- "BITLY",
238
- "BUFFER_BITLY"
239
- ]
240
- },
241
- "hosts": [
242
- {
243
- "host": "api-ssl.bitly.com"
244
- },
245
- {
246
- "host": "bitly.com",
247
- "pathPattern": "^/oauth/authorize/?$"
248
- }
249
- ],
250
- "archetype": "crud",
251
- "protocol": {
252
- "declared": "3",
253
- "major": 3,
254
- "standing": "current"
255
- },
256
- "transport": "rest",
257
- "resources": [
258
- "group",
259
- "bitlink"
260
- ],
261
- "endpointEnvNone": "Dub uses literal vendor URLs and native fetch; the World routes them by host.",
262
- "credentialDoor": {
263
- "path": "/_twin/signup",
264
- "body": {
265
- "email": "publisher@example.test",
266
- "password": "throwaway-bitly-password",
267
- "login": "publisher"
268
- },
269
- "fill": {
270
- "BITLY_CLIENT_ID": "client_id",
271
- "BITLY_CLIENT_SECRET": "client_secret",
272
- "BUFFER_BITLY_API_KEY": "access_token"
273
- }
274
- },
275
- "serveExport": "createBitlyTwinServer"
276
- },
277
- "cerebras": {
278
- "adoption": {
279
- "sdks": [
280
- "@ai-sdk/cerebras",
281
- "@cerebras/cerebras_cloud_sdk"
282
- ],
283
- "envStems": [
284
- "CEREBRAS"
285
- ]
286
- },
287
- "hosts": [
288
- {
289
- "host": "api.cerebras.ai"
290
- }
291
- ],
292
- "archetype": "crud",
293
- "protocol": {
294
- "declared": "3",
295
- "major": 3,
296
- "standing": "current"
297
- },
298
- "transport": "rest",
299
- "resources": [],
300
- "endpointEnvNone": "the SDK calls https://api.cerebras.ai/v1 unless given a base URL in code; the World claims the host",
301
- "serveExport": "createCerebrasTwinServer"
302
- },
303
- "clerk": {
304
- "adoption": {
305
- "pypi": [
306
- "clerk-backend-api"
307
- ],
308
- "sdks": [
309
- "@clerk/backend",
310
- "@clerk/clerk-sdk-node",
311
- "@clerk/nextjs",
312
- "@clerk/fastify",
313
- "@clerk/express"
314
- ],
315
- "scopes": [
316
- "@clerk/"
317
- ],
318
- "envStems": [
319
- "CLERK"
320
- ]
321
- },
322
- "hosts": [
323
- {
324
- "host": "api.clerk.com"
325
- },
326
- {
327
- "host": "dashboard.clerk.com"
328
- },
329
- {
330
- "suffix": ".clerk.accounts.dev"
331
- },
332
- {
333
- "host": "frontend-api.clerk.dev"
334
- },
335
- {
336
- "hostPattern": "^clerk\\.(?:[a-z0-9-]+\\.)+[a-z0-9-]+$"
28
+ "name": "LIVEKIT_URL",
29
+ "templates": {
30
+ "LIVEKIT_URL": "ws://${host}:${port}"
337
31
  },
338
- {
339
- "host": "img.clerk.com"
340
- }
341
- ],
342
- "archetype": "crud",
343
- "protocol": {
344
- "declared": "3",
345
- "major": 3,
346
- "standing": "current"
32
+ "note": "The native server uses a private key; its twin front accepts only keys issued for retained World accounts."
347
33
  },
348
- "transport": "rest",
349
- "assets": [
350
- "vendor/clerk-js/dist"
351
- ],
352
- "resources": [
353
- "invitation",
354
- "user",
355
- "session",
356
- "organization",
357
- "organization_membership",
358
- "organization_invitation",
359
- "organization_role",
360
- "organization_permission",
361
- "jwt_template",
362
- "saml_connection",
363
- "client",
364
- "sign_in",
365
- "sign_up",
366
- "oauth_application",
367
- "organization_settings"
368
- ],
369
34
  "credentialDoor": {
370
35
  "path": "/_twin/app-credentials",
371
36
  "body": {},
@@ -373,3330 +38,49 @@
373
38
  "field": "account"
374
39
  },
375
40
  "fill": {
376
- "CLERK_SECRET_KEY": "secret_key",
377
- "CLERK_API_KEY": "secret_key",
378
- "CLERK_PUBLISHABLE_KEY": "publishable_key",
379
- "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY": "publishable_key",
380
- "VITE_CLERK_PUBLISHABLE_KEY": "publishable_key",
381
- "EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY": "publishable_key",
382
- "PUBLIC_CLERK_PUBLISHABLE_KEY": "publishable_key",
383
- "CLERK_JWT_KEY": "jwt_key",
384
- "CLERK_WEBHOOK_SECRET": "webhook_secret",
385
- "CLERK_WEBHOOK_SIGNING_SECRET": "webhook_secret"
41
+ "LIVEKIT_API_KEY": "api_key",
42
+ "LIVEKIT_API_SECRET": "api_secret"
386
43
  }
387
44
  },
388
- "serveExport": "createClerkTwinServer"
389
- },
390
- "clickhouse": {
391
- "adoption": {
392
- "sdks": [
393
- "@clickhouse/client",
394
- "@clickhouse/client-web"
395
- ],
396
- "pypi": [
397
- "clickhouse-driver",
398
- "clickhouse-connect",
399
- "infi-clickhouse-orm"
400
- ],
401
- "envStems": [
402
- "CLICKHOUSE"
403
- ]
404
- },
405
- "hostsNone": "Self-hosted database: its own declared host and allocated listener are supplied by managed infrastructure.",
406
- "archetype": "crud",
407
- "protocol": {
408
- "declared": "3",
409
- "major": 3,
410
- "standing": "current"
411
- },
412
- "transport": "rest",
413
- "resources": [
414
- "database",
415
- "table",
416
- "row"
417
- ],
418
- "endpointEnv": {
419
- "name": "CLICKHOUSE_URL",
420
- "note": "HTTP base URL read by the documented JavaScript client."
421
- },
422
- "managedService": {
423
- "kind": "clickhouse",
424
- "scheme": "http",
425
- "configurationArg": "--configuration",
426
- "originalInputs": {
427
- "version": 1,
428
- "manifestArg": "--original-inputs",
429
- "rootArg": "--original-root",
430
- "digestArg": "--original-inputs-sha256",
431
- "paths": [
432
- "/etc/clickhouse-server",
433
- "/docker-entrypoint-initdb.d",
434
- "/entrypoint.sh"
435
- ]
436
- },
437
- "note": "One HTTP8123/native9000 process and store; declared operator configuration is installed before listeners."
438
- },
439
45
  "sidePorts": [
440
46
  {
441
- "name": "native",
442
- "option": "nativePort",
443
- "flag": "--native-port",
444
- "note": "ClickHouse native TCP protocol, normally9000, beside HTTP8123."
47
+ "name": "rtc-tcp",
48
+ "option": "rtcTcpPort",
49
+ "flag": "--rtc-tcp-port",
50
+ "scheme": "tcp",
51
+ "note": "ICE/TCP media advertised on loopback at this port; the vendor binds all interfaces. Forward beside signaling for a browser on another machine."
445
52
  }
446
- ],
447
- "serveExport": "createClickhouseTwinServer"
53
+ ]
448
54
  },
449
- "cloudflare": {
450
- "adoption": {
451
- "pypi": [
452
- "cloudflare"
453
- ],
454
- "sdks": [
455
- "cloudflare",
456
- "aws4fetch",
457
- "react-turnstile",
458
- "@marsidev/react-turnstile"
459
- ],
460
- "envStems": [
461
- "CLOUDFLARE",
462
- "TURNSTILE"
463
- ],
464
- "tools": [
465
- {
466
- "package": "wrangler",
467
- "usage": "deployment"
468
- }
469
- ]
470
- },
471
- "hosts": [
472
- {
473
- "host": "api.cloudflare.com"
474
- },
475
- {
476
- "host": "dash.cloudflare.com",
477
- "pathPattern": "^/($|login|profile/api-tokens|_twin/users/|[0-9a-f]{32}/(r2/api-tokens|workers-and-pages))"
478
- },
479
- {
480
- "host": "challenges.cloudflare.com",
481
- "pathPattern": "^/turnstile/v0/"
482
- },
483
- {
484
- "suffix": ".r2.cloudflarestorage.com"
485
- }
486
- ],
487
- "hostsClaimed": {
488
- "door": "/_twin/hosts",
489
- "note": "R2 custom domains registered to a bucket (public read still requires enabled and active ownership/TLS), and Workers Custom Domains, answered with the Worker static assets."
490
- },
491
- "archetype": "crud",
492
- "protocol": {
493
- "declared": "3",
494
- "major": 3,
495
- "standing": "current"
496
- },
497
- "transport": "rest",
498
- "resources": [
499
- "account",
500
- "api_token",
501
- "worker_script",
502
- "worker_version",
503
- "worker_deployment",
504
- "worker_secret",
505
- "zone",
506
- "custom_hostname",
507
- "turnstile_widget",
508
- "r2_bucket",
509
- "r2_object",
510
- "r2_multipart",
511
- "r2_custom_domain"
512
- ],
513
- "endpointEnv": {
514
- "name": "CLOUDFLARE_API_BASE_URL",
515
- "templates": {
516
- "CLOUDFLARE_API_BASE_URL": "${url}/client/v4"
517
- },
518
- "note": "Cloudflare SDK and wrangler API base."
519
- },
520
- "credentialDoor": {
521
- "path": "/_twin/app-credentials",
522
- "body": {
523
- "account": "world"
524
- },
525
- "fill": {
526
- "CLOUDFLARE_API_TOKEN": "api_token",
527
- "CLOUDFLARE_API_KEY": "api_token",
528
- "CLOUDFLARE_ACCOUNT_ID": "account_id",
529
- "R2_ACCESS_KEY_ID": "r2_access_key_id",
530
- "R2_SECRET_ACCESS_KEY": "r2_secret_access_key",
531
- "CLOUDFLARE_ACCESS_KEY": "r2_access_key_id",
532
- "CLOUDFLARE_SECRET_ACCESS_KEY": "r2_secret_access_key",
533
- "R2_ENDPOINT": "r2_endpoint"
534
- }
55
+ "temporal": {
56
+ "serverBacking": {
57
+ "command": "temporal"
535
58
  },
536
- "serveExport": "createCloudflareTwinServer"
537
- },
538
- "cohere": {
539
59
  "adoption": {
540
60
  "sdks": [
541
- "@ai-sdk/cohere",
542
- "cohere-ai"
61
+ "@temporalio/client",
62
+ "@temporalio/worker",
63
+ "@temporalio/workflow",
64
+ "nestjs-temporal-core"
543
65
  ],
544
66
  "pypi": [
545
- "cohere"
67
+ "temporalio"
546
68
  ],
547
69
  "envStems": [
548
- "CO",
549
- "COHERE"
70
+ "TEMPORAL"
550
71
  ]
551
72
  },
552
- "hosts": [
553
- {
554
- "host": "api.cohere.com"
555
- },
556
- {
557
- "host": "api.cohere.ai"
558
- }
559
- ],
560
- "archetype": "crud",
561
- "protocol": {
562
- "declared": "3",
563
- "major": 3,
564
- "standing": "current"
565
- },
566
- "transport": "rest",
567
- "resources": [],
73
+ "hostsNone": "The World runs the vendor development server at its declared loopback gRPC endpoint.",
568
74
  "endpointEnv": {
569
- "name": "COHERE_API_URL",
75
+ "name": "TEMPORAL_ADDRESS",
570
76
  "templates": {
571
- "COHERE_API_URL": "${url}/v2/rerank"
77
+ "TEMPORAL_ADDRESS": "${host}:${port}",
78
+ "TEMPORAL_NAMESPACE": "default",
79
+ "TEMPORAL_TLS": "false",
80
+ "TEMPORAL_API_KEY": ""
572
81
  },
573
- "note": "The pinned LibreChat CohereReranker reads this full request URL; retain its /v2/rerank suffix."
574
- },
575
- "credentialDoor": {
576
- "path": "/_twin/app-credentials",
577
- "body": {},
578
- "fill": {
579
- "COHERE_API_KEY": "api_key"
580
- }
581
- },
582
- "serveExport": "createCohereTwinServer"
583
- },
584
- "currencyapi": {
585
- "adoption": {
586
- "sdks": [
587
- "@everapi/currencyapi-js"
588
- ],
589
- "pypi": [
590
- "currencyapicom"
591
- ],
592
- "envStems": [
593
- "CURRENCYAPI"
594
- ]
595
- },
596
- "hosts": [
597
- {
598
- "host": "api.currencyapi.com"
599
- }
600
- ],
601
- "archetype": "crud",
602
- "protocol": {
603
- "declared": "3",
604
- "major": 3,
605
- "standing": "current"
606
- },
607
- "transport": "rest",
608
- "resources": [],
609
- "endpointEnvNone": "The currencyapi clients hardcode https://api.currencyapi.com/v3 and read no base-URL env; interception uses the API host.",
610
- "serveExport": "createCurrencyapiTwinServer"
611
- },
612
- "daily": {
613
- "adoption": {
614
- "envStems": [
615
- "DAILY"
616
- ]
617
- },
618
- "hosts": [
619
- {
620
- "host": "api.daily.co"
621
- }
622
- ],
623
- "archetype": "crud",
624
- "protocol": {
625
- "declared": "3",
626
- "major": 3,
627
- "standing": "current"
628
- },
629
- "transport": "rest",
630
- "resources": [],
631
- "endpointEnvNone": "The Cal.com REST fetcher hardcodes https://api.daily.co/v1 and reads no base-URL env; interception uses the API host.",
632
- "serveExport": "createDailyTwinServer"
633
- },
634
- "deepgram": {
635
- "adoption": {
636
- "sdks": [
637
- "@deepgram/sdk"
638
- ],
639
- "envStems": [
640
- "DEEPGRAM"
641
- ]
642
- },
643
- "hosts": [
644
- {
645
- "host": "api.deepgram.com"
646
- }
647
- ],
648
- "archetype": "crud",
649
- "protocol": {
650
- "declared": "3",
651
- "major": 3,
652
- "standing": "current"
653
- },
654
- "transport": "rest",
655
- "resources": [],
656
- "endpointEnvNone": "No scanned application calls Deepgram; the World claims api.deepgram.com",
657
- "serveExport": "createDeepgramTwinServer"
658
- },
659
- "discord": {
660
- "adoption": {
661
- "sdks": [
662
- "discord.js",
663
- "@discordjs/rest",
664
- "@discordjs/core",
665
- "discord-api-types",
666
- "passport-discord",
667
- "@chat-adapter/discord"
668
- ],
669
- "envStems": [
670
- "DISCORD"
671
- ]
672
- },
673
- "hosts": [
674
- {
675
- "host": "discord.com",
676
- "pathPattern": "^/(api/|oauth2/)"
677
- },
678
- {
679
- "host": "discordapp.com",
680
- "pathPattern": "^/api/"
681
- },
682
- {
683
- "host": "gateway.discord.gg"
684
- }
685
- ],
686
- "archetype": "crud",
687
- "protocol": {
688
- "declared": "3",
689
- "major": 3,
690
- "standing": "current"
691
- },
692
- "transport": "rest",
693
- "resources": [
694
- "user",
695
- "application",
696
- "command",
697
- "guild",
698
- "role",
699
- "member",
700
- "channel",
701
- "message",
702
- "reaction",
703
- "webhook",
704
- "invite"
705
- ],
706
- "endpointEnvNone": "the apps call discord.com and send people to its authorize page; the World claims the host, `GET /gateway/bot` answers the twin's own socket, and a client that dials the Gateway at gateway.discord.gg reaches the same socket there",
707
- "credentialDoor": {
708
- "path": "/_twin/app-credentials",
709
- "body": {},
710
- "fill": {
711
- "DISCORD_CLIENT_ID": "client_id",
712
- "DISCORD_CLIENT_SECRET": "client_secret",
713
- "DISCORD_BOT_TOKEN": "bot_token",
714
- "DISCORD_BOT_TOKEN_ID": "bot_token",
715
- "DISCORD_APPLICATION_ID": "application_id",
716
- "DISCORD_PUBLIC_KEY": "public_key"
717
- }
718
- },
719
- "serveExport": "createDiscordTwinServer"
720
- },
721
- "duckduckgo": {
722
- "adoption": {
723
- "sdks": [],
724
- "envStems": []
725
- },
726
- "hosts": [
727
- {
728
- "host": "html.duckduckgo.com"
729
- },
730
- {
731
- "host": "duckduckgo.com"
732
- }
733
- ],
734
- "archetype": "crud",
735
- "protocol": {
736
- "declared": "3",
737
- "major": 3,
738
- "standing": "current"
739
- },
740
- "transport": "rest",
741
- "resources": [
742
- "page"
743
- ],
744
- "endpointEnv": {
745
- "name": "SUPERCODE_WEB_SEARCH_URL",
746
- "templates": {
747
- "SUPERCODE_WEB_SEARCH_URL": "${url}/html/"
748
- },
749
- "note": "Harness reads its documented full search endpoint; the World preserves the DuckDuckGo HTML path. Workbench navigation uses host substitution."
750
- },
751
- "serveExport": "createDuckduckgoTwinServer"
752
- },
753
- "e2b": {
754
- "adoption": {
755
- "sdks": [
756
- "e2b",
757
- "@e2b/code-interpreter"
758
- ],
759
- "envStems": [
760
- "E2B"
761
- ]
762
- },
763
- "hosts": [
764
- {
765
- "host": "api.e2b.app"
766
- },
767
- {
768
- "suffix": ".e2b.app"
769
- },
770
- {
771
- "host": "api.e2b.dev"
772
- },
773
- {
774
- "suffix": ".e2b.dev"
775
- }
776
- ],
777
- "archetype": "crud",
778
- "protocol": {
779
- "declared": "3",
780
- "major": 3,
781
- "standing": "current"
782
- },
783
- "transport": "rest",
784
- "resources": [
785
- "sandbox",
786
- "template"
787
- ],
788
- "endpointEnv": {
789
- "name": "E2B_API_URL",
790
- "templates": {
791
- "E2B_API_URL": "${url}",
792
- "E2B_SANDBOX_URL": "${url}"
793
- },
794
- "note": "Python e2b 2.45.0 and the JS SDK read E2B_API_URL; the JS SDK reads E2B_SANDBOX_URL and sends sandbox id/port headers; vendor hosts route through the World proxy"
795
- },
796
- "credentialDoor": {
797
- "account": {
798
- "field": "account"
799
- },
800
- "path": "/_twin/teams",
801
- "body": {
802
- "name": "World team"
803
- },
804
- "fill": {
805
- "E2B_API_KEY": "api_key"
806
- }
807
- },
808
- "serveExport": "createE2bTwinServer"
809
- },
810
- "elevenlabs": {
811
- "adoption": {
812
- "sdks": [
813
- "@elevenlabs/elevenlabs-js",
814
- "elevenlabs"
815
- ],
816
- "envStems": [
817
- "ELEVENLABS",
818
- "ELEVENSLABS"
819
- ]
820
- },
821
- "hosts": [
822
- {
823
- "host": "api.elevenlabs.io"
824
- }
825
- ],
826
- "archetype": "crud",
827
- "protocol": {
828
- "declared": "3",
829
- "major": 3,
830
- "standing": "current"
831
- },
832
- "transport": "rest",
833
- "resources": [
834
- "voice",
835
- "agent",
836
- "conversation",
837
- "workspace_secret"
838
- ],
839
- "endpointEnvNone": "the applications call https://api.elevenlabs.io unless configured with another URL; the World claims the host",
840
- "credentialDoor": {
841
- "path": "/_twin/app-credentials",
842
- "body": {},
843
- "fill": {
844
- "ELEVENLABS_API_KEY": "api_key",
845
- "ELEVENSLABS_API_KEY": "api_key"
846
- }
847
- },
848
- "serveExport": "createElevenlabsTwinServer"
849
- },
850
- "expo": {
851
- "adoption": {
852
- "sdks": [
853
- "expo-server-sdk"
854
- ],
855
- "pypi": [
856
- "exponent-server-sdk"
857
- ],
858
- "envStems": [
859
- "EXPO_ACCESS"
860
- ]
861
- },
862
- "hosts": [
863
- {
864
- "host": "exp.host",
865
- "pathPattern": "^/--/api/v2/push/"
866
- }
867
- ],
868
- "archetype": "crud",
869
- "protocol": {
870
- "declared": "3",
871
- "major": 3,
872
- "standing": "current"
873
- },
874
- "transport": "rest",
875
- "resources": [],
876
- "endpointEnv": {
877
- "name": "EXPO_BASE_URL",
878
- "note": "expo-server-sdk reads its base URL from EXPO_BASE_URL, so its own Undici client reaches the twin"
879
- },
880
- "serveExport": "createExpoTwinServer"
881
- },
882
- "fal": {
883
- "adoption": {
884
- "sdks": [
885
- "@fal-ai/client"
886
- ],
887
- "envStems": [
888
- "FAL"
889
- ]
890
- },
891
- "hosts": [
892
- {
893
- "host": "fal.run"
894
- },
895
- {
896
- "host": "api.fal.ai"
897
- }
898
- ],
899
- "archetype": "generative",
900
- "protocol": {
901
- "declared": "3",
902
- "major": 3,
903
- "standing": "current"
904
- },
905
- "transport": "rest",
906
- "resources": [],
907
- "endpointEnvNone": "the customer life calls https://fal.run/fal-ai/<model>; the World claims the hosts",
908
- "credentialDoor": {
909
- "path": "/_twin/app-credentials",
910
- "body": {},
911
- "fill": {
912
- "FAL_KEY": "api_key"
913
- }
914
- },
915
- "serveExport": "createFalTwinServer"
916
- },
917
- "firecrawl": {
918
- "adoption": {
919
- "sdks": [
920
- "@mendable/firecrawl-js"
921
- ],
922
- "envStems": [
923
- "FIRECRAWL"
924
- ]
925
- },
926
- "hosts": [
927
- {
928
- "host": "api.firecrawl.dev"
929
- }
930
- ],
931
- "archetype": "crud",
932
- "protocol": {
933
- "declared": "3",
934
- "major": 3,
935
- "standing": "current"
936
- },
937
- "transport": "rest",
938
- "resources": [],
939
- "endpointEnvNone": "LibreChat defaults to api.firecrawl.dev/v2/scrape; the World claims that host",
940
- "credentialDoor": {
941
- "path": "/_twin/app-credentials",
942
- "body": {},
943
- "fill": {
944
- "FIRECRAWL_API_KEY": "api_key"
945
- }
946
- },
947
- "serveExport": "createFirecrawlTwinServer"
948
- },
949
- "fly": {
950
- "adoption": {
951
- "sdks": [],
952
- "envStems": [
953
- "FLY"
954
- ]
955
- },
956
- "hosts": [
957
- {
958
- "host": "api.machines.dev"
959
- },
960
- {
961
- "suffix": ".fly.dev"
962
- }
963
- ],
964
- "archetype": "crud",
965
- "protocol": {
966
- "declared": "3",
967
- "major": 3,
968
- "standing": "current"
969
- },
970
- "transport": "rest",
971
- "resources": [
972
- "app",
973
- "machine",
974
- "volume"
975
- ],
976
- "endpointEnv": {
977
- "name": "FLY_API_HOSTNAME",
978
- "note": "Substrate reads the Machines API base from FLY_API_HOSTNAME (fly-provider.ts), as flyctl does"
979
- },
980
- "credentialDoor": {
981
- "path": "/_twin/tokens",
982
- "body": {
983
- "org": "personal"
984
- },
985
- "fill": {
986
- "FLY_API_TOKEN": "token"
987
- }
988
- },
989
- "serveExport": "createFlyTwinServer"
990
- },
991
- "gemini": {
992
- "adoption": {
993
- "sdks": [
994
- "@google/genai",
995
- "@ai-sdk/google",
996
- "@google/generative-ai"
997
- ],
998
- "envStems": [
999
- "GEMINI",
1000
- "GOOGLE_GENERATIVE_AI"
1001
- ]
1002
- },
1003
- "hosts": [
1004
- {
1005
- "host": "generativelanguage.googleapis.com"
1006
- }
1007
- ],
1008
- "archetype": "crud",
1009
- "protocol": {
1010
- "declared": "3",
1011
- "major": 3,
1012
- "standing": "current"
1013
- },
1014
- "transport": "rest",
1015
- "resources": [],
1016
- "endpointEnv": {
1017
- "name": "GOOGLE_GEMINI_BASE_URL",
1018
- "note": "Google GenAI SDK reads this base URL; other callers retain the routed vendor host."
1019
- },
1020
- "credentialDoor": {
1021
- "account": {
1022
- "field": "account"
1023
- },
1024
- "path": "/_twin/app-credentials",
1025
- "body": {},
1026
- "fill": {
1027
- "GEMINI_API_KEY": "api_key",
1028
- "GOOGLE_GENERATIVE_AI_API_KEY": "api_key",
1029
- "GOOGLE_API_KEY": "api_key",
1030
- "GOOGLE_KEY": "api_key"
1031
- }
1032
- },
1033
- "serveExport": "createGeminiTwinServer"
1034
- },
1035
- "github": {
1036
- "adoption": {
1037
- "sdks": [
1038
- "@octokit/rest",
1039
- "@actions/github",
1040
- "@octokit/auth-app",
1041
- "@octokit/auth-oauth-app",
1042
- "@octokit/auth-oauth-device",
1043
- "@octokit/core",
1044
- "@octokit/graphql",
1045
- "@octokit/webhooks",
1046
- "octokit"
1047
- ],
1048
- "scopes": [
1049
- "@octokit/"
1050
- ],
1051
- "pypi": [
1052
- "PyGithub",
1053
- "githubkit"
1054
- ],
1055
- "envStems": [
1056
- "GITHUB",
1057
- "GH",
1058
- "BACKENDGITHUB",
1059
- "INFAPPCONNECTIONGITHUBAPP",
1060
- "INFAPPCONNECTIONGITHUBOAUTH",
1061
- "INFAPPCONNECTIONGITHUBRADARAPP",
1062
- "APPSMITHOAUTH2GITHUB"
1063
- ]
1064
- },
1065
- "hosts": [
1066
- {
1067
- "host": "api.github.com"
1068
- },
1069
- {
1070
- "host": "uploads.github.com"
1071
- },
1072
- {
1073
- "host": "raw.githubusercontent.com"
1074
- },
1075
- {
1076
- "host": "token.actions.githubusercontent.com"
1077
- },
1078
- {
1079
- "host": "github.com",
1080
- "pathPattern": "^/login|^/session|^/settings/|^/organizations/|^/apps/|^/[^/]+/[^/]+/(?:info/refs|git-upload-pack|git-receive-pack)$|^/[^/]+/[^/]+\\.git/|^/[^/]+/[^/]+/?$|^/[^/]+/[^/]+/(?:issues|pulls?|blob|raw|tree|commits?|compare)(?:/|$)"
1081
- }
1082
- ],
1083
- "archetype": "crud",
1084
- "protocol": {
1085
- "declared": "3",
1086
- "major": 3,
1087
- "standing": "current"
1088
- },
1089
- "transport": "rest",
1090
- "resources": [
1091
- "repository",
1092
- "issue",
1093
- "pull",
1094
- "workflow_run",
1095
- "check_run",
1096
- "release",
1097
- "app"
1098
- ],
1099
- "credentialDoor": {
1100
- "account": {
1101
- "field": "account"
1102
- },
1103
- "path": "/_twin/app-credentials",
1104
- "body": {},
1105
- "fill": {
1106
- "GITHUB_TOKEN": "token",
1107
- "GH_TOKEN": "token",
1108
- "GITHUB_PAT": "token",
1109
- "GITHUB_ACCESS_TOKEN": "token"
1110
- }
1111
- },
1112
- "serveExport": "createGithubTwinServer"
1113
- },
1114
- "googlecalendar": {
1115
- "adoption": {
1116
- "sdks": [
1117
- "@googleapis/calendar"
1118
- ],
1119
- "pypi": [],
1120
- "envStems": [
1121
- "GOOGLECALENDAR"
1122
- ]
1123
- },
1124
- "hosts": [
1125
- {
1126
- "host": "www.googleapis.com",
1127
- "pathPattern": "^/(batch/)?calendar/v3(/|$)"
1128
- }
1129
- ],
1130
- "archetype": "crud",
1131
- "protocol": {
1132
- "declared": "3",
1133
- "major": 3,
1134
- "standing": "current"
1135
- },
1136
- "transport": "rest",
1137
- "resources": [],
1138
- "endpointEnvNone": "Google generated clients take rootUrl in code; the World routes the declared Calendar API paths.",
1139
- "serveExport": "createGooglecalendarTwinServer"
1140
- },
1141
- "googlefonts": {
1142
- "adoption": {
1143
- "sdks": [],
1144
- "envStems": [
1145
- "GOOGLE_FONTS"
1146
- ]
1147
- },
1148
- "hosts": [
1149
- {
1150
- "host": "www.googleapis.com",
1151
- "pathPattern": "^/webfonts/v1/webfonts$"
1152
- },
1153
- {
1154
- "host": "webfonts.googleapis.com",
1155
- "pathPattern": "^/v1/webfonts$"
1156
- },
1157
- {
1158
- "host": "fonts.googleapis.com",
1159
- "pathPattern": "^/css2?$"
1160
- },
1161
- {
1162
- "host": "fonts.gstatic.com",
1163
- "pathPattern": "^/(s/|l/font$)"
1164
- }
1165
- ],
1166
- "archetype": "crud",
1167
- "protocol": {
1168
- "declared": "3",
1169
- "major": 3,
1170
- "standing": "current"
1171
- },
1172
- "transport": "rest",
1173
- "resources": [
1174
- "webfont",
1175
- "_api_key",
1176
- "_font_catalog",
1177
- "_stylesheet",
1178
- "_font_file"
1179
- ],
1180
- "endpointEnvNone": "Pinned helper hardcodes the vendor API and CSS hosts, then downloads their returned gstatic URLs. Scoped host routing preserves these URLs.",
1181
- "credentialDoor": {
1182
- "path": "/_twin/app-credentials",
1183
- "body": {},
1184
- "fill": {
1185
- "GOOGLE_FONTS_API_KEY": "api_key"
1186
- }
1187
- },
1188
- "serveExport": "createGooglefontsTwinServer"
1189
- },
1190
- "googleoauth": {
1191
- "adoption": {
1192
- "sdks": [
1193
- "google-auth-library",
1194
- "@googleapis/oauth2"
1195
- ],
1196
- "envStems": [
1197
- "GOOGLE_CLIENT",
1198
- "GOOGLE_OAUTH"
1199
- ]
1200
- },
1201
- "hosts": [
1202
- {
1203
- "host": "accounts.google.com",
1204
- "pathPattern": "^/(o/oauth2/v2/auth(/oauthchooseaccount|/choose)?|o/oauth2/auth|o/oauth2/token|signin/oauth/error|\\.well-known/openid-configuration)/?$"
1205
- },
1206
- {
1207
- "host": "accounts.google.com",
1208
- "pathPattern": "^/_twin/"
1209
- },
1210
- {
1211
- "host": "oauth2.googleapis.com",
1212
- "pathPattern": "^/(token|oauth2/v4/token|revoke|tokeninfo|device/code)/?$"
1213
- },
1214
- {
1215
- "host": "www.googleapis.com",
1216
- "pathPattern": "^/(oauth2/(v1/certs|v3/(certs|userinfo)|v2/userinfo)|userinfo/v2/me)/?$"
1217
- },
1218
- {
1219
- "host": "openidconnect.googleapis.com"
1220
- }
1221
- ],
1222
- "archetype": "crud",
1223
- "protocol": {
1224
- "declared": "3",
1225
- "major": 3,
1226
- "standing": "current"
1227
- },
1228
- "transport": "rest",
1229
- "resources": [
1230
- "client",
1231
- "account",
1232
- "access_token",
1233
- "api_key"
1234
- ],
1235
- "endpointEnvNone": "Google's OAuth libraries read no base-URL variable: the endpoints are the discovery document's, claimed by the host rules.",
1236
- "credentialDoor": {
1237
- "account": {
1238
- "field": "world_account"
1239
- },
1240
- "path": "/_twin/credentials",
1241
- "body": {
1242
- "client_email": "world@world-project.iam.gserviceaccount.com",
1243
- "client": {
1244
- "redirect_uris": [
1245
- "http://localhost:3000/oauth2callback"
1246
- ],
1247
- "name": "World App"
1248
- },
1249
- "account": {
1250
- "sub": "100000000000000000001",
1251
- "email": "person@world.example",
1252
- "name": "World Person"
1253
- },
1254
- "api_key": {
1255
- "name": "API key 1"
1256
- }
1257
- },
1258
- "fill": {
1259
- "GOOGLE_APPLICATION_CREDENTIALS": "file:credentials",
1260
- "GOOGLE_CLIENT_ID": "client_id",
1261
- "GOOGLE_CLIENT_SECRET": "client_secret",
1262
- "YOUTUBE_API_KEY": "api_key"
1263
- }
1264
- },
1265
- "serveExport": "createGoogleoauthTwinServer"
1266
- },
1267
- "groq": {
1268
- "adoption": {
1269
- "sdks": [
1270
- "@ai-sdk/groq",
1271
- "groq-sdk"
1272
- ],
1273
- "envStems": [
1274
- "GROQ"
1275
- ]
1276
- },
1277
- "hosts": [
1278
- {
1279
- "host": "api.groq.com"
1280
- }
1281
- ],
1282
- "archetype": "crud",
1283
- "protocol": {
1284
- "declared": "3",
1285
- "major": 3,
1286
- "standing": "current"
1287
- },
1288
- "transport": "rest",
1289
- "resources": [],
1290
- "endpointEnvNone": "the SDK calls https://api.groq.com/openai/v1 unless given a base URL in code; the World claims the host",
1291
- "serveExport": "createGroqTwinServer"
1292
- },
1293
- "hackernews": {
1294
- "adoption": {
1295
- "sdks": [],
1296
- "envStems": [
1297
- "HN",
1298
- "HACKERNEWS"
1299
- ]
1300
- },
1301
- "hosts": [
1302
- {
1303
- "host": "hacker-news.firebaseio.com"
1304
- },
1305
- {
1306
- "host": "news.ycombinator.com"
1307
- }
1308
- ],
1309
- "archetype": "crud",
1310
- "protocol": {
1311
- "declared": "3",
1312
- "major": 3,
1313
- "standing": "current"
1314
- },
1315
- "transport": "rest",
1316
- "resources": [
1317
- "item",
1318
- "user",
1319
- "_vote",
1320
- "_person",
1321
- "_web_session",
1322
- "_web_session_issue"
1323
- ],
1324
- "endpointEnvNone": "Hacker News publishes no SDK: clients fetch https://hacker-news.firebaseio.com/v0 directly and people use news.ycombinator.com in a browser, both reached by host",
1325
- "credentialDoor": {
1326
- "path": "/_twin/app-credentials",
1327
- "body": {},
1328
- "fill": {
1329
- "HN_USERNAME": "acct",
1330
- "HN_PASSWORD": "pw"
1331
- }
1332
- },
1333
- "serveExport": "createHackernewsTwinServer"
1334
- },
1335
- "hubspot": {
1336
- "adoption": {
1337
- "sdks": [
1338
- "@hubspot/api-client"
1339
- ],
1340
- "pypi": [
1341
- "hubspot-api-client"
1342
- ],
1343
- "envStems": [
1344
- "HUBSPOT",
1345
- "HUBSPOTPRIVATEAPP"
1346
- ]
1347
- },
1348
- "hosts": [
1349
- {
1350
- "host": "api.hubapi.com"
1351
- },
1352
- {
1353
- "host": "app.hubspot.com",
1354
- "demandPathPattern": false
1355
- },
1356
- {
1357
- "host": "api.hsforms.com"
1358
- }
1359
- ],
1360
- "archetype": "crud",
1361
- "protocol": {
1362
- "declared": "3",
1363
- "major": 3,
1364
- "standing": "current"
1365
- },
1366
- "transport": "rest",
1367
- "resources": [],
1368
- "endpointEnvNone": "The optional integrations address HubSpot hosts; no SDK base-URL environment variable is injected.",
1369
- "serveExport": "createHubspotTwinServer"
1370
- },
1371
- "huggingface": {
1372
- "adoption": {
1373
- "sdks": [
1374
- "@huggingface/transformers",
1375
- "@huggingface/hub",
1376
- "huggingface_hub"
1377
- ],
1378
- "envStems": [
1379
- "HF_TOKEN",
1380
- "HUGGING_FACE_HUB_TOKEN",
1381
- "HF_ENDPOINT"
1382
- ]
1383
- },
1384
- "hosts": [
1385
- {
1386
- "host": "huggingface.co"
1387
- },
1388
- {
1389
- "host": "us.aws.cdn.hf.co"
1390
- }
1391
- ],
1392
- "archetype": "crud",
1393
- "protocol": {
1394
- "declared": "3",
1395
- "major": 3,
1396
- "standing": "current"
1397
- },
1398
- "transport": "rest",
1399
- "maxRequestBodySize": 2147483648,
1400
- "resources": [
1401
- "repo"
1402
- ],
1403
- "endpointEnvNone": "localrouter's catalog names https://huggingface.co URLs; the World claims the hosts",
1404
- "credentialDoor": {
1405
- "path": "/_twin/users",
1406
- "body": {
1407
- "name": "world"
1408
- },
1409
- "fill": {
1410
- "HF_TOKEN": "token"
1411
- }
1412
- },
1413
- "serveExport": "createHuggingfaceTwinServer"
1414
- },
1415
- "instagram": {
1416
- "adoption": {
1417
- "sdks": [],
1418
- "envStems": [
1419
- "INSTAGRAM"
1420
- ]
1421
- },
1422
- "hosts": [
1423
- {
1424
- "host": "graph.instagram.com"
1425
- },
1426
- {
1427
- "host": "api.instagram.com"
1428
- },
1429
- {
1430
- "host": "www.instagram.com",
1431
- "pathPattern": "^/oauth/authorize"
1432
- },
1433
- {
1434
- "host": "scontent.cdninstagram.com"
1435
- }
1436
- ],
1437
- "archetype": "crud",
1438
- "protocol": {
1439
- "declared": "3",
1440
- "major": 3,
1441
- "standing": "current"
1442
- },
1443
- "transport": "rest",
1444
- "resources": [
1445
- "container",
1446
- "media",
1447
- "comment"
1448
- ],
1449
- "endpointEnvNone": "an app calls graph.instagram.com and api.instagram.com and sends people to www.instagram.com; the World claims the hosts",
1450
- "credentialDoor": {
1451
- "path": "/_twin/app-credentials",
1452
- "body": {},
1453
- "fill": {
1454
- "INSTAGRAM_APP_ID": "app_id",
1455
- "INSTAGRAM_APP_SECRET": "app_secret",
1456
- "INSTAGRAM_ACCESS_TOKEN": "access_token",
1457
- "INSTAGRAM_USER_ID": "user_id"
1458
- }
1459
- },
1460
- "serveExport": "createInstagramTwinServer"
1461
- },
1462
- "intercom": {
1463
- "adoption": {
1464
- "sdks": [
1465
- "intercom-client"
1466
- ],
1467
- "envStems": [
1468
- "INTERCOM"
1469
- ]
1470
- },
1471
- "hosts": [
1472
- {
1473
- "host": "api.intercom.io"
1474
- },
1475
- {
1476
- "host": "app.intercom.com",
1477
- "pathPattern": "^/oauth",
1478
- "demandPathPattern": false
1479
- }
1480
- ],
1481
- "archetype": "crud",
1482
- "protocol": {
1483
- "declared": "3",
1484
- "major": 3,
1485
- "standing": "current"
1486
- },
1487
- "transport": "rest",
1488
- "resources": [],
1489
- "endpointEnvNone": "intercom-client takes its base URL in code; the optional integrations address hosts routed by the World.",
1490
- "serveExport": "createIntercomTwinServer"
1491
- },
1492
- "jira": {
1493
- "adoption": {
1494
- "sdks": [
1495
- "jira.js",
1496
- "jira-client"
1497
- ],
1498
- "envStems": [
1499
- "JIRA",
1500
- "ATLASSIAN"
1501
- ]
1502
- },
1503
- "hosts": [
1504
- {
1505
- "host": "auth.atlassian.com"
1506
- },
1507
- {
1508
- "host": "api.atlassian.com",
1509
- "pathPattern": "^/(oauth/|ex/jira/)"
1510
- },
1511
- {
1512
- "suffix": ".atlassian.net"
1513
- }
1514
- ],
1515
- "archetype": "crud",
1516
- "protocol": {
1517
- "declared": "3",
1518
- "major": 3,
1519
- "standing": "current"
1520
- },
1521
- "transport": "rest",
1522
- "resources": [
1523
- "project",
1524
- "issue",
1525
- "comment",
1526
- "component"
1527
- ],
1528
- "endpointEnvNone": "The on-call agent uses its site URL; the OAuth flow uses auth.atlassian.com and api.atlassian.com, all claimed by the World",
1529
- "credentialDoor": {
1530
- "path": "/_twin/api-token",
1531
- "body": {
1532
- "site": "acme",
1533
- "email": "agent@acme.example",
1534
- "password": "world-password"
1535
- },
1536
- "fill": {
1537
- "JIRA_API_TOKEN": "apiToken"
1538
- }
1539
- },
1540
- "serveExport": "createJiraTwinServer"
1541
- },
1542
- "linear": {
1543
- "adoption": {
1544
- "sdks": [
1545
- "@linear/sdk"
1546
- ],
1547
- "envStems": [
1548
- "LINEAR"
1549
- ]
1550
- },
1551
- "hosts": [
1552
- {
1553
- "host": "api.linear.app"
1554
- },
1555
- {
1556
- "host": "linear.app"
1557
- }
1558
- ],
1559
- "archetype": "crud",
1560
- "protocol": {
1561
- "declared": "3",
1562
- "major": 3,
1563
- "standing": "current"
1564
- },
1565
- "transport": "graphql",
1566
- "resources": [
1567
- "organization",
1568
- "user",
1569
- "team",
1570
- "workflow_state",
1571
- "project",
1572
- "issue",
1573
- "comment",
1574
- "issue_label"
1575
- ],
1576
- "endpointEnvNone": "Linear uses api.linear.app/graphql and linear.app for its workspace and OAuth authorize page; the World claims those hosts",
1577
- "credentialDoor": {
1578
- "path": "/_twin/local-credentials",
1579
- "body": {},
1580
- "fill": {
1581
- "LINEAR_CLIENT_ID": "client_id",
1582
- "LINEAR_CLIENT_SECRET": "client_secret",
1583
- "LINEAR_API_KEY": "api_key"
1584
- }
1585
- },
1586
- "serveExport": "createLinearTwinServer"
1587
- },
1588
- "linkedin": {
1589
- "adoption": {
1590
- "sdks": [
1591
- "linkedin-api-client"
1592
- ],
1593
- "pypi": [
1594
- "linkedin-api-client"
1595
- ],
1596
- "envStems": [
1597
- "LINKEDIN"
1598
- ]
1599
- },
1600
- "hosts": [
1601
- {
1602
- "host": "api.linkedin.com",
1603
- "pathPattern": "^/(rest|v2)/|^/_twin/",
1604
- "demandPathPattern": "^/(rest|v2)/"
1605
- },
1606
- {
1607
- "host": "www.linkedin.com",
1608
- "pathPattern": "^/$|^/(dms-uploads|dms-mpf-uploads|feed|company|login|uas/login|m/logout|signup/cold-join|signup/api/cors/createAccount|checkpoint/lg/login-submit)(/|$)|^/_twin/",
1609
- "demandPathPattern": "^/(dms-uploads|dms-mpf-uploads)(/|$)"
1610
- },
1611
- {
1612
- "host": "linkedin.com",
1613
- "pathPattern": "^/$|^/(dms-uploads|dms-mpf-uploads|feed|company|login|uas/login|m/logout|signup/cold-join|signup/api/cors/createAccount|checkpoint/lg/login-submit)(/|$)|^/_twin/",
1614
- "demandPathPattern": "^/(dms-uploads|dms-mpf-uploads)(/|$)"
1615
- },
1616
- {
1617
- "host": "media.licdn.com",
1618
- "pathPattern": "^/dms/image/",
1619
- "demandPathPattern": false
1620
- },
1621
- {
1622
- "host": "dms.licdn.com",
1623
- "pathPattern": "^/playlist/",
1624
- "demandPathPattern": false
1625
- }
1626
- ],
1627
- "archetype": "crud",
1628
- "protocol": {
1629
- "declared": "3",
1630
- "major": 3,
1631
- "standing": "current"
1632
- },
1633
- "transport": "rest",
1634
- "resources": [
1635
- "post",
1636
- "image",
1637
- "video",
1638
- "organization",
1639
- "member",
1640
- "organization_acl",
1641
- "developer_app",
1642
- "_access_token",
1643
- "_usage",
1644
- "_upload",
1645
- "_person",
1646
- "_web_session"
1647
- ],
1648
- "endpointEnvNone": "LinkedIn's clients (linkedin-api-client, plain fetch) read no base-URL variable; the World claims api.linkedin.com and www.linkedin.com",
1649
- "credentialDoor": {
1650
- "path": "/_twin/app-credentials",
1651
- "body": {},
1652
- "fill": {
1653
- "LINKEDIN_ACCESS_TOKEN": "access_token"
1654
- }
1655
- },
1656
- "serveExport": "createLinkedinTwinServer"
1657
- },
1658
- "livekit": {
1659
- "serverBacking": {
1660
- "command": "livekit-server"
1661
- },
1662
- "adoption": {
1663
- "sdks": [
1664
- "livekit-client",
1665
- "livekit-server-sdk",
1666
- "@livekit/rtc-node",
1667
- "@livekit/react-native",
1668
- "@livekit/react-native-expo-plugin",
1669
- "@livekit/react-native-webrtc"
1670
- ],
1671
- "pypi": [
1672
- "livekit",
1673
- "livekit-agents",
1674
- "livekit-api"
1675
- ],
1676
- "envStems": [
1677
- "LIVEKIT"
1678
- ]
1679
- },
1680
- "hostsNone": "The World runs the vendor server on its declared endpoint; SDKs read LIVEKIT_URL.",
1681
- "endpointEnv": {
1682
- "name": "LIVEKIT_URL",
1683
- "templates": {
1684
- "LIVEKIT_URL": "ws://${host}:${port}"
1685
- },
1686
- "note": "The native server uses a private key; its twin front accepts only keys issued for retained World accounts."
1687
- },
1688
- "credentialDoor": {
1689
- "path": "/_twin/app-credentials",
1690
- "body": {},
1691
- "account": {
1692
- "field": "account"
1693
- },
1694
- "fill": {
1695
- "LIVEKIT_API_KEY": "api_key",
1696
- "LIVEKIT_API_SECRET": "api_secret"
1697
- }
1698
- },
1699
- "sidePorts": [
1700
- {
1701
- "name": "rtc-tcp",
1702
- "option": "rtcTcpPort",
1703
- "flag": "--rtc-tcp-port",
1704
- "scheme": "tcp",
1705
- "note": "ICE/TCP media advertised on loopback at this port; the vendor binds all interfaces. Forward beside signaling for a browser on another machine."
1706
- }
1707
- ]
1708
- },
1709
- "merge": {
1710
- "adoption": {
1711
- "sdks": [],
1712
- "envStems": [
1713
- "MERGE_GATEWAY",
1714
- "MODEL_GATEWAY"
1715
- ]
1716
- },
1717
- "hosts": [
1718
- {
1719
- "host": "api-gateway.merge.dev"
1720
- }
1721
- ],
1722
- "archetype": "crud",
1723
- "protocol": {
1724
- "declared": "3",
1725
- "major": 3,
1726
- "standing": "current"
1727
- },
1728
- "transport": "rest",
1729
- "resources": [],
1730
- "endpointEnvNone": "Open Autonomy reads MODEL_GATEWAY_URL and defaults to api-gateway.merge.dev; the World claims the host",
1731
- "credentialDoor": {
1732
- "account": {
1733
- "field": "account"
1734
- },
1735
- "path": "/_twin/organizations",
1736
- "body": {},
1737
- "fill": {
1738
- "MODEL_GATEWAY_API_KEY": "api_key",
1739
- "MERGE_GATEWAY_API_KEY": "api_key"
1740
- }
1741
- },
1742
- "serveExport": "createMergeTwinServer"
1743
- },
1744
- "mistral": {
1745
- "adoption": {
1746
- "sdks": [
1747
- "@ai-sdk/mistral",
1748
- "@mistralai/mistralai"
1749
- ],
1750
- "pypi": [
1751
- "mistralai"
1752
- ],
1753
- "envStems": [
1754
- "MISTRAL",
1755
- "OCR"
1756
- ]
1757
- },
1758
- "hosts": [
1759
- {
1760
- "host": "api.mistral.ai"
1761
- }
1762
- ],
1763
- "archetype": "generative",
1764
- "protocol": {
1765
- "declared": "3",
1766
- "major": 3,
1767
- "standing": "current"
1768
- },
1769
- "transport": "rest",
1770
- "resources": [],
1771
- "endpointEnvNone": "the SDKs call https://api.mistral.ai/v1 unless given a base URL in code or config; the World claims the host",
1772
- "credentialDoor": {
1773
- "account": {
1774
- "field": "account"
1775
- },
1776
- "path": "/_twin/app-credentials",
1777
- "body": {},
1778
- "fill": {
1779
- "MISTRAL_API_KEY": "api_key"
1780
- }
1781
- },
1782
- "serveExport": "createMistralTwinServer"
1783
- },
1784
- "mongodb": {
1785
- "adoption": {
1786
- "sdks": [
1787
- "mongodb",
1788
- "mongoose"
1789
- ],
1790
- "envStems": [
1791
- "MONGODB",
1792
- "MONGO"
1793
- ]
1794
- },
1795
- "hosts": [],
1796
- "archetype": "crud",
1797
- "protocol": {
1798
- "declared": "3",
1799
- "major": 3,
1800
- "standing": "current"
1801
- },
1802
- "transport": "raw-tcp",
1803
- "resources": [
1804
- "collection",
1805
- "index",
1806
- "document"
1807
- ],
1808
- "endpointEnvNone": "Managed infrastructure injects the connection address from the declared mongodb service; it is a TCP endpoint, with no HTTP API host.",
1809
- "managedService": {
1810
- "kind": "mongodb",
1811
- "scheme": "mongodb",
1812
- "note": "MongoDB 7.0 wire: standalone, or a declared single-member handshake without sessions; state in the World tree"
1813
- },
1814
- "serveExport": "createMongodbTwinServer"
1815
- },
1816
- "npm-registry": {
1817
- "adoption": {
1818
- "envStems": [
1819
- "NPM"
1820
- ],
1821
- "tools": [
1822
- {
1823
- "package": "npm",
1824
- "usage": "build"
1825
- }
1826
- ]
1827
- },
1828
- "hosts": [
1829
- {
1830
- "host": "registry.npmjs.org"
1831
- }
1832
- ],
1833
- "archetype": "crud",
1834
- "protocol": {
1835
- "declared": "3",
1836
- "major": 3,
1837
- "standing": "current"
1838
- },
1839
- "transport": "rest",
1840
- "resources": [
1841
- "package",
1842
- "user",
1843
- "org"
1844
- ],
1845
- "endpointEnv": {
1846
- "name": "NPM_CONFIG_REGISTRY",
1847
- "note": "npm and bun read the registry from npm_config_registry (and .npmrc's `registry`)."
1848
- },
1849
- "credentialDoor": {
1850
- "account": {
1851
- "field": "account"
1852
- },
1853
- "path": "/_twin/app-credentials",
1854
- "body": {},
1855
- "fill": {
1856
- "NODE_AUTH_TOKEN": "token",
1857
- "NPM_TOKEN": "token"
1858
- }
1859
- },
1860
- "serveExport": "createNpmRegistryTwinServer"
1861
- },
1862
- "openai": {
1863
- "adoption": {
1864
- "pypi": [
1865
- "openai",
1866
- "openai-agents"
1867
- ],
1868
- "sdks": [
1869
- "openai",
1870
- "@ai-sdk/openai"
1871
- ],
1872
- "envStems": [
1873
- "CODEX",
1874
- "OPENAI",
1875
- "APOPENAI",
1876
- "OPENAIMODERATION",
1877
- "REWORKDPLATFORMOPENAI"
1878
- ]
1879
- },
1880
- "hosts": [
1881
- {
1882
- "host": "chatgpt.com",
1883
- "pathPattern": "^/backend-api/(codex|wham)(/|$)"
1884
- },
1885
- {
1886
- "host": "auth.openai.com",
1887
- "pathPattern": "^/(oauth/(authorize|token|revoke)|api/accounts/deviceauth/(usercode|token)|codex/device)(/|$)"
1888
- },
1889
- {
1890
- "host": "api.openai.com"
1891
- },
1892
- {
1893
- "host": "platform.openai.com",
1894
- "pathPattern": "^/(settings/proj[-_][^/]+/api-keys|login$)"
1895
- }
1896
- ],
1897
- "archetype": "generative",
1898
- "protocol": {
1899
- "declared": "3",
1900
- "major": 3,
1901
- "standing": "current"
1902
- },
1903
- "transport": "rest",
1904
- "resources": [
1905
- "file",
1906
- "response",
1907
- "chat_completion",
1908
- "assistant",
1909
- "thread",
1910
- "message",
1911
- "run",
1912
- "project",
1913
- "api_key"
1914
- ],
1915
- "credentialDoor": {
1916
- "account": {
1917
- "field": "account"
1918
- },
1919
- "path": "/_twin/app-credentials",
1920
- "body": {},
1921
- "fill": {
1922
- "OPENAI_API_KEY": "api_key",
1923
- "OPENAI_KEY": "api_key",
1924
- "CODEX_HOME": "directory:codex_home"
1925
- }
1926
- },
1927
- "serveExport": "createOpenaiTwinServer"
1928
- },
1929
- "openrouter": {
1930
- "adoption": {
1931
- "sdks": [
1932
- "@openrouter/sdk",
1933
- "@openrouter/ai-sdk-provider"
1934
- ],
1935
- "envStems": [
1936
- "OPENROUTER"
1937
- ]
1938
- },
1939
- "hosts": [
1940
- {
1941
- "host": "openrouter.ai"
1942
- }
1943
- ],
1944
- "archetype": "generative",
1945
- "protocol": {
1946
- "declared": "3",
1947
- "major": 3,
1948
- "standing": "current"
1949
- },
1950
- "transport": "rest",
1951
- "resources": [
1952
- "user"
1953
- ],
1954
- "endpointEnvNone": "the SDKs call https://openrouter.ai/api/v1 unless given a base URL in code; the World claims the host",
1955
- "credentialDoor": {
1956
- "path": "/_twin/app-credentials",
1957
- "body": {},
1958
- "fill": {
1959
- "OPENROUTER_API_KEY": "api_key"
1960
- }
1961
- },
1962
- "serveExport": "createOpenrouterTwinServer"
1963
- },
1964
- "perplexity": {
1965
- "adoption": {
1966
- "sdks": [
1967
- "@ai-sdk/perplexity"
1968
- ],
1969
- "envStems": [
1970
- "PERPLEXITY"
1971
- ]
1972
- },
1973
- "hosts": [
1974
- {
1975
- "host": "api.perplexity.ai"
1976
- }
1977
- ],
1978
- "archetype": "crud",
1979
- "protocol": {
1980
- "declared": "3",
1981
- "major": 3,
1982
- "standing": "current"
1983
- },
1984
- "transport": "rest",
1985
- "resources": [],
1986
- "endpointEnvNone": "the SDK calls https://api.perplexity.ai unless given a base URL in code; the World claims the host",
1987
- "serveExport": "createPerplexityTwinServer"
1988
- },
1989
- "planetscale": {
1990
- "adoption": {
1991
- "sdks": [
1992
- "@planetscale/database",
1993
- "@prisma/adapter-planetscale"
1994
- ],
1995
- "envStems": [
1996
- "PLANETSCALE"
1997
- ]
1998
- },
1999
- "hosts": [
2000
- {
2001
- "suffix": ".psdb.cloud"
2002
- },
2003
- {
2004
- "host": "api.planetscale.com"
2005
- },
2006
- {
2007
- "host": "app.planetscale.com"
2008
- }
2009
- ],
2010
- "archetype": "crud",
2011
- "protocol": {
2012
- "declared": "3",
2013
- "major": 3,
2014
- "standing": "current"
2015
- },
2016
- "transport": "rest",
2017
- "resources": [
2018
- "database",
2019
- "password",
2020
- "service_token",
2021
- "backup",
2022
- "table",
2023
- "row"
2024
- ],
2025
- "endpointEnv": {
2026
- "name": "PLANETSCALE_TWIN_URL",
2027
- "note": "the twin's own URL; applications reach it at <region>.connect.psdb.cloud, which the injector redirects, with the password the credentialDoor issued."
2028
- },
2029
- "credentialDoor": {
2030
- "account": {
2031
- "field": "account"
2032
- },
2033
- "path": "/_twin/app-credentials",
2034
- "body": {
2035
- "organization": "world",
2036
- "database": "world"
2037
- },
2038
- "fill": {
2039
- "PLANETSCALE_DATABASE_URL": "http_url",
2040
- "DATABASE_URL": "side:mysql:native_url"
2041
- }
2042
- },
2043
- "prismaAdapter": {
2044
- "adapter": "@prisma/adapter-planetscale",
2045
- "export": "PrismaPlanetScale",
2046
- "urlEnv": "PLANETSCALE_DATABASE_URL"
2047
- },
2048
- "sidePorts": [
2049
- {
2050
- "name": "mysql",
2051
- "option": "wirePort",
2052
- "flag": "--wire-port",
2053
- "note": "MySQL's native wire over the same database psdb serves (mysql_native_password, text and prepared statements)"
2054
- }
2055
- ],
2056
- "serveExport": "createPlanetscaleTwinServer"
2057
- },
2058
- "polar": {
2059
- "adoption": {
2060
- "sdks": [
2061
- "@polar-sh/sdk"
2062
- ],
2063
- "pypi": [
2064
- "polar-sdk"
2065
- ],
2066
- "scopes": [
2067
- "@polar-sh/"
2068
- ],
2069
- "envStems": [
2070
- "POLAR"
2071
- ]
2072
- },
2073
- "hosts": [
2074
- {
2075
- "host": "api.polar.sh"
2076
- },
2077
- {
2078
- "host": "sandbox-api.polar.sh"
2079
- },
2080
- {
2081
- "host": "buy.polar.sh"
2082
- },
2083
- {
2084
- "host": "polar.sh",
2085
- "pathPattern": "^/[^/]+/portal"
2086
- },
2087
- {
2088
- "host": "sandbox.polar.sh"
2089
- }
2090
- ],
2091
- "archetype": "crud",
2092
- "protocol": {
2093
- "declared": "3",
2094
- "major": 3,
2095
- "standing": "current"
2096
- },
2097
- "transport": "rest",
2098
- "resources": [
2099
- "customer",
2100
- "product",
2101
- "checkout",
2102
- "subscription",
2103
- "order",
2104
- "event",
2105
- "meter",
2106
- "customer_session",
2107
- "webhook_endpoint"
2108
- ],
2109
- "endpointEnvNone": "@polar-sh/sdk reads no base-URL variable: its `server` option picks production or sandbox, both claimed by the host rules.",
2110
- "credentialDoor": {
2111
- "path": "/_twin/app-credentials",
2112
- "body": {},
2113
- "fill": {
2114
- "POLAR_ACCESS_TOKEN": "access_token",
2115
- "POLAR_API_KEY": "access_token",
2116
- "POLAR_ORGANIZATION_TOKEN": "access_token"
2117
- }
2118
- },
2119
- "serveExport": "createPolarTwinServer"
2120
- },
2121
- "polyhaven": {
2122
- "adoption": {
2123
- "sdks": [],
2124
- "envStems": []
2125
- },
2126
- "hosts": [
2127
- {
2128
- "host": "api.polyhaven.com"
2129
- },
2130
- {
2131
- "host": "dl.polyhaven.org"
2132
- },
2133
- {
2134
- "host": "cdn.polyhaven.com"
2135
- }
2136
- ],
2137
- "archetype": "crud",
2138
- "protocol": {
2139
- "declared": "3",
2140
- "major": 3,
2141
- "standing": "current"
2142
- },
2143
- "transport": "rest",
2144
- "resources": [
2145
- "asset"
2146
- ],
2147
- "endpointEnvNone": "the editor calls api.polyhaven.com and the urls it answers; the World claims the hosts",
2148
- "serveExport": "createPolyhavenTwinServer"
2149
- },
2150
- "posthog": {
2151
- "adoption": {
2152
- "sdks": [
2153
- "posthog-js",
2154
- "posthog-node"
2155
- ],
2156
- "envStems": [
2157
- "POSTHOG"
2158
- ]
2159
- },
2160
- "hosts": [
2161
- {
2162
- "host": "us.i.posthog.com"
2163
- },
2164
- {
2165
- "host": "eu.i.posthog.com"
2166
- },
2167
- {
2168
- "host": "us-assets.i.posthog.com"
2169
- },
2170
- {
2171
- "host": "eu-assets.i.posthog.com"
2172
- },
2173
- {
2174
- "host": "us.posthog.com"
2175
- },
2176
- {
2177
- "host": "eu.posthog.com"
2178
- },
2179
- {
2180
- "host": "app.posthog.com"
2181
- }
2182
- ],
2183
- "archetype": "crud",
2184
- "protocol": {
2185
- "declared": "3",
2186
- "major": 3,
2187
- "standing": "current"
2188
- },
2189
- "transport": "rest",
2190
- "resources": [],
2191
- "endpointEnvNone": "The SDKs accept host options; no base-URL environment variable belongs to the SDK itself.",
2192
- "serveExport": "createPosthogTwinServer"
2193
- },
2194
- "reddit": {
2195
- "adoption": {
2196
- "sdks": [
2197
- "snoowrap"
2198
- ],
2199
- "pypi": [
2200
- "praw",
2201
- "asyncpraw"
2202
- ],
2203
- "envStems": [
2204
- "REDDIT"
2205
- ]
2206
- },
2207
- "hosts": [
2208
- {
2209
- "host": "oauth.reddit.com"
2210
- },
2211
- {
2212
- "host": "www.reddit.com",
2213
- "demandPathPattern": "^/api/"
2214
- },
2215
- {
2216
- "host": "reddit.com",
2217
- "demandPathPattern": "^/api/"
2218
- },
2219
- {
2220
- "host": "old.reddit.com",
2221
- "demandPathPattern": "^/api/"
2222
- },
2223
- {
2224
- "host": "reddit-uploaded-media.s3-accelerate.amazonaws.com"
2225
- },
2226
- {
2227
- "host": "reddit-uploaded-video.s3-accelerate.amazonaws.com"
2228
- },
2229
- {
2230
- "host": "v.redd.it",
2231
- "demandPathPattern": false
2232
- },
2233
- {
2234
- "host": "i.redd.it",
2235
- "demandPathPattern": false
2236
- },
2237
- {
2238
- "host": "preview.redd.it",
2239
- "demandPathPattern": false
2240
- },
2241
- {
2242
- "host": "external-preview.redd.it",
2243
- "demandPathPattern": false
2244
- },
2245
- {
2246
- "host": "b.thumbs.redditmedia.com",
2247
- "demandPathPattern": false
2248
- }
2249
- ],
2250
- "archetype": "crud",
2251
- "protocol": {
2252
- "declared": "3",
2253
- "major": 3,
2254
- "standing": "current"
2255
- },
2256
- "transport": "rest",
2257
- "resourcesUnreachable": {},
2258
- "resources": [
2259
- "account",
2260
- "subreddit",
2261
- "link",
2262
- "comment",
2263
- "asset",
2264
- "app",
2265
- "_access_token",
2266
- "_token_issue",
2267
- "_client_secret",
2268
- "_rate_window",
2269
- "_vote",
2270
- "_membership",
2271
- "_person",
2272
- "_web_session",
2273
- "_web_session_issue"
2274
- ],
2275
- "endpointEnvNone": "Reddit's clients name oauth.reddit.com and www.reddit.com themselves (the campaign's sender writes them as constants); the World's injector routes those hosts, and no client of the demand reads a base-URL variable",
2276
- "credentialDoor": {
2277
- "path": "/_twin/app-credentials",
2278
- "body": {
2279
- "username": "FamouslyDefault"
2280
- },
2281
- "fill": {
2282
- "REDDIT_ACCESS_TOKEN": "access_token"
2283
- }
2284
- },
2285
- "serveExport": "createRedditTwinServer"
2286
- },
2287
- "redis": {
2288
- "adoption": {
2289
- "sdks": [
2290
- "ioredis",
2291
- "redis",
2292
- "bullmq"
2293
- ],
2294
- "envStems": [
2295
- "REDIS"
2296
- ]
2297
- },
2298
- "hosts": [],
2299
- "archetype": "crud",
2300
- "protocol": {
2301
- "declared": "3",
2302
- "major": 3,
2303
- "standing": "current"
2304
- },
2305
- "transport": "raw-tcp",
2306
- "resources": [
2307
- "key",
2308
- "member",
2309
- "script"
2310
- ],
2311
- "endpointEnvNone": "Managed infrastructure injects REDIS_URL from the declared redis service; it is a TCP endpoint, with no HTTP API host.",
2312
- "managedService": {
2313
- "kind": "redis",
2314
- "scheme": "redis",
2315
- "note": "stock Redis over RESP2 with state in the World tree"
2316
- },
2317
- "serveExport": "createRedisTwinServer"
2318
- },
2319
- "resend": {
2320
- "adoption": {
2321
- "pypi": [
2322
- "resend"
2323
- ],
2324
- "sdks": [
2325
- "resend"
2326
- ],
2327
- "envStems": [
2328
- "RESEND",
2329
- "NEXTPRIVATERESEND"
2330
- ]
2331
- },
2332
- "hosts": [
2333
- {
2334
- "host": "api.resend.com"
2335
- },
2336
- {
2337
- "host": "inbound-cdn.resend.com"
2338
- },
2339
- {
2340
- "host": "resend.com",
2341
- "pathPattern": "^/emails(?:/|$)"
2342
- }
2343
- ],
2344
- "archetype": "crud",
2345
- "protocol": {
2346
- "declared": "3",
2347
- "major": 3,
2348
- "standing": "current"
2349
- },
2350
- "transport": "rest",
2351
- "resources": [
2352
- "email",
2353
- "domain",
2354
- "received"
2355
- ],
2356
- "credentialDoor": {
2357
- "account": {
2358
- "field": "account"
2359
- },
2360
- "path": "/_twin/app-credentials",
2361
- "body": {},
2362
- "fill": {
2363
- "RESEND_API_KEY": "token"
2364
- }
2365
- },
2366
- "serveExport": "createResendTwinServer"
2367
- },
2368
- "sentry": {
2369
- "adoption": {
2370
- "sdks": [
2371
- "@sentry/astro",
2372
- "@sentry/browser",
2373
- "@sentry/electron",
2374
- "@sentry/nextjs",
2375
- "@sentry/node",
2376
- "@sentry/nestjs",
2377
- "@sentry/react",
2378
- "@sentry/react-native",
2379
- "@sentry/remix",
2380
- "@sentry/sveltekit",
2381
- "@sentry/vue",
2382
- "@sentry/cli"
2383
- ],
2384
- "pypi": [
2385
- "sentry-sdk"
2386
- ],
2387
- "envStems": [
2388
- "APPSMITHSENTRY",
2389
- "SENTRY"
2390
- ]
2391
- },
2392
- "hosts": [
2393
- {
2394
- "host": "sentry.io"
2395
- },
2396
- {
2397
- "host": "us.sentry.io"
2398
- },
2399
- {
2400
- "host": "de.sentry.io"
2401
- },
2402
- {
2403
- "suffix": ".ingest.sentry.io"
2404
- },
2405
- {
2406
- "suffix": ".ingest.us.sentry.io"
2407
- },
2408
- {
2409
- "suffix": ".ingest.de.sentry.io"
2410
- }
2411
- ],
2412
- "archetype": "crud",
2413
- "protocol": {
2414
- "declared": "3",
2415
- "major": 3,
2416
- "standing": "current"
2417
- },
2418
- "transport": "rest",
2419
- "resources": [
2420
- "organization",
2421
- "project",
2422
- "project_key",
2423
- "event",
2424
- "issue",
2425
- "release",
2426
- "monitor",
2427
- "check_in"
2428
- ],
2429
- "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",
2430
- "credentialDoor": {
2431
- "account": {
2432
- "field": "account"
2433
- },
2434
- "path": "/_twin/app-credentials",
2435
- "body": {},
2436
- "fill": {
2437
- "SENTRY_DSN": "dsn",
2438
- "NEXT_PUBLIC_SENTRY_DSN": "dsn",
2439
- "NEXT_PUBLIC_SENTRY_DSN_CLIENT": "dsn",
2440
- "SENTRY_FRONT_DSN": "dsn",
2441
- "SENTRY_DSN_API": "dsn",
2442
- "VITE_SENTRY_DSN": "dsn",
2443
- "EXPO_PUBLIC_SENTRY_DSN": "dsn",
2444
- "SENTRY_AUTH_TOKEN": "auth_token",
2445
- "SENTRY_ORG": "org",
2446
- "SENTRY_ORGANIZATION": "org",
2447
- "SENTRY_PROJECT": "project"
2448
- }
2449
- },
2450
- "serveExport": "createSentryTwinServer"
2451
- },
2452
- "sigstore": {
2453
- "adoption": {
2454
- "sdks": [
2455
- "sigstore",
2456
- "@sigstore/sign"
2457
- ],
2458
- "envStems": [
2459
- "SIGSTORE"
2460
- ]
2461
- },
2462
- "hosts": [
2463
- {
2464
- "host": "fulcio.sigstore.dev"
2465
- },
2466
- {
2467
- "host": "rekor.sigstore.dev"
2468
- }
2469
- ],
2470
- "archetype": "crud",
2471
- "protocol": {
2472
- "declared": "3",
2473
- "major": 3,
2474
- "standing": "current"
2475
- },
2476
- "transport": "rest",
2477
- "resources": [],
2478
- "endpointEnvNone": "npm and the sigstore library read no address for Fulcio or Rekor: both are fixed hosts, claimed by the host rules.",
2479
- "serveExport": "createSigstoreTwinServer"
2480
- },
2481
- "slack": {
2482
- "adoption": {
2483
- "pypi": [
2484
- "slack-sdk",
2485
- "slack-bolt",
2486
- "slackclient"
2487
- ],
2488
- "sdks": [
2489
- "@slack/web-api",
2490
- "@slack/bolt",
2491
- "@slack/webhook",
2492
- "@slack/oauth",
2493
- "@chat-adapter/slack"
2494
- ],
2495
- "scopes": [
2496
- "@slack/"
2497
- ],
2498
- "envStems": [
2499
- "SLACK",
2500
- "SLACKBOTUSER"
2501
- ]
2502
- },
2503
- "hosts": [
2504
- {
2505
- "host": "app.slack.com"
2506
- },
2507
- {
2508
- "host": "slack.com"
2509
- },
2510
- {
2511
- "host": "www.slack.com"
2512
- },
2513
- {
2514
- "host": "api.slack.com"
2515
- },
2516
- {
2517
- "host": "hooks.slack.com",
2518
- "pathPattern": "^/services/"
2519
- },
2520
- {
2521
- "host": "files.slack.com",
2522
- "pathPattern": "^/upload/"
2523
- }
2524
- ],
2525
- "archetype": "crud",
2526
- "protocol": {
2527
- "declared": "3",
2528
- "major": 3,
2529
- "standing": "current"
2530
- },
2531
- "transport": "web-api",
2532
- "resources": [
2533
- "team",
2534
- "user",
2535
- "channel",
2536
- "message",
2537
- "file",
2538
- "usergroup",
2539
- "app"
2540
- ],
2541
- "credentialDoor": {
2542
- "account": {
2543
- "field": "account"
2544
- },
2545
- "path": "/_twin/app-credentials",
2546
- "body": {},
2547
- "fill": {
2548
- "SLACK_BOT_TOKEN": "bot_token",
2549
- "SLACK_TOKEN": "bot_token",
2550
- "SLACK_APP_TOKEN": "app_token",
2551
- "SLACK_SIGNING_SECRET": "signing_secret",
2552
- "SLACK_CLIENT_ID": "client_id",
2553
- "SLACK_CLIENT_SECRET": "client_secret"
2554
- }
2555
- },
2556
- "serveExport": "createSlackTwinServer"
2557
- },
2558
- "smtp": {
2559
- "adoption": {
2560
- "pypi": [
2561
- "aiosmtplib"
2562
- ],
2563
- "sdks": [
2564
- "nodemailer",
2565
- "nodemailer-smtp-transport",
2566
- "emailjs"
2567
- ],
2568
- "envStems": [
2569
- "NEXTPRIVATESMTP"
2570
- ]
2571
- },
2572
- "hostsNone": "RAW-PROTOCOL pack: SMTP is a line protocol over a raw TCP socket, invisible to the http/fetch injector, and the relay is whatever host the operator names. The World injects SMTP_HOST/SMTP_PORT, EMAIL_SERVER_HOST/EMAIL_SERVER_PORT and EMAIL_SERVER at the twin's listener (world-runtime init.ts).",
2573
- "archetype": "crud",
2574
- "protocol": {
2575
- "declared": "3",
2576
- "major": 3,
2577
- "standing": "current"
2578
- },
2579
- "transport": "raw-tcp",
2580
- "resources": [
2581
- "message",
2582
- "relay"
2583
- ],
2584
- "endpointEnvNone": "the relay is named by host and port settings the runtime injects as templates (world-runtime init.ts), not a base URL",
2585
- "sidePorts": [
2586
- {
2587
- "name": "inspect",
2588
- "option": "inspectPort",
2589
- "flag": "--inspect-port",
2590
- "path": "/_twin/messages",
2591
- "note": "the World's inspect doors: the messages the relay accepted"
2592
- }
2593
- ],
2594
- "serveExport": "createSmtpTwinServer"
2595
- },
2596
- "stripe": {
2597
- "adoption": {
2598
- "pypi": [
2599
- "stripe"
2600
- ],
2601
- "sdks": [
2602
- "stripe"
2603
- ],
2604
- "envStems": [
2605
- "STRIPE",
2606
- "NEXTPRIVATESTRIPE"
2607
- ]
2608
- },
2609
- "hosts": [
2610
- {
2611
- "host": "api.stripe.com"
2612
- },
2613
- {
2614
- "host": "checkout.stripe.com",
2615
- "pathPattern": "^/c/pay/"
2616
- },
2617
- {
2618
- "host": "billing.stripe.com",
2619
- "pathPattern": "^/p/session/"
2620
- },
2621
- {
2622
- "host": "connect.stripe.com",
2623
- "pathPattern": "^/setup/"
2624
- },
2625
- {
2626
- "host": "dashboard.stripe.com",
2627
- "pathPattern": "^/customers(?:/[^/]+)?/?$|^/radar/lists(?:/[^/]+)?/?$|^/test/issuing/balance/?$|^/settings/public/?$"
2628
- },
2629
- {
2630
- "host": "verify.stripe.com",
2631
- "pathPattern": "^/start/"
2632
- },
2633
- {
2634
- "host": "js.stripe.com",
2635
- "pathPattern": "^/v3/?$|^/(v3|[a-z]+)/stripe\\.js$"
2636
- }
2637
- ],
2638
- "archetype": "crud",
2639
- "protocol": {
2640
- "declared": "3",
2641
- "major": 3,
2642
- "standing": "current"
2643
- },
2644
- "transport": "rest",
2645
- "resources": [
2646
- "charge",
2647
- "customer",
2648
- "payment_intent",
2649
- "setup_intent",
2650
- "payment_method",
2651
- "subscription",
2652
- "price",
2653
- "product",
2654
- "invoice",
2655
- "invoiceitem",
2656
- "refund",
2657
- "event"
2658
- ],
2659
- "credentialDoor": {
2660
- "path": "/_twin/app-credentials",
2661
- "body": {},
2662
- "account": {
2663
- "field": "account"
2664
- },
2665
- "fill": {
2666
- "STRIPE_SECRET_KEY": "secret_key",
2667
- "STRIPE_API_KEY": "secret_key",
2668
- "STRIPE_PRIVATE_KEY": "secret_key",
2669
- "BILLING_STRIPE_API_KEY": "secret_key",
2670
- "STRIPE_PUBLISHABLE_KEY": "publishable_key",
2671
- "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY": "publishable_key",
2672
- "NEXT_PUBLIC_STRIPE_PUBLIC_KEY": "publishable_key",
2673
- "NEXT_PUBLIC_STRIPE_KEY": "publishable_key",
2674
- "STRIPE_WEBHOOK_SECRET": "webhook_secret",
2675
- "STRIPE_WEBHOOK_SIGNING_SECRET": "webhook_secret",
2676
- "STRIPE_ENDPOINT_SECRET": "webhook_secret",
2677
- "STRIPE_WEBHOOK_SECRET_KEY": "webhook_secret",
2678
- "NEXT_PRIVATE_STRIPE_WEBHOOK_SECRET": "webhook_secret",
2679
- "BILLING_STRIPE_WEBHOOK_SECRET": "webhook_secret",
2680
- "STRIPE_CONNECT_WEBHOOK_SECRET": "connect_webhook_secret",
2681
- "STRIPE_WEBHOOK_SECRET_CONNECT": "connect_webhook_secret",
2682
- "STRIPE_CONNECT_WEBHOOK_SIGNING_SECRET": "connect_webhook_secret"
2683
- }
2684
- },
2685
- "serveExport": "createStripeTwinServer"
2686
- },
2687
- "supabase": {
2688
- "adoption": {
2689
- "pypi": [
2690
- "supabase",
2691
- "gotrue",
2692
- "supabase-auth",
2693
- "postgrest",
2694
- "storage3",
2695
- "supafunc",
2696
- "realtime"
2697
- ],
2698
- "sdks": [
2699
- "@supabase/supabase-js"
2700
- ],
2701
- "scopes": [
2702
- "@supabase/"
2703
- ],
2704
- "envStems": [
2705
- "SUPABASE"
2706
- ],
2707
- "worldIds": [
2708
- "supabasemgmt"
2709
- ]
2710
- },
2711
- "hosts": [
2712
- {
2713
- "host": "api.supabase.com"
2714
- },
2715
- {
2716
- "suffix": ".supabase.co",
2717
- "pathPattern": "^/(rest|storage|auth)/v1(/|$)"
2718
- }
2719
- ],
2720
- "archetype": "engine-control",
2721
- "protocol": {
2722
- "declared": "3",
2723
- "major": 3,
2724
- "standing": "current"
2725
- },
2726
- "transport": "rest",
2727
- "resources": [],
2728
- "credentialDoor": {
2729
- "path": "/_twin/app-credentials",
2730
- "body": {},
2731
- "fill": {
2732
- "SUPABASE_DB_URL": "database_url"
2733
- }
2734
- },
2735
- "managedDatabase": {
2736
- "kind": "postgres",
2737
- "arg": "--database",
2738
- "user": "world",
2739
- "database": "world",
2740
- "clock": "wall",
2741
- "credentialField": "database_url",
2742
- "note": "the selected Supabase twin owns its private PostgreSQL data plane; the credential door answers its URL, application migrations own application tables, and SQL uses wall time"
2743
- },
2744
- "serveExport": "createSupabaseTwinServer"
2745
- },
2746
- "tavily": {
2747
- "adoption": {
2748
- "sdks": [
2749
- "@tavily/core",
2750
- "@langchain/tavily"
2751
- ],
2752
- "pypi": [
2753
- "tavily-python"
2754
- ],
2755
- "envStems": [
2756
- "TAVILY"
2757
- ]
2758
- },
2759
- "hosts": [
2760
- {
2761
- "host": "api.tavily.com"
2762
- }
2763
- ],
2764
- "archetype": "crud",
2765
- "protocol": {
2766
- "declared": "3",
2767
- "major": 3,
2768
- "standing": "current"
2769
- },
2770
- "transport": "rest",
2771
- "resources": [],
2772
- "endpointEnvNone": "the clients call https://api.tavily.com; the World claims the host",
2773
- "credentialDoor": {
2774
- "path": "/_twin/app-credentials",
2775
- "body": {},
2776
- "fill": {
2777
- "TAVILY_API_KEY": "api_key"
2778
- }
2779
- },
2780
- "serveExport": "createTavilyTwinServer"
2781
- },
2782
- "telegram": {
2783
- "adoption": {
2784
- "sdks": [
2785
- "@chat-adapter/telegram",
2786
- "node-telegram-bot-api",
2787
- "telegraf"
2788
- ],
2789
- "envStems": [
2790
- "TELEGRAM"
2791
- ]
2792
- },
2793
- "hosts": [
2794
- {
2795
- "host": "api.telegram.org"
2796
- }
2797
- ],
2798
- "archetype": "crud",
2799
- "protocol": {
2800
- "declared": "3",
2801
- "major": 3,
2802
- "standing": "current"
2803
- },
2804
- "transport": "web-api",
2805
- "resources": [
2806
- "user",
2807
- "chat",
2808
- "chat_member",
2809
- "message",
2810
- "update",
2811
- "file"
2812
- ],
2813
- "endpointEnv": {
2814
- "name": "TELEGRAM_API_BASE_URL",
2815
- "note": "the Chat SDK's Telegram adapter reads it as its API base (@chat-adapter/telegram 4.39.0, dist/index.js:1039); node-telegram-bot-api takes a baseApiUrl option only, and reaches the twin by its host"
2816
- },
2817
- "credentialDoor": {
2818
- "path": "/_twin/bots",
2819
- "body": {},
2820
- "fill": {
2821
- "TELEGRAM_BOT_TOKEN": "token",
2822
- "TELEGRAM_TOKEN": "token",
2823
- "TELEGRAM_BOT_USERNAME": "username",
2824
- "TELEGRAM_BOT_NAME": "username"
2825
- }
2826
- },
2827
- "serveExport": "createTelegramTwinServer"
2828
- },
2829
- "temporal": {
2830
- "serverBacking": {
2831
- "command": "temporal"
2832
- },
2833
- "adoption": {
2834
- "sdks": [
2835
- "@temporalio/client",
2836
- "@temporalio/worker",
2837
- "@temporalio/workflow",
2838
- "nestjs-temporal-core"
2839
- ],
2840
- "pypi": [
2841
- "temporalio"
2842
- ],
2843
- "envStems": [
2844
- "TEMPORAL"
2845
- ]
2846
- },
2847
- "hostsNone": "The World runs the vendor development server at its declared loopback gRPC endpoint.",
2848
- "endpointEnv": {
2849
- "name": "TEMPORAL_ADDRESS",
2850
- "templates": {
2851
- "TEMPORAL_ADDRESS": "${host}:${port}",
2852
- "TEMPORAL_NAMESPACE": "default",
2853
- "TEMPORAL_TLS": "false",
2854
- "TEMPORAL_API_KEY": ""
2855
- },
2856
- "note": "The local development server creates default; no TLS or Cloud API key."
2857
- }
2858
- },
2859
- "tiktok": {
2860
- "adoption": {
2861
- "sdks": [],
2862
- "envStems": [
2863
- "TIKTOK"
2864
- ]
2865
- },
2866
- "hosts": [
2867
- {
2868
- "host": "business-api.tiktok.com"
2869
- },
2870
- {
2871
- "host": "open.tiktokapis.com"
2872
- },
2873
- {
2874
- "host": "open-upload.tiktokapis.com"
2875
- },
2876
- {
2877
- "host": "upload.us.tiktokapis.com"
2878
- },
2879
- {
2880
- "host": "www.tiktok.com",
2881
- "pathPattern": "^/v2/auth/authorize"
2882
- }
2883
- ],
2884
- "archetype": "crud",
2885
- "protocol": {
2886
- "declared": "3",
2887
- "major": 3,
2888
- "standing": "current"
2889
- },
2890
- "transport": "rest",
2891
- "resources": [
2892
- "publish",
2893
- "video"
2894
- ],
2895
- "endpointEnvNone": "an app calls open.tiktokapis.com and sends people to www.tiktok.com; the World claims the hosts",
2896
- "credentialDoor": {
2897
- "path": "/_twin/app-credentials",
2898
- "body": {},
2899
- "fill": {
2900
- "TIKTOK_CLIENT_ID": "client_key",
2901
- "TIKTOK_CLIENT_SECRET": "client_secret",
2902
- "TIKTOK_BUSINESS_CLIENT_ID": "business_client_id",
2903
- "TIKTOK_BUSINESS_CLIENT_SECRET": "business_client_secret"
2904
- }
2905
- },
2906
- "serveExport": "createTiktokTwinServer"
2907
- },
2908
- "tinybird": {
2909
- "adoption": {
2910
- "pypi": [
2911
- "tinybird-python-sdk",
2912
- "tinybird-cli"
2913
- ],
2914
- "sdks": [
2915
- "@chronark/zod-bird"
2916
- ],
2917
- "scopes": [
2918
- "@chronark/zod-bird"
2919
- ],
2920
- "envStems": [
2921
- "TINYBIRD"
2922
- ]
2923
- },
2924
- "hosts": [
2925
- {
2926
- "host": "api.tinybird.co"
2927
- },
2928
- {
2929
- "hostPattern": "^api\\.[a-z0-9.-]+\\.tinybird\\.co$"
2930
- },
2931
- {
2932
- "host": "cloud.tinybird.co"
2933
- }
2934
- ],
2935
- "archetype": "crud",
2936
- "protocol": {
2937
- "declared": "3",
2938
- "major": 3,
2939
- "standing": "current"
2940
- },
2941
- "transport": "rest",
2942
- "resources": [
2943
- "workspace",
2944
- "datasource",
2945
- "pipe",
2946
- "event",
2947
- "token",
2948
- "job",
2949
- "tag"
2950
- ],
2951
- "endpointEnvNone": "Tinybird's clients take the API host as configuration (@chronark/zod-bird's baseUrl, tinybird-cli's --host), defaulting to https://api.tinybird.co, which the World routes by host; no SDK reads a base-URL variable of its own",
2952
- "credentialDoor": {
2953
- "account": {
2954
- "field": "account"
2955
- },
2956
- "path": "/_twin/app-credentials",
2957
- "body": {},
2958
- "fill": {
2959
- "TINYBIRD_API_KEY": "token",
2960
- "TINYBIRD_TOKEN": "token"
2961
- }
2962
- },
2963
- "serveExport": "createTinybirdTwinServer"
2964
- },
2965
- "tremendous": {
2966
- "adoption": {
2967
- "sdks": [
2968
- "tremendous"
2969
- ],
2970
- "envStems": [
2971
- "TREMENDOUS"
2972
- ],
2973
- "pypi": []
2974
- },
2975
- "hosts": [
2976
- {
2977
- "host": "api.tremendous.com"
2978
- },
2979
- {
2980
- "host": "testflight.tremendous.com"
2981
- }
2982
- ],
2983
- "archetype": "crud",
2984
- "protocol": {
2985
- "declared": "3",
2986
- "major": 3,
2987
- "standing": "current"
2988
- },
2989
- "transport": "rest",
2990
- "resources": [],
2991
- "endpointEnvNone": "The demanded caller passes the public file URL directly to fetch; World host routing supplies the endpoint.",
2992
- "serveExport": "createTremendousTwinServer"
2993
- },
2994
- "tripo": {
2995
- "adoption": {
2996
- "pypi": [
2997
- "tripo3d"
2998
- ],
2999
- "envStems": [
3000
- "TRIPO"
3001
- ]
3002
- },
3003
- "hosts": [
3004
- {
3005
- "host": "api.tripo3d.ai"
3006
- },
3007
- {
3008
- "host": "api.tripo3d.com"
3009
- },
3010
- {
3011
- "host": "openapi.tripo3d.ai",
3012
- "pathPattern": "^/v3(?:/|$)"
3013
- },
3014
- {
3015
- "host": "openapi.tripo3d.com",
3016
- "pathPattern": "^/v3(?:/|$)"
3017
- }
3018
- ],
3019
- "archetype": "crud",
3020
- "protocol": {
3021
- "declared": "3",
3022
- "major": 3,
3023
- "standing": "current"
3024
- },
3025
- "transport": "rest",
3026
- "resources": [],
3027
- "endpointEnvNone": "the editor calls api.tripo3d.ai; the World claims the host",
3028
- "credentialDoor": {
3029
- "path": "/_twin/accounts",
3030
- "body": {
3031
- "balance": 3000
3032
- },
3033
- "fill": {
3034
- "TRIPO_API_KEY": "api_key"
3035
- }
3036
- },
3037
- "serveExport": "createTripoTwinServer"
3038
- },
3039
- "tunnel": {
3040
- "adoption": {
3041
- "sdks": [
3042
- "@volter/tunnel"
3043
- ],
3044
- "envStems": [
3045
- "TUNNEL",
3046
- "VOLTERTUNNEL"
3047
- ]
3048
- },
3049
- "hosts": [
3050
- {
3051
- "host": "voltertest.xyz"
3052
- },
3053
- {
3054
- "suffix": ".voltertest.xyz"
3055
- },
3056
- {
3057
- "host": "www.voltertest.xyz",
3058
- "exclude": true
3059
- },
3060
- {
3061
- "host": "twins.voltertest.xyz",
3062
- "exclude": true
3063
- }
3064
- ],
3065
- "archetype": "proxy",
3066
- "protocol": {
3067
- "declared": "3",
3068
- "major": 3,
3069
- "standing": "current"
3070
- },
3071
- "transport": "rest",
3072
- "resources": [],
3073
- "endpointEnvNone": "the relay URL is the credential door's (TUNNEL_SERVER_URL, SUPERCODE_TUNNEL_SERVER_URL), the World claiming voltertest.xyz",
3074
- "credentialDoor": {
3075
- "path": "/_twin/accounts",
3076
- "body": {
3077
- "slug": "world"
3078
- },
3079
- "fill": {
3080
- "TUNNEL_SECRET": "token",
3081
- "TUNNEL_SERVER_URL": "server",
3082
- "SUPERCODE_TUNNEL_SERVER_URL": "server"
3083
- }
3084
- },
3085
- "serveExport": "createTunnelTwinServer"
3086
- },
3087
- "turbopuffer": {
3088
- "adoption": {
3089
- "sdks": [
3090
- "@turbopuffer/turbopuffer"
3091
- ],
3092
- "pypi": [
3093
- "turbopuffer"
3094
- ],
3095
- "scopes": [
3096
- "@turbopuffer/"
3097
- ],
3098
- "envStems": [
3099
- "TURBOPUFFER"
3100
- ]
3101
- },
3102
- "hosts": [
3103
- {
3104
- "hostPattern": "^(?:aws|gcp|azure)-[a-z0-9-]+\\.turbopuffer\\.com$"
3105
- }
3106
- ],
3107
- "archetype": "crud",
3108
- "protocol": {
3109
- "declared": "3",
3110
- "major": 3,
3111
- "standing": "current"
3112
- },
3113
- "transport": "rest",
3114
- "resources": [],
3115
- "endpointEnv": {
3116
- "name": "TURBOPUFFER_TWIN_URL",
3117
- "templates": {
3118
- "TURBOPUFFER_BASE_URL": "${url}/{region}"
3119
- },
3120
- "note": "The pinned SDK requires the region placeholder when a region is supplied; its Node socket client reads TURBOPUFFER_BASE_URL."
3121
- },
3122
- "serveExport": "createTurbopufferTwinServer"
3123
- },
3124
- "twitch": {
3125
- "adoption": {
3126
- "sdks": [],
3127
- "envStems": [
3128
- "TWITCH"
3129
- ]
3130
- },
3131
- "hosts": [
3132
- {
3133
- "host": "api.twitch.tv",
3134
- "pathPattern": "^/helix/|^/_twin/"
3135
- },
3136
- {
3137
- "host": "id.twitch.tv",
3138
- "pathPattern": "^/oauth2/|^/_twin/"
3139
- },
3140
- {
3141
- "host": "www.twitch.tv",
3142
- "pathPattern": "^/$|^/login/?$|^/popout/[A-Za-z0-9_]{1,25}/chat/?$|^/[A-Za-z0-9_]{1,25}/?$|^/_twin/"
3143
- },
3144
- {
3145
- "host": "twitch.tv",
3146
- "pathPattern": "^/$|^/login/?$|^/popout/[A-Za-z0-9_]{1,25}/chat/?$|^/[A-Za-z0-9_]{1,25}/?$|^/_twin/"
3147
- },
3148
- {
3149
- "host": "m.twitch.tv",
3150
- "pathPattern": "^/$|^/login/?$|^/popout/[A-Za-z0-9_]{1,25}/chat/?$|^/[A-Za-z0-9_]{1,25}/?$|^/_twin/"
3151
- },
3152
- {
3153
- "host": "dashboard.twitch.tv",
3154
- "pathPattern": "^/u/[A-Za-z0-9_]{1,25}/(?:stream-manager|settings/stream)/?$"
3155
- },
3156
- {
3157
- "host": "player.twitch.tv",
3158
- "pathPattern": "^/$"
3159
- },
3160
- {
3161
- "host": "irc-ws.chat.twitch.tv"
3162
- },
3163
- {
3164
- "host": "usher.ttvnw.net",
3165
- "pathPattern": "^/api/channel/hls/"
3166
- }
3167
- ],
3168
- "archetype": "crud",
3169
- "protocol": {
3170
- "declared": "3",
3171
- "major": 3,
3172
- "standing": "current"
3173
- },
3174
- "transport": "rest",
3175
- "resources": [
3176
- "user",
3177
- "channel",
3178
- "stream",
3179
- "chat_message",
3180
- "application",
3181
- "_token",
3182
- "_authorization_code",
3183
- "_client_secret",
3184
- "_stream_key",
3185
- "_live",
3186
- "_live_segment"
3187
- ],
3188
- "endpointEnvNone": "Twitch's clients address api.twitch.tv, id.twitch.tv and irc-ws.chat.twitch.tv by their published URLs; no SDK reads a base-URL variable",
3189
- "credentialDoor": {
3190
- "path": "/_twin/console",
3191
- "body": {
3192
- "login": "worldchannel",
3193
- "password": "world-password",
3194
- "email": "worldchannel@example.com",
3195
- "application": {
3196
- "name": "World App",
3197
- "redirect_uris": [
3198
- "http://localhost:3000"
3199
- ]
3200
- }
3201
- },
3202
- "fill": {
3203
- "TWITCH_CLIENT_ID": "client_id",
3204
- "TWITCH_CLIENT_SECRET": "client_secret",
3205
- "TWITCH_CHANNEL": "login"
3206
- }
3207
- },
3208
- "sidePorts": [
3209
- {
3210
- "name": "ingest",
3211
- "option": "ingestPort",
3212
- "flag": "--ingest-port",
3213
- "scheme": "rtmp",
3214
- "path": "/app",
3215
- "note": "Twitch's RTMP ingest (rtmp://<ingest-server>/app/<stream-key>): OBS publishes the channel's broadcast here"
3216
- }
3217
- ],
3218
- "serveExport": "createTwitchTwinServer"
3219
- },
3220
- "upstash": {
3221
- "adoption": {
3222
- "sdks": [
3223
- "@upstash/redis",
3224
- "@upstash/ratelimit",
3225
- "@upstash/qstash",
3226
- "@upstash/workflow"
3227
- ],
3228
- "envStems": [
3229
- "UPSTASH",
3230
- "UPSTASH_REDIS",
3231
- "QSTASH",
3232
- "KV_REST_API"
3233
- ]
3234
- },
3235
- "hosts": [
3236
- {
3237
- "suffix": ".upstash.io"
3238
- },
3239
- {
3240
- "suffix": "-vector.upstash.io",
3241
- "exclude": true
3242
- },
3243
- {
3244
- "host": "console.upstash.com"
3245
- },
3246
- {
3247
- "host": "api.upstash.com"
3248
- }
3249
- ],
3250
- "archetype": "crud",
3251
- "protocol": {
3252
- "declared": "3",
3253
- "major": 3,
3254
- "standing": "current"
3255
- },
3256
- "transport": "rest",
3257
- "resources": [
3258
- "database",
3259
- "key",
3260
- "script",
3261
- "message",
3262
- "queue",
3263
- "workflow_run"
3264
- ],
3265
- "endpointEnv": {
3266
- "name": "UPSTASH_TWIN_URL",
3267
- "templates": {
3268
- "QSTASH_URL": "${url}",
3269
- "UPSTASH_REDIS_REST_URL": "${url}",
3270
- "KV_REST_API_URL": "${url}"
3271
- },
3272
- "note": "Redis reads its REST URL; QStash and Workflow read QSTASH_URL. Direct SDK transports use the twin endpoint and issued token; other clients also use host routing."
3273
- },
3274
- "credentialDoor": {
3275
- "account": {
3276
- "field": "account"
3277
- },
3278
- "path": "/_twin/app-credentials",
3279
- "body": {
3280
- "owner": "owner@world.test"
3281
- },
3282
- "fill": {
3283
- "UPSTASH_REDIS_REST_URL": "redis_url",
3284
- "UPSTASH_REDIS_REST_TOKEN": "redis_token",
3285
- "KV_REST_API_URL": "redis_url",
3286
- "KV_REST_API_TOKEN": "redis_token",
3287
- "QSTASH_TOKEN": "qstash_token",
3288
- "QSTASH_CURRENT_SIGNING_KEY": "qstash_current_signing_key",
3289
- "QSTASH_NEXT_SIGNING_KEY": "qstash_next_signing_key"
3290
- }
3291
- },
3292
- "serveExport": "createUpstashTwinServer"
3293
- },
3294
- "vercel": {
3295
- "adoption": {
3296
- "sdks": [
3297
- "@vercel/sdk",
3298
- "@vercel/edge-config"
3299
- ],
3300
- "pypi": [
3301
- "vercel"
3302
- ],
3303
- "envStems": [
3304
- "VERCEL",
3305
- "EDGE_CONFIG"
3306
- ],
3307
- "configFiles": [
3308
- {
3309
- "file": "vercel.json",
3310
- "usage": "application",
3311
- "when": "crons"
3312
- }
3313
- ]
3314
- },
3315
- "hosts": [
3316
- {
3317
- "host": "api.vercel.com"
3318
- },
3319
- {
3320
- "host": "vercel.com"
3321
- },
3322
- {
3323
- "host": "edge-config.vercel.com"
3324
- }
3325
- ],
3326
- "archetype": "crud",
3327
- "protocol": {
3328
- "declared": "3",
3329
- "major": 3,
3330
- "standing": "current"
3331
- },
3332
- "transport": "rest",
3333
- "resources": [
3334
- "team",
3335
- "project",
3336
- "project_domain",
3337
- "domain",
3338
- "edge_config",
3339
- "edge_config_item"
3340
- ],
3341
- "endpointEnvNone": "the applications reach api.vercel.com and the Edge Config connection string's host, which the World routes to the twin",
3342
- "credentialDoor": {
3343
- "account": {
3344
- "field": "account"
3345
- },
3346
- "path": "/_twin/app-credentials",
3347
- "body": {
3348
- "team": "world",
3349
- "project": "world"
3350
- },
3351
- "fill": {
3352
- "VERCEL_API_KEY": "token",
3353
- "VERCEL_TOKEN": "token",
3354
- "TEAM_ID_VERCEL": "team_id",
3355
- "PROJECT_ID_VERCEL": "project_id",
3356
- "VERCEL_PROJECT_ID": "project_id",
3357
- "EDGE_CONFIG": "edge_config",
3358
- "EDGE_CONFIG_ID": "edge_config_id"
3359
- }
3360
- },
3361
- "serveExport": "createVercelTwinServer"
3362
- },
3363
- "vgauth": {
3364
- "adoption": {
3365
- "sdks": [],
3366
- "envStems": []
3367
- },
3368
- "hosts": [
3369
- {
3370
- "host": "auth.videogame.ai"
3371
- }
3372
- ],
3373
- "archetype": "proxy",
3374
- "protocol": {
3375
- "declared": "3",
3376
- "major": 3,
3377
- "standing": "current"
3378
- },
3379
- "transport": "rest",
3380
- "resources": [
3381
- "Account"
3382
- ],
3383
- "endpointEnv": {
3384
- "name": "VOLTER_ACCOUNT_URL",
3385
- "note": "Volter Editor managed-account-defaults.ts derives VOLTER_OAUTH_ISSUER_URL and VOLTER_AUTH_URL from this URL."
3386
- },
3387
- "credentialDoor": {
3388
- "path": "/_twin/configuration",
3389
- "body": {},
3390
- "fill": {}
3391
- },
3392
- "serveExport": "createVgauthTwinServer"
3393
- },
3394
- "volteridentity": {
3395
- "adoption": {
3396
- "sdks": [
3397
- "@volter/identity"
3398
- ],
3399
- "envStems": [
3400
- "VOLTER_ISSUER",
3401
- "VOLTER_CLIENT"
3402
- ]
3403
- },
3404
- "hosts": [
3405
- {
3406
- "host": "id.volter.ai"
3407
- }
3408
- ],
3409
- "archetype": "crud",
3410
- "protocol": {
3411
- "declared": "3",
3412
- "major": 3,
3413
- "standing": "current"
3414
- },
3415
- "transport": "rest",
3416
- "resources": [
3417
- "user",
3418
- "account",
3419
- "oauth_client",
3420
- "organization",
3421
- "member",
3422
- "invitation"
3423
- ],
3424
- "endpointEnv": {
3425
- "name": "VOLTER_ISSUER",
3426
- "note": "A product names its identity service by VOLTER_ISSUER (twin-world apps/platform/src/identity.ts)."
3427
- },
3428
- "serveExport": "createVolteridentityTwinServer"
3429
- },
3430
- "webrisk": {
3431
- "adoption": {
3432
- "sdks": [
3433
- "@google-cloud/web-risk"
3434
- ]
3435
- },
3436
- "hosts": [
3437
- {
3438
- "host": "webrisk.googleapis.com"
3439
- }
3440
- ],
3441
- "archetype": "crud",
3442
- "protocol": {
3443
- "declared": "3",
3444
- "major": 3,
3445
- "standing": "current"
3446
- },
3447
- "transport": "raw-tcp",
3448
- "resources": [],
3449
- "endpointEnvNone": "No demanded application configures a Web Risk endpoint; the World routes the declared vendor host.",
3450
- "serveExport": "createWebriskTwinServer"
3451
- },
3452
- "worldlabs": {
3453
- "adoption": {
3454
- "sdks": [],
3455
- "envStems": [
3456
- "WORLDLABS"
3457
- ]
3458
- },
3459
- "hosts": [
3460
- {
3461
- "host": "api.worldlabs.ai"
3462
- }
3463
- ],
3464
- "archetype": "crud",
3465
- "protocol": {
3466
- "declared": "3",
3467
- "major": 3,
3468
- "standing": "current"
3469
- },
3470
- "transport": "rest",
3471
- "resources": [],
3472
- "endpointEnvNone": "the editor calls api.worldlabs.ai; the World claims the host",
3473
- "credentialDoor": {
3474
- "path": "/_twin/accounts",
3475
- "body": {},
3476
- "fill": {
3477
- "WORLDLABS_API_KEY": "api_key"
3478
- }
3479
- },
3480
- "serveExport": "createWorldlabsTwinServer"
3481
- },
3482
- "x": {
3483
- "adoption": {
3484
- "pypi": [
3485
- "tweepy"
3486
- ],
3487
- "sdks": [
3488
- "@xdevplatform/xdk",
3489
- "twitter-api-sdk",
3490
- "twitter-api-v2"
3491
- ],
3492
- "scopes": [
3493
- "@xdevplatform/"
3494
- ],
3495
- "envStems": [
3496
- "X",
3497
- "TWITTER"
3498
- ]
3499
- },
3500
- "hosts": [
3501
- {
3502
- "host": "api.x.com",
3503
- "pathPattern": "^/2/|^/oauth/(?:request_token|authorize|authenticate|access_token)/?$|^/1\\.1/oauth/invalidate_token(?:\\.json)?/?$|^/_twin/"
3504
- },
3505
- {
3506
- "host": "api.twitter.com",
3507
- "pathPattern": "^/2/|^/oauth/(?:request_token|authorize|authenticate|access_token)/?$|^/1\\.1/oauth/invalidate_token(?:\\.json)?/?$|^/_twin/"
3508
- },
3509
- {
3510
- "host": "x.com",
3511
- "pathPattern": "^/i/oauth2/authorize/?$|^/_twin/|^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$|^/intent/tweet/?$"
3512
- },
3513
- {
3514
- "host": "twitter.com",
3515
- "pathPattern": "^/i/oauth2/authorize/?$|^/_twin/|^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$|^/intent/tweet/?$"
3516
- },
3517
- {
3518
- "host": "www.x.com",
3519
- "pathPattern": "^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$"
3520
- },
3521
- {
3522
- "host": "www.twitter.com",
3523
- "pathPattern": "^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$"
3524
- },
3525
- {
3526
- "host": "mobile.twitter.com",
3527
- "pathPattern": "^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$"
3528
- },
3529
- {
3530
- "host": "mobile.x.com",
3531
- "pathPattern": "^/(?!_twin/)[A-Za-z0-9_]{1,15}/status/[0-9]{1,19}/?$|^/(?!(?:i|en|home|explore|notifications|messages|settings|search|compose|login|logout|signup|tos|privacy|about|account|intent|share|hashtag|lists|bookmarks|jobs|download|grok|premium|communities|creators|twin|_twin)/?$)[A-Za-z0-9_]{1,15}/?$|^/home/?$|^/i/flow/login/?$|^/$"
3532
- },
3533
- {
3534
- "host": "pbs.twimg.com",
3535
- "pathPattern": "^/media/[0-9a-f]{64}\\.(?:jpg|png|gif|webp)$|^/ext_tw_video_thumb/[0-9]{1,19}/pu/img/[0-9a-f]{64}\\.svg$"
3536
- },
3537
- {
3538
- "host": "video.twimg.com",
3539
- "pathPattern": "^/ext_tw_video/[0-9]{1,19}/pu/vid/avc1/[0-9]+x[0-9]+/[0-9a-f]{64}\\.mp4$"
3540
- },
3541
- {
3542
- "host": "abs.twimg.com",
3543
- "pathPattern": "^/sticky/default_profile_images/default_profile_(?:normal|bigger|200x200|400x400)\\.png$"
3544
- }
3545
- ],
3546
- "archetype": "crud",
3547
- "protocol": {
3548
- "declared": "3",
3549
- "major": 3,
3550
- "standing": "current"
3551
- },
3552
- "transport": "rest",
3553
- "resourcesUnreachable": {
3554
- "poll": "The customer applications publish text, photos, videos and Articles; poll creation is exercised separately by the vendor-published Post with poll example.",
3555
- "_refresh_token": "Dub requests tweet.read users.read for handle verification without offline.access, so its grant issues no refresh token. The vendor-backed root exchanges refresh tokens, exercised by the published examples."
3556
- },
3557
- "resources": [
3558
- "oauth_client",
3559
- "oauth1_app",
3560
- "account",
3561
- "auth_request",
3562
- "post",
3563
- "poll",
3564
- "rate_limit",
3565
- "_oauth1_token",
3566
- "article",
3567
- "like",
3568
- "repost",
3569
- "bookmark",
3570
- "_impressions",
3571
- "_card",
3572
- "_grant",
3573
- "_oauth1_grant",
3574
- "_rate_window",
3575
- "_authorization_code",
3576
- "_access_token",
3577
- "_refresh_token",
3578
- "_oauth1_request_token",
3579
- "_client_secret",
3580
- "_code_challenge",
3581
- "upload"
3582
- ],
3583
- "credentialDoor": {
3584
- "account": {
3585
- "field": "account"
3586
- },
3587
- "path": "/_twin/app-credentials",
3588
- "body": {},
3589
- "fill": {
3590
- "TWITTER_API_KEY": "consumer_key",
3591
- "TWITTER_API_SECRET": "consumer_secret",
3592
- "TWITTER_ACCESS_TOKEN": "access_token",
3593
- "TWITTER_ACCESS_SECRET": "access_token_secret",
3594
- "TWITTER_CLIENT_ID": "client_id",
3595
- "TWITTER_CLIENT_SECRET": "client_secret"
3596
- }
3597
- },
3598
- "serveExport": "createXTwinServer"
3599
- },
3600
- "xai": {
3601
- "adoption": {
3602
- "sdks": [
3603
- "@ai-sdk/xai"
3604
- ],
3605
- "envStems": [
3606
- "XAI",
3607
- "GROK"
3608
- ]
3609
- },
3610
- "hosts": [
3611
- {
3612
- "host": "api.x.ai"
3613
- }
3614
- ],
3615
- "archetype": "crud",
3616
- "protocol": {
3617
- "declared": "3",
3618
- "major": 3,
3619
- "standing": "current"
3620
- },
3621
- "transport": "rest",
3622
- "resources": [],
3623
- "endpointEnvNone": "the SDK calls https://api.x.ai/v1 unless given a base URL in code; the World claims the host",
3624
- "credentialDoor": {
3625
- "account": {
3626
- "field": "account"
3627
- },
3628
- "path": "/_twin/app-credentials",
3629
- "body": {},
3630
- "fill": {
3631
- "XAI_API_KEY": "api_key"
3632
- }
3633
- },
3634
- "serveExport": "createXaiTwinServer"
3635
- },
3636
- "youtube": {
3637
- "adoption": {
3638
- "sdks": [
3639
- "@googleapis/youtube"
3640
- ],
3641
- "envStems": [
3642
- "YOUTUBE"
3643
- ]
3644
- },
3645
- "hosts": [
3646
- {
3647
- "host": "www.googleapis.com",
3648
- "pathPattern": "^/(upload/|resumable/upload/)?youtube/v3(/|$)"
3649
- },
3650
- {
3651
- "host": "youtube.googleapis.com",
3652
- "pathPattern": "^/(upload/|resumable/upload/)?youtube/v3(/|$)|^/_twin/"
3653
- }
3654
- ],
3655
- "archetype": "crud",
3656
- "protocol": {
3657
- "declared": "3",
3658
- "major": 3,
3659
- "standing": "current"
3660
- },
3661
- "transport": "rest",
3662
- "resources": [
3663
- "channel",
3664
- "video",
3665
- "liveBroadcast",
3666
- "liveStream",
3667
- "liveChatMessage",
3668
- "commentThread",
3669
- "comment",
3670
- "_upload_session",
3671
- "_live_chat",
3672
- "_comment_ban",
3673
- "_live",
3674
- "_live_segment"
3675
- ],
3676
- "endpointEnvNone": "Google's generated clients take rootUrl in code (googleapis: https://youtube.googleapis.com/); the World routes the declared YouTube paths on both API hosts",
3677
- "credentialDoor": {
3678
- "path": "/_twin/channels",
3679
- "body": {
3680
- "sub": "100000000000000000001",
3681
- "title": "World Channel",
3682
- "handle": "worldchannel"
3683
- },
3684
- "fill": {
3685
- "YOUTUBE_CHANNEL_ID": "id"
3686
- }
3687
- },
3688
- "credentialIssuer": "googleoauth",
3689
- "sidePorts": [
3690
- {
3691
- "name": "ingest",
3692
- "option": "ingestPort",
3693
- "flag": "--ingest-port",
3694
- "scheme": "rtmp",
3695
- "path": "/live2",
3696
- "note": "YouTube's RTMP ingest (<ingestionAddress>/<streamName>): an encoder publishes a liveStream's video here"
3697
- }
3698
- ],
3699
- "serveExport": "createYoutubeTwinServer"
82
+ "note": "The local development server creates default; no TLS or Cloud API key."
83
+ }
3700
84
  }
3701
85
  },
3702
86
  "undeclared": []