Repository navigation
Expand file tree
/
Copy pathauto-runtime.schema.json
More file actions
1338 lines (1338 loc) · 70.6 KB
/
Copy pathauto-runtime.schema.json
File metadata and controls
1338 lines (1338 loc) · 70.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Auto Runtime configuration file",
"description": "The settings of Auto Runtime that are lists or maps, where Studio comes from, a declared local mode, the usage ping, payload offloading and the license, read from the file that CONFIG_FILE names. Each key stands for the environment variable of the same name in upper case, which wins over it, and license for AUTO_RUNTIME_LICENSE, whose key and allocation AUTO_RUNTIME_LICENSE_KEY and AUTO_RUNTIME_ALLOCATION win over. Secrets are written as references such as ${GATEWAY_API_KEY}.",
"type": "object",
"properties": {
"allowed_origins": {
"type": "array",
"items": {
"type": "string"
},
"description": "The origins a page in a browser may call the API from, such as https://app.example.com. ALLOWED_ORIGINS wins over it"
},
"studio_origin": {
"type": "string",
"description": "The origin Studio is served from, an https URL, or an http URL on localhost, 127.0.0.1 or [::1], with no path; a page there may call the API, and the runtime fetches Studio from it when it serves Studio. https://studio.on.auto when left out. STUDIO_ORIGIN wins over it"
},
"serve_studio": {
"type": "boolean",
"description": "Whether the runtime serves Studio itself at /studio/ on its own address, fetched from the Studio host and kept, since a page on a public address may not reach an address on the machine. On in local mode and off otherwise when left out. SERVE_STUDIO wins over it"
},
"api_keys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9-]{1,32}$"
},
"org": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$"
},
"permissions": {
"type": "array",
"items": {
"type": "string",
"enum": ["org:read", "org:write", "playbook:read", "playbook:write"]
}
},
"playbooks": {
"anyOf": [
{
"type": "string",
"enum": ["*"]
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{2,47}$"
}
}
]
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"required": ["id", "org", "permissions", "playbooks", "sha256"],
"additionalProperties": false
}
},
"access_mode": {
"type": "string",
"enum": ["local"],
"description": "local declares local mode, where every request acts as the local developer with no credential, for a runtime whose port only this computer reaches, such as a container whose port is published on 127.0.0.1 alone. It takes no API_KEYS, and a PUBLIC_URL only on localhost, 127.0.0.1 or [::1], which names the address of the runtime and signs no one in; a runtime that listens beyond the loopback needs that PUBLIC_URL. ACCESS_MODE wins over it"
},
"model_gateways": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The provider prefix, such as gateway in gateway/llama-3.3-70b: 1 to 32 lowercase letters, digits and hyphens, starting with a letter, unique, and not a built-in prefix"
},
"base_url": {
"type": "string",
"description": "The http or https URL that /chat/completions is appended to, such as https://gateway.example.com/v1"
},
"api_key": {
"type": "string",
"description": "The key, sent as Authorization: Bearer <key>; in the configuration file a reference such as ${GATEWAY_API_KEY}"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Headers sent with every request, their values treated as secrets; in the configuration file a credential is a reference"
},
"query_params": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Query parameters added to every request, their values treated as secrets"
},
"structured_outputs": {
"type": "boolean",
"description": "true when the endpoint accepts response_format json_schema; otherwise no response_format is sent, the schema of a JSON answer is written into the instructions, and the answer is checked here. Default false"
},
"include_usage": {
"type": "boolean",
"description": "Asks for usage in streamed responses. Default false"
},
"expose_provider_messages": {
"type": "boolean",
"description": "true when the gateway's error messages are safe to show to callers of a reasoning function. Default false"
},
"allowed_provider_options": {
"type": "array",
"items": {
"type": "string"
},
"description": "The top-level request body fields a reasoning function may set for this gateway through provider_options, such as user and metadata. Default none"
},
"cost_header": {
"type": "string",
"description": "A gateway entry names the header its gateway answers the call's cost in, in US dollars, or names none and no cost is kept. A run keeps the cost as cost_usd"
}
},
"required": ["name", "base_url"],
"additionalProperties": false
},
"description": "OpenAI-compatible gateways, each a provider prefix of its own. MODEL_GATEWAYS wins over it"
},
"model_aliases": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Model references a reasoning function may give, each sent on as another reference; a trailing * on both sides covers every model of a provider. MODEL_ALIASES wins over it"
},
"declared_models": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "A model id as the provider receives it, such as eu.anthropic.claude-sonnet-4-5-20250929-v1:0"
}
},
"description": "The models list_models shows for bedrock, bedrock-anthropic, azure, vertex and vertex-anthropic, which do not list their own, and for a gateway whose list cannot be read, keyed by the provider prefix. DECLARED_MODELS wins over it"
},
"allowed_models": {
"type": "array",
"items": {
"type": "string",
"description": "A model reference a reasoning function may give, written provider/model, or provider/* for every model of a provider"
},
"description": "The only model references a reasoning function may give, by name or through an alias, and list_models shows, each provider/model or provider/* for every model of a provider; every model when left out. ALLOWED_MODELS wins over it"
},
"voice_model": {
"type": "string",
"description": "The model that writes out what a person says, which Studio offers beside each comment field, as provider/model, its provider openai or the name of an entry of model_gateways, such as openai/whisper-1; none when left out. VOICE_MODEL wins over it"
},
"tool_servers": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["mcp", "stdio", "openapi"],
"description": "mcp for a remote MCP server, given url; stdio for an MCP server this server starts as a process, given command; openapi for an HTTP API, given document. Taken from url, command or document when left out"
},
"url": {
"type": "string",
"description": "The http or https URL of a remote MCP server, spoken to over Streamable HTTP"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Headers sent to a remote MCP server, or to an HTTP API outside its document's security schemes, with every request; the value of a reference such as ${GRAPH_API_KEY} is a secret, scrubbed from everything a call records, and a value written out is not"
},
"auth": {
"type": "object",
"properties": {
"issuer": {
"type": "string",
"description": "The issuer of the authorization server the credential was registered with, pinned: it is sent to no other. An https URL, or an http URL on a loopback address"
},
"client_id": {
"type": "string",
"description": "The client id registered with that authorization server"
},
"client_secret": {
"type": "string",
"description": "The client secret, as a reference such as ${GRAPH_CLIENT_SECRET}"
},
"private_key": {
"type": "string",
"description": "A private key in PEM that signs the client assertion, as a reference such as ${GRAPH_PRIVATE_KEY}"
},
"algorithm": {
"type": "string",
"description": "The signing algorithm of private_key, such as RS256 or ES256"
},
"scope": {
"type": "string",
"description": "The scopes to ask for, separated by spaces"
}
},
"required": ["issuer", "client_id"],
"additionalProperties": false,
"description": "OAuth client credentials, for a server whose authorization server issues tokens to clients: client_secret, or private_key with its algorithm. An mcp server's authorization server is found from the server's own metadata, an openapi server's from the issuer's"
},
"command": {
"type": "string",
"description": "The command of a stdio server: an installed, pinned program, never a package downloaded at start such as npx -y"
},
"args": {
"type": "array",
"items": {
"type": "string"
},
"description": "The arguments of the command of a stdio server"
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "The whole environment of the process of a stdio server, which inherits nothing else; the value of a reference such as ${GRAPH_API_KEY} is a secret, scrubbed from everything a call records, and a value written out is not"
},
"document": {
"type": "string",
"description": "The OpenAPI document of an HTTP API, version 3.0 or 3.1, read once at start: an https URL, an http URL on a loopback address, or a path relative to the directory of the configuration file"
},
"base_url": {
"type": "string",
"description": "The URL the calls of an HTTP API go to, in place of the first server its document names; required when it names none. An https URL, or an http URL on a loopback address"
},
"query_params": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Query parameters sent to an HTTP API with every call, outside its document's security schemes, such as a tenant; the value of a reference such as ${GRAPH_API_KEY} is a secret, scrubbed from everything a call records, and a value written out is not"
},
"security": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "The credential of each security scheme of an HTTP API's document the entry gives, by the scheme's name, placed as the scheme says: an apiKey in its header or query parameter, a bearer as Authorization: Bearer, a basic as user:password; an oauth2 or openIdConnect scheme takes the auth block instead; each value is a reference such as ${BILLING_API_KEY} or ada:${BILLING_PASSWORD}, a secret, and one written out is refused"
},
"failure_codes": {
"type": "object",
"properties": {
"succeeded": {
"type": "string",
"description": "A JSON pointer to the boolean of a JSON answer that says whether the call succeeded, false for a failure, such as /ok"
},
"code": {
"type": "string",
"description": "A JSON pointer to the string of a failed answer that names its failure, such as /error"
},
"key_refused": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the API refused the credential, as a 401 says elsewhere"
},
"scope_lacking": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the credential lacks a scope the call needs"
},
"rate_limited": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the API limits the rate of its calls, as a 429 says elsewhere"
}
},
"required": ["succeeded", "code"],
"additionalProperties": false,
"description": "For an HTTP API that answers a failure in a JSON answer of a successful status: where the answer says whether the call succeeded and the code that names its failure, and the codes that mean a refused credential, a lacking scope or a limited rate; any other failed answer is an error result carrying the answer"
},
"org": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "The org this server serves, a list of orgs, or * for every org of this server, required; one entry serves each org it names under one name, with one credential and one connection"
},
"playbooks": {
"type": "array",
"items": {
"type": "string"
},
"description": "The playbooks this server serves within each org it names, by id; every playbook of each org when left out, and refused beside * for every org"
},
"allowed": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tools of this server a function may name, each named as the server lists it; every tool of the server when left out"
},
"marks": {
"type": "object",
"properties": {
"reads": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tools that only read, each named as the server lists it"
},
"acts": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tools that may change something, each named as the server lists it"
}
},
"additionalProperties": false,
"description": "The mark of each tool named, which wins over the one the server's hints or the HTTP method of an operation give: reads for a tool that only reads, acts for one that may change something; a tool named in neither keeps the mark it is listed with, and one nothing marks is unmarked, which counts as one that may change something. A name the server does not list is ignored"
},
"record_content": {
"type": "boolean",
"description": "Whether the arguments and the answers of this server's calls are kept whole, scrubbed of secrets, in the playbook's ledger, where anyone who may read the playbook reads them; false keeps their sizes alone. Default true"
},
"handles_money": {
"type": "boolean",
"description": "Whether the tools of this server pay, refund, transfer or pay out money; the directory listing does not offer such a server. Default false"
},
"request_id": {
"type": "string",
"description": "The response header, or for an MCP server the key of the metadata of a result, in which the server carries its own id of a request, recorded with each call"
},
"provider": {
"type": "string",
"description": "A provider the runtime knows, by its name, which gives the server and where its credential goes: the entry then gives placeholders, credential, org, playbooks, allowed and record_content, and no field of the server"
},
"placeholders": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "With provider, the value of each of the provider's placeholders, by name, never a reference"
},
"credential": {
"anyOf": [
{
"type": "string",
"description": "For a secret, a reference such as ${TRACKER_TOKEN}"
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "The way of the provider the credential takes, when not its first"
},
"value": {
"type": "string",
"description": "For a secret, a reference such as ${TRACKER_TOKEN}"
},
"client_id": {
"type": "string",
"description": "For client credentials, the client id, written out"
},
"client_secret": {
"type": "string",
"description": "For client credentials, a reference such as ${LEDGERS_CLIENT_SECRET}"
},
"private_key": {
"type": "string",
"description": "For client credentials, a private key in PEM as a reference such as ${LEDGERS_PRIVATE_KEY}"
},
"algorithm": {
"type": "string",
"description": "The signing algorithm of private_key, such as RS256 or ES256"
}
},
"additionalProperties": false
}
],
"description": "With provider, the credential of the way kind names, or else of its first way but authorization, a consent a person gives on Studio's page alone: a secret as a reference such as ${TRACKER_TOKEN}, or client credentials as the client id written out with client_secret, or with private_key and its algorithm, each key a reference; nothing for a way that takes none"
}
},
"additionalProperties": false
},
"description": "The tool servers whose tools a function may name, each bound to an org and optionally its playbooks: url for a remote MCP server, command for an MCP server run as a process, document for an HTTP API described by an OpenAPI document. Secrets are references such as ${GRAPH_API_KEY}. TOOL_SERVERS wins over it"
},
"connections": {
"type": "object",
"properties": {
"people_may_add": {
"type": "boolean",
"description": "Whether people may add connections through their agents; true when left out"
},
"allowed_hosts": {
"type": "array",
"items": {
"type": "string",
"pattern": "^(?:\\*\\.)?[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"
},
"description": "The hosts a connection may reach, each a host or *. and a host for every host under it; a loopback, private or link-local address is reached only where it is named here by itself, and a name that resolves to one never is; every host that is none of those addresses when left out"
},
"credential_kinds": {
"type": "array",
"items": {
"type": "string",
"enum": ["none", "reference", "secret", "client_credentials", "authorization"]
},
"description": "The kinds of credential a connection may take, of none, reference, secret, client_credentials and authorization; every kind when left out"
},
"variables": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
},
"description": "The variables of the runtime a reference credential may name, never one the runtime reads for itself; none when left out, so no connection takes a reference"
},
"registered_clients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"issuers": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "The issuers of the authorization servers the client is registered at, each an https URL, or an http URL on a loopback address; one written with a placeholder, such as https://login.example.com/{tenant}, is kept as it is written"
},
"client_id": {
"type": "string",
"minLength": 1,
"description": "The client id the authorization servers issued"
},
"client_secret": {
"type": "string",
"description": "The client secret, as a reference such as ${EXAMPLE_CLIENT_SECRET}"
},
"private_key": {
"type": "string",
"description": "A private key in PEM that signs the client assertion, as a reference such as ${EXAMPLE_PRIVATE_KEY}"
},
"algorithm": {
"type": "string",
"minLength": 1,
"description": "The signing algorithm of private_key, such as RS256 or ES256"
},
"token_endpoint_auth_method": {
"type": "string",
"enum": ["client_secret_basic", "client_secret_post", "private_key_jwt", "none"],
"description": "How the client authenticates at the token endpoint where the metadata of the authorization server leaves the choice; chosen from the client and the metadata when left out"
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"description": "The scopes the client may ask at its issuers, each as a provider's way writes it: a consent takes the first client at its issuer that names every scope it asks, the scope of the way at a first consent, and with a group of the way's more the scopes the connection holds and the group's. Named for each client where several clients serve one issuer, and left out for a client that may ask any"
}
},
"required": ["issuers", "client_id"],
"additionalProperties": false
},
"description": "The clients whoever runs the runtime registered at authorization servers, each with the issuers it is registered at, its client_id, and its client_secret, or its private_key with its algorithm, as a reference, or neither for a public client, and the scopes it may ask, which each client names where several serve one issuer"
},
"auto_clients": {
"type": "boolean",
"description": "Whether a provider whose way takes a registered client takes Auto's client too, through Auto's consent service, where no client registered at its issuer covers the scope the way asks; true in local mode and false otherwise when left out. AUTO_CLIENTS wins over it"
},
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the provider and of a connection to it by default: 1 to 32 lowercase letters, digits and hyphens, starting with a letter"
},
"title": {
"type": "string",
"minLength": 1,
"description": "What a person reads as its name"
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "What a function may do through it, in one or two sentences of at most 300 characters"
},
"website": {
"type": "string",
"description": "The https page where a person reads about the server and makes a credential"
},
"type": {
"type": "string",
"enum": ["mcp", "openapi"],
"description": "mcp for an MCP server, given url; openapi for an HTTP API"
},
"url": {
"type": "string",
"description": "For mcp, the https URL of the server, {name} standing for the placeholder name"
},
"document": {
"type": "string",
"description": "For openapi, the https URL of its OpenAPI document, {name} standing for the placeholder name"
},
"base_url": {
"type": "string",
"description": "For openapi, the https URL its calls go to where the document names no server, {name} standing for the placeholder name"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Headers sent with every request, never a credential; a reference such as ${ADS_DEVELOPER_TOKEN} stands for a value of whoever runs the runtime"
},
"query_params": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "For openapi, query parameters sent with every call, never a credential; a reference such as ${ADS_DEVELOPER_TOKEN} stands for a value of whoever runs the runtime"
},
"request_id": {
"type": "string",
"description": "The response header, or for an MCP server the key of the metadata of a result, in which the server carries its own id of a request, recorded with each call"
},
"handles_money": {
"type": "boolean",
"description": "true for a provider whose tools pay, refund, transfer or pay out money, which the directory listing does not offer"
},
"marks": {
"type": "object",
"properties": {
"reads": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tools that only read, each named as the server lists it"
},
"acts": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tools that may change something, each named as the server lists it"
}
},
"additionalProperties": false,
"description": "The mark of each tool named, for the tools the server marks wrongly or not at all: reads for a tool that only reads, acts for one that may change something, each named as the server lists it; for openapi, a tool of the document beside the entries"
},
"failure_codes": {
"type": "object",
"properties": {
"succeeded": {
"type": "string",
"description": "A JSON pointer to the boolean of a JSON answer that says whether the call succeeded, false for a failure, such as /ok"
},
"code": {
"type": "string",
"description": "A JSON pointer to the string of a failed answer that names its failure, such as /error"
},
"key_refused": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the API refused the credential, as a 401 says elsewhere"
},
"scope_lacking": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the credential lacks a scope the call needs"
},
"rate_limited": {
"type": "array",
"items": {
"type": "string"
},
"description": "The codes that say the API limits the rate of its calls, as a 429 says elsewhere"
}
},
"required": ["succeeded", "code"],
"additionalProperties": false,
"description": "For openapi, an API that answers a failure in a JSON answer of a successful status: the pointers to whether the call succeeded and to the code of its failure, and the codes that mean a refused credential, a lacking scope or a limited rate"
},
"conversations": {
"type": "object",
"properties": {
"tell": {
"type": "string",
"enum": ["all", "refusals"],
"description": "The provider's practice, and what a person is told through it by a function that writes no tell: all where one more message is expected, as in a chat, so a reply taken is marked and answered, a reply not taken is answered and a request that ends says so; refusals where each message costs, as in mail or a text message, so only a reply that could not be taken is answered"
},
"reply": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "The tool that posts a message in the conversation of a person's reply, named as the server lists it"
},
"with": {
"type": "object",
"description": "Its arguments, written as the arguments of a function's deliver are, each a Liquid template over to, sent.conversation, sent.id, message, reply.id and reply.to: message is the line, and reply.to the message the person's reply answers"
},
"sent": {
"type": "string",
"description": "A JSON Pointer into what the tool answered, to the id of the message it posted"
}
},
"required": ["tool", "with", "sent"],
"additionalProperties": false,
"description": "How a line is posted in reply to a person"
},
"react": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "The tool that marks a person's message with a reaction, named as the server lists it"
},
"with": {
"type": "object",
"description": "Its arguments, written as the arguments of a function's deliver are, each a Liquid template over to, sent.conversation, sent.id, message, reply.id and reply.to"
}
},
"required": ["tool", "with"],
"additionalProperties": false,
"description": "How a person's message is marked"
},
"read_limit": {
"type": "object",
"properties": {
"quota": {
"type": "integer",
"minimum": 1,
"description": "The most reads of a conversation the service takes in one window"
},
"window_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 86400,
"description": "The window, in seconds, from 1 to 86400"
},
"clients": {
"type": "array",
"items": {
"type": "string",
"enum": ["registered", "auto", "metadata_document", "dynamic", "own", "gateway"]
},
"minItems": 1,
"description": "The client sources whose connections the service limits so, where it limits some apps and not others; left out, every connection"
}
},
"required": ["quota", "window_seconds"],
"additionalProperties": false,
"description": "How often the service lets the replies of a conversation be read, as a rate limit's quota and window: at most quota reads in each window. The runtime reads a conversation no sooner than the window divided by the quota after its last read, on its timer and when the service tells it of a message alike"
},
"automatic": {
"type": "string",
"description": "A JSON Pointer within a message the reading tool lists, to what it holds only when an app posted it or it was sent automatically; such a message is passed over, never taken, refused or answered"
}
},
"required": ["tell", "reply"],
"additionalProperties": false,
"description": "How the provider's conversations are replied to and marked, for a function that asks a person through it and reads their replies"
},
"renders": {
"type": "string",
"minLength": 1,
"description": "The name of the render target a message sent through the provider can be written for, where it can be a card the run turns into the layout the provider shows"
},
"events": {
"type": "object",
"properties": {
"destinations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["webhook", "websocket", "queue"],
"description": "How the service sends: webhook, an HTTP request to the runtime's address; websocket, down a socket the runtime opens to the service; queue, into a queue the runtime reads"
},
"per": {
"type": "string",
"enum": ["subscription", "app"],
"description": "For webhook and queue, how sending is arranged: subscription, by a call Auto makes for each place requests wait in; app, once on the app at the vendor, for everyone who connects through it"
},
"topic": {
"type": "string",
"description": "Per subscription, the topic, as WebSub names the unit one subscribes to: a Liquid template over with, the arguments of the call that delivered a request, and sent.conversation and sent.id, rendering the place one subscription serves, such as a repository or a chat"
},
"subscribe": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "A tool of the connection that makes the call, named as the server lists it"
},
"with": {
"type": "object",
"description": "Beside tool, its arguments, written as the arguments of a function's deliver are"
},
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
"description": "Beside url, the method of an HTTP request sent with the connection's own credential"
},
"url": {
"type": "string",
"description": "Beside method, the https URL of the request, written out up to its host, a Liquid template"
},
"body": {
"type": "object",
"description": "Beside method and url, the JSON body of the request, written as with is"
},
"subscribed": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A JSON Pointer into what the call answered, to the id of the subscription it made"
},
"expires_at": {
"type": "string",
"description": "A JSON Pointer to when the subscription lapses, where the answer says"
},
"secret": {
"type": "string",
"description": "A JSON Pointer to the secret the service made for the subscription, where it makes one"
}
},
"required": ["id"],
"additionalProperties": false,
"description": "Where what the call answered names the subscription it made"
}
},
"required": ["subscribed"],
"additionalProperties": false,
"description": "The call that subscribes, a tool of the connection or an HTTP request"
},
"renew": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "A tool of the connection that makes the call, named as the server lists it"
},
"with": {
"type": "object",
"description": "Beside tool, its arguments, written as the arguments of a function's deliver are"
},
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
"description": "Beside url, the method of an HTTP request sent with the connection's own credential"
},
"url": {
"type": "string",
"description": "Beside method, the https URL of the request, written out up to its host, a Liquid template"
},
"body": {
"type": "object",
"description": "Beside method and url, the JSON body of the request, written as with is"
},
"renewed": {
"type": "object",
"properties": {
"expires_at": {
"type": "string",
"description": "A JSON Pointer into what the call answered, to when the subscription lapses now"
}
},
"required": ["expires_at"],
"additionalProperties": false
}
},
"additionalProperties": false,
"description": "The call that renews a subscription before it lapses"
},
"unsubscribe": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "A tool of the connection that makes the call, named as the server lists it"
},
"with": {
"type": "object",
"description": "Beside tool, its arguments, written as the arguments of a function's deliver are"
},
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
"description": "Beside url, the method of an HTTP request sent with the connection's own credential"
},
"url": {
"type": "string",
"description": "Beside method, the https URL of the request, written out up to its host, a Liquid template"
},
"body": {
"type": "object",
"description": "Beside method and url, the JSON body of the request, written as with is"
}
},
"additionalProperties": false,
"description": "The call that removes a subscription, without which none is made"
},
"lease_seconds": {
"type": "integer",
"minimum": 1,
"description": "Per subscription, the most seconds a subscription lasts before it lapses, as WebSub's lease"
},
"needs": {
"type": "string",
"description": "Per subscription, the group of more of the entry's authorization way whose scopes subscribing takes, where the way's own scope does not cover it"
},
"verify": {
"type": "object",
"properties": {
"scheme": {
"type": "string",
"enum": ["hmac", "standard-webhooks", "bearer", "jwt"],
"description": "How a delivery proves it is the service's: hmac, a keyed hash of what it sends, in a header; standard-webhooks, signed as the Standard Webhooks specification signs a webhook; bearer, the secret itself, in a header; jwt, a JSON Web Token in a header, signed with the secret"
},
"secret": {
"type": "string",
"enum": ["subscription", "app"],
"description": "Which secret proves it: subscription, the subscription's own, which Auto makes or the service answers when Auto subscribes; app, the app's own, set once on the app at the vendor"
},
"hash": {
"type": "string",
"enum": ["sha256", "sha384", "sha512"],
"description": "For hmac, the hash function it keys"
},
"signed_payload": {
"type": "string",
"description": "For hmac, what is signed: {payload}, the body as sent, joined to {timestamp} and {id} where the service signs them, as in v0:{timestamp}:{payload}"
},
"signature": {
"type": "string",
"description": "For hmac, the header that carries the signature, as $request.header.<name>"
},
"prefix": {
"type": "string",
"minLength": 1,
"description": "What the signature or the token starts with before its value, such as sha256= or Bearer and a space"
},
"encoding": {
"type": "string",
"enum": ["hex", "base64"],
"description": "For hmac, how the signature is written"
},
"timestamp": {
"type": "string",
"description": "For hmac, the header or the field of the body that holds when the service sent the delivery"
},
"id": {
"type": "string",
"description": "For hmac, the header or the field of the body that holds the id of the delivery, the same on a retry"
},
"token": {
"type": "string",
"description": "For bearer and jwt, the header that carries it, as $request.header.<name>"
},
"alg": {
"type": "string",
"enum": ["HS256", "HS384", "HS512"],
"description": "For jwt, the algorithm the token is signed with, as JSON Web Algorithms names it"
}
},
"required": ["scheme", "secret"],
"additionalProperties": false
},
"handshake": {
"type": "object",
"properties": {
"when": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"description": "The arrival with which the service checks the address, as wake.when names an arrival"
},
"challenge": {
"type": "string",
"description": "Where the challenge the runtime answers is"
},
"response": {
"type": "object",
"additionalProperties": {
"type": "string",
"enum": ["challenge", "hmac"]
},
"description": "The fields of a JSON answer, each the challenge as it came or its hmac under the destination's secret, by the hash and encoding of its proof; left out, the challenge alone is answered as text"
},
"signed": {
"type": "boolean",
"description": "Whether the service proves the handshake as it proves a delivery, so that it is answered once proven; false where it comes before any secret exists, as WebSub's verification of intent does"
}
},
"required": ["when", "challenge", "signed"],
"additionalProperties": false,
"description": "How the service checks the address before it sends, as WebSub verifies intent"
},
"wake": {
"type": "object",
"properties": {
"when": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"description": "The arrivals that make Auto read now: each a runtime expression, a header or a field, with the values it may equal, every one of which holds"
},
"subscription": {
"type": "string",
"description": "Per subscription, where an arrival names the subscription it is for, so that only the conversations waiting through that subscription are read"
},
"conversation": {
"type": "string",
"description": "Where an arrival names the conversation it is about, as the answer of a request's delivery names it in sent.conversation, so that only the conversations waiting there are read"
},
"automatic": {
"type": "string",
"description": "Where an arrival holds something only when an app posted the message it is about, which then makes Auto read nothing, as the automatic of conversations passes such a message over"
}
},
"required": ["when"],
"additionalProperties": false,
"description": "Which arrivals make Auto read the conversations that wait, through the reading it does"
},
"connection": {
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Where an arrival names the vendor's account it happened in, such as a workspace, so that Auto finds the connections made in it"
},
"user": {
"type": "string",
"description": "Where an arrival names the vendor's user it is for, where the service sends for each person"
}
},
"required": ["account"],
"additionalProperties": false,
"description": "For a destination of the app, where an arrival names whose connection it is for"
},
"kind": {
"type": "string",
"enum": ["azure-event-hubs", "google-cloud-pubsub", "amazon-eventbridge"],
"description": "For queue, the queue the service delivers into, by its vendor's name for it"
},
"open": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "A tool of the connection that answers the socket's address, named as the server lists it"
},
"address": {
"type": "string",
"description": "Beside tool, a JSON Pointer into its answer, to the socket's address"