@protobase/config 0.49.1 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +1 -1
- package/dist/index.d.ts +8 -3
- package/package.json +7 -5
- package/schema.json +3460 -0
package/schema.json
ADDED
|
@@ -0,0 +1,3460 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "protobase.config.json",
|
|
4
|
+
"description": "A Protobase project's config, as protobase.config.ts's ProtobaseConfig types it: one flat object of plain data, everything optional.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"$schema": {
|
|
8
|
+
"description": "The JSON Schema this file follows, such as ./node_modules/@protobase/config/schema.json.",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"themeColor": {
|
|
12
|
+
"description": "The colour of the installed app's title bar and of the browser's toolbar around it.",
|
|
13
|
+
"anyOf": [
|
|
14
|
+
{
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"$ref": "#/definitions/EnvValue"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"backgroundColor": {
|
|
23
|
+
"description": "The colour of the screen an installed app shows while it starts.",
|
|
24
|
+
"anyOf": [
|
|
25
|
+
{
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"$ref": "#/definitions/EnvValue"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"name": {
|
|
34
|
+
"description": "The app's name: sign-in prompts, the mail it sends, the tab titles and the installed app; `PROTOBASE_APP_NAME` overrides it. Default `Protobase`.",
|
|
35
|
+
"anyOf": [
|
|
36
|
+
{
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"$ref": "#/definitions/EnvValue"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"url": {
|
|
45
|
+
"description": "The app's public URL, such as `https://admin.example.com`: the issuer of its tokens and where its emails link to.\nDefault `PROTOBASE_URL`, or in `protobase dev` the dev server's own; required with sign-in otherwise.",
|
|
46
|
+
"anyOf": [
|
|
47
|
+
{
|
|
48
|
+
"type": "string"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"$ref": "#/definitions/EnvValue"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"secret": {
|
|
56
|
+
"description": "The app's secret, made with `openssl rand -base64 32`: it signs session cookies, upload tickets and download links\nand public forms' bot checks, and encrypts the token signing keys. Default `PROTOBASE_SECRET`; required with sign-in.",
|
|
57
|
+
"anyOf": [
|
|
58
|
+
{
|
|
59
|
+
"type": "string"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"$ref": "#/definitions/EnvValue"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"previousSecrets": {
|
|
67
|
+
"description": "The app's secrets before `secret`, newest first: what they encrypted still decrypts, so the token signing keys keep\nsigning after the secret changes. Keep one listed while the keys it encrypted sign (`signingKeyDays`), and while\ntwo-factor authenticator apps set up with it are in use. Default `PROTOBASE_PREVIOUS_SECRETS`, comma separated.",
|
|
68
|
+
"anyOf": [
|
|
69
|
+
{
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"anyOf": [
|
|
73
|
+
{
|
|
74
|
+
"type": "string"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"$ref": "#/definitions/EnvValue"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"$ref": "#/definitions/EnvValue"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"signingKeyDays": {
|
|
88
|
+
"description": "Days a token signing key signs before a new one takes over. Default 30.",
|
|
89
|
+
"anyOf": [
|
|
90
|
+
{
|
|
91
|
+
"type": "number"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"$ref": "#/definitions/EnvValue"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"signingKeyGraceDays": {
|
|
99
|
+
"description": "Days a replaced signing key still verifies the tokens it signed. Default 7, at least 1.",
|
|
100
|
+
"anyOf": [
|
|
101
|
+
{
|
|
102
|
+
"type": "number"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"$ref": "#/definitions/EnvValue"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"locale": {
|
|
110
|
+
"description": "The language of the admin app's built-in screens and of its numbers and dates, for every user: `'en'` or `'nl'`; unset, each user's browser's.",
|
|
111
|
+
"anyOf": [
|
|
112
|
+
{
|
|
113
|
+
"enum": [
|
|
114
|
+
"en",
|
|
115
|
+
"nl"
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"$ref": "#/definitions/EnvValue"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"timezone": {
|
|
124
|
+
"description": "The time zone the jobs' schedules are read in unless a job names its own, such as `Europe/Amsterdam`. Default `UTC`.",
|
|
125
|
+
"anyOf": [
|
|
126
|
+
{
|
|
127
|
+
"type": "string"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"$ref": "#/definitions/EnvValue"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"apiKeys": {
|
|
135
|
+
"description": "The app's publishable and secret keys, with which supabase-js calls the PostgREST-compatible `/api/sb/rest/v1` and the\nRealtime-compatible `/api/sb/realtime/v1` and the Storage-compatible `/api/sb/storage/v1` (see `ApiKeysOptions`); default `PROTOBASE_PUBLISHABLE_KEY` and\n`PROTOBASE_SECRET_KEY`. Without either, or with `false`, the app serves neither.",
|
|
136
|
+
"anyOf": [
|
|
137
|
+
{
|
|
138
|
+
"const": false
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"$ref": "#/definitions/ApiKeysOptions"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"$ref": "#/definitions/EnvValue"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"statementTimeoutMs": {
|
|
149
|
+
"description": "How long a query of an API request may run, set on every request's transaction with SET LOCAL; a query that runs\nlonger is a 504 that names the request. Default 1000: a query that needs longer wants an index or a simpler filter,\nor belongs in a function or job with `longQueries`.",
|
|
150
|
+
"anyOf": [
|
|
151
|
+
{
|
|
152
|
+
"type": "number"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"$ref": "#/definitions/EnvValue"
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
"scanGuard": {
|
|
160
|
+
"description": "Reads that filter, sort or count values by a column no index serves. Default mode `reject`.",
|
|
161
|
+
"anyOf": [
|
|
162
|
+
{
|
|
163
|
+
"type": "object",
|
|
164
|
+
"properties": {
|
|
165
|
+
"mode": {
|
|
166
|
+
"anyOf": [
|
|
167
|
+
{
|
|
168
|
+
"enum": [
|
|
169
|
+
"reject",
|
|
170
|
+
"warn",
|
|
171
|
+
"off"
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"$ref": "#/definitions/EnvValue"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"additionalProperties": false
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"$ref": "#/definitions/EnvValue"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
"defaultAccess": {
|
|
188
|
+
"description": "What an operation without a rule does; overrides the capability check. Without `roles` the default is allow.",
|
|
189
|
+
"anyOf": [
|
|
190
|
+
{
|
|
191
|
+
"enum": [
|
|
192
|
+
"allow",
|
|
193
|
+
"deny"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"$ref": "#/definitions/EnvValue"
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
"rowPermissions": {
|
|
202
|
+
"description": "Whether list items carry their `permissions` (update, delete): true by default, or `{ except: [...] }` for resources that opt out.",
|
|
203
|
+
"anyOf": [
|
|
204
|
+
{
|
|
205
|
+
"type": "boolean"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"type": "object",
|
|
209
|
+
"properties": {
|
|
210
|
+
"except": {
|
|
211
|
+
"anyOf": [
|
|
212
|
+
{
|
|
213
|
+
"type": "array",
|
|
214
|
+
"items": {
|
|
215
|
+
"anyOf": [
|
|
216
|
+
{
|
|
217
|
+
"type": "string"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"$ref": "#/definitions/EnvValue"
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"$ref": "#/definitions/EnvValue"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"required": [
|
|
232
|
+
"except"
|
|
233
|
+
],
|
|
234
|
+
"additionalProperties": false
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"$ref": "#/definitions/EnvValue"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
"errorReporting": {
|
|
242
|
+
"description": "Where the app's errors go: the server's 500s, stopped queries and crashes, and the admin app's errors in the\nbrowser (see `ErrorReportingOptions`). Defaults to the DSN the platform passes in `PROTOBASE_SENTRY_DSN`; `false`\nturns it off.",
|
|
243
|
+
"anyOf": [
|
|
244
|
+
{
|
|
245
|
+
"const": false
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"$ref": "#/definitions/ErrorReportingOptions"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"$ref": "#/definitions/EnvValue"
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
},
|
|
255
|
+
"cors": {
|
|
256
|
+
"description": "The websites whose browser code may call the API (`/api/*` but `/api/auth/*`) besides the app's own origins (see\n`auth.origins`): a list of origins, or `*` for any. Defaults to the one the platform passes in\n`PROTOBASE_CORS_ORIGINS` (`*` or comma separated), when set. A `mobile` section adds the app's Capacitor origins\n(`capacitor://localhost`, `https://localhost`). With none of these nor other origins, the API sends no CORS headers.",
|
|
257
|
+
"anyOf": [
|
|
258
|
+
{
|
|
259
|
+
"const": "*"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"type": "array",
|
|
263
|
+
"items": {
|
|
264
|
+
"anyOf": [
|
|
265
|
+
{
|
|
266
|
+
"type": "string"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"$ref": "#/definitions/EnvValue"
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"$ref": "#/definitions/EnvValue"
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
"maps": {
|
|
280
|
+
"description": "The map style the app's maps (`l.map`, `d.map`) are drawn with, and the layers they may switch to (see\n`MapOptions`). The style defaults to the one the platform passes in `PROTOBASE_MAP_STYLE_URL`; without either, or\nwith `false`, the app draws no maps.",
|
|
281
|
+
"anyOf": [
|
|
282
|
+
{
|
|
283
|
+
"const": false
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"$ref": "#/definitions/MapOptions"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"$ref": "#/definitions/EnvValue"
|
|
290
|
+
}
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
"plugins": {
|
|
294
|
+
"description": "The plugins the admin app loads (see `PluginOption`), before the ones the platform lists in `PROTOBASE_PLUGINS`\nand, for those that load before sign-in, `PROTOBASE_PLUGINS_BEFORE_SIGN_IN`; `false` turns all of them off.",
|
|
295
|
+
"anyOf": [
|
|
296
|
+
{
|
|
297
|
+
"const": false
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"type": "array",
|
|
301
|
+
"items": {
|
|
302
|
+
"anyOf": [
|
|
303
|
+
{
|
|
304
|
+
"$ref": "#/definitions/PluginOption"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"$ref": "#/definitions/EnvValue"
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"$ref": "#/definitions/EnvValue"
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"apiPath": {
|
|
318
|
+
"description": "The path of the REST API; default `/api/v1` (`AdminOptions['basePath']`).",
|
|
319
|
+
"anyOf": [
|
|
320
|
+
{
|
|
321
|
+
"type": "string"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"$ref": "#/definitions/EnvValue"
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"writeHooks": {
|
|
329
|
+
"description": "The write hooks by name, run in this order inside each write's transaction; each is `hooks/<name>.ts`.",
|
|
330
|
+
"anyOf": [
|
|
331
|
+
{
|
|
332
|
+
"type": "array",
|
|
333
|
+
"items": {
|
|
334
|
+
"anyOf": [
|
|
335
|
+
{
|
|
336
|
+
"type": "string"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"$ref": "#/definitions/EnvValue"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"$ref": "#/definitions/EnvValue"
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
"assistant": {
|
|
350
|
+
"anyOf": [
|
|
351
|
+
{
|
|
352
|
+
"const": false
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"type": "object",
|
|
356
|
+
"properties": {
|
|
357
|
+
"url": {
|
|
358
|
+
"anyOf": [
|
|
359
|
+
{
|
|
360
|
+
"type": "string"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"$ref": "#/definitions/EnvValue"
|
|
364
|
+
}
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
"apiKey": {
|
|
368
|
+
"anyOf": [
|
|
369
|
+
{
|
|
370
|
+
"type": "string"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"$ref": "#/definitions/EnvValue"
|
|
374
|
+
}
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
"model": {
|
|
378
|
+
"anyOf": [
|
|
379
|
+
{
|
|
380
|
+
"type": "string"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"$ref": "#/definitions/EnvValue"
|
|
384
|
+
}
|
|
385
|
+
]
|
|
386
|
+
},
|
|
387
|
+
"baseUrl": {
|
|
388
|
+
"anyOf": [
|
|
389
|
+
{
|
|
390
|
+
"type": "string"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"$ref": "#/definitions/EnvValue"
|
|
394
|
+
}
|
|
395
|
+
]
|
|
396
|
+
},
|
|
397
|
+
"chats": {
|
|
398
|
+
"anyOf": [
|
|
399
|
+
{
|
|
400
|
+
"type": "string"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"$ref": "#/definitions/EnvValue"
|
|
404
|
+
}
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
"additionalProperties": false
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"$ref": "#/definitions/EnvValue"
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
},
|
|
415
|
+
"mcpEndpoint": {
|
|
416
|
+
"description": "The MCP endpoint's tools: `sql`, `writes`, or `false` for a host that serves its own (`AdminOptions['mcp']`); `auth.mcp` turns MCP on.",
|
|
417
|
+
"anyOf": [
|
|
418
|
+
{
|
|
419
|
+
"const": false
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"type": "object",
|
|
423
|
+
"properties": {
|
|
424
|
+
"sql": {
|
|
425
|
+
"anyOf": [
|
|
426
|
+
{
|
|
427
|
+
"type": "boolean"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"$ref": "#/definitions/EnvValue"
|
|
431
|
+
}
|
|
432
|
+
]
|
|
433
|
+
},
|
|
434
|
+
"writes": {
|
|
435
|
+
"anyOf": [
|
|
436
|
+
{
|
|
437
|
+
"type": "boolean"
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"type": "object",
|
|
441
|
+
"properties": {
|
|
442
|
+
"resources": {
|
|
443
|
+
"anyOf": [
|
|
444
|
+
{
|
|
445
|
+
"type": "array",
|
|
446
|
+
"items": {
|
|
447
|
+
"anyOf": [
|
|
448
|
+
{
|
|
449
|
+
"type": "string"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"$ref": "#/definitions/EnvValue"
|
|
453
|
+
}
|
|
454
|
+
]
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"$ref": "#/definitions/EnvValue"
|
|
459
|
+
}
|
|
460
|
+
]
|
|
461
|
+
},
|
|
462
|
+
"rolesWithoutApproval": {
|
|
463
|
+
"anyOf": [
|
|
464
|
+
{
|
|
465
|
+
"type": "array",
|
|
466
|
+
"items": {
|
|
467
|
+
"anyOf": [
|
|
468
|
+
{
|
|
469
|
+
"type": "string"
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"$ref": "#/definitions/EnvValue"
|
|
473
|
+
}
|
|
474
|
+
]
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"$ref": "#/definitions/EnvValue"
|
|
479
|
+
}
|
|
480
|
+
]
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
"additionalProperties": false
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"$ref": "#/definitions/EnvValue"
|
|
487
|
+
}
|
|
488
|
+
]
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
"additionalProperties": false
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"$ref": "#/definitions/EnvValue"
|
|
495
|
+
}
|
|
496
|
+
]
|
|
497
|
+
},
|
|
498
|
+
"runtimeUpdates": {
|
|
499
|
+
"description": "The runtime updates endpoint behind the top bar's update button (`AdminOptions['runtime']`).",
|
|
500
|
+
"anyOf": [
|
|
501
|
+
{
|
|
502
|
+
"const": false
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"$ref": "#/definitions/RuntimeOptions"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"$ref": "#/definitions/EnvValue"
|
|
509
|
+
}
|
|
510
|
+
]
|
|
511
|
+
},
|
|
512
|
+
"remoteResources": {
|
|
513
|
+
"description": "Other Protobase APIs whose resources the admin app draws as its own (`AdminOptions['sources']`).",
|
|
514
|
+
"anyOf": [
|
|
515
|
+
{
|
|
516
|
+
"const": false
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"type": "array",
|
|
520
|
+
"items": {
|
|
521
|
+
"anyOf": [
|
|
522
|
+
{
|
|
523
|
+
"$ref": "#/definitions/SourceOption"
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"$ref": "#/definitions/EnvValue"
|
|
527
|
+
}
|
|
528
|
+
]
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"$ref": "#/definitions/EnvValue"
|
|
533
|
+
}
|
|
534
|
+
]
|
|
535
|
+
},
|
|
536
|
+
"auth": {
|
|
537
|
+
"description": "Sign-in (see `AuthConfig`), on by default with its own defaults; `false` turns it off, as does an\n`authenticate.jwksUrl` that trusts an auth server elsewhere. Its hooks are `auth/hooks.ts`.",
|
|
538
|
+
"anyOf": [
|
|
539
|
+
{
|
|
540
|
+
"const": false
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"$ref": "#/definitions/AuthConfig"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"$ref": "#/definitions/EnvValue"
|
|
547
|
+
}
|
|
548
|
+
]
|
|
549
|
+
},
|
|
550
|
+
"authenticate": {
|
|
551
|
+
"description": "How the API verifies tokens; default the tokens of `auth` (see `AuthenticateSettings`).",
|
|
552
|
+
"anyOf": [
|
|
553
|
+
{
|
|
554
|
+
"$ref": "#/definitions/AuthenticateSettings"
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"$ref": "#/definitions/EnvValue"
|
|
558
|
+
}
|
|
559
|
+
]
|
|
560
|
+
},
|
|
561
|
+
"jobs": {
|
|
562
|
+
"description": "The app's jobs by name: what each does, its arguments and when it runs; its run is `jobs/<name>.ts`.",
|
|
563
|
+
"anyOf": [
|
|
564
|
+
{
|
|
565
|
+
"type": "object",
|
|
566
|
+
"additionalProperties": {
|
|
567
|
+
"anyOf": [
|
|
568
|
+
{
|
|
569
|
+
"$ref": "#/definitions/JobDeclaration"
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"$ref": "#/definitions/EnvValue"
|
|
573
|
+
}
|
|
574
|
+
]
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"$ref": "#/definitions/EnvValue"
|
|
579
|
+
}
|
|
580
|
+
]
|
|
581
|
+
},
|
|
582
|
+
"files": {
|
|
583
|
+
"anyOf": [
|
|
584
|
+
{
|
|
585
|
+
"$ref": "#/definitions/FilesConfig"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"$ref": "#/definitions/EnvValue"
|
|
589
|
+
}
|
|
590
|
+
]
|
|
591
|
+
},
|
|
592
|
+
"events": {
|
|
593
|
+
"description": "Where the changes that resources' events are raised from are captured (see `EventsOptions`).",
|
|
594
|
+
"anyOf": [
|
|
595
|
+
{
|
|
596
|
+
"$ref": "#/definitions/EventsOptions"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"$ref": "#/definitions/EnvValue"
|
|
600
|
+
}
|
|
601
|
+
]
|
|
602
|
+
},
|
|
603
|
+
"history": {
|
|
604
|
+
"description": "How long the history of resources with `.history()` is kept (see `HistoryOptions`).",
|
|
605
|
+
"anyOf": [
|
|
606
|
+
{
|
|
607
|
+
"$ref": "#/definitions/HistoryOptions"
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"$ref": "#/definitions/EnvValue"
|
|
611
|
+
}
|
|
612
|
+
]
|
|
613
|
+
},
|
|
614
|
+
"webhooks": {
|
|
615
|
+
"description": "Webhook subscriptions made in the admin app (see `WebhooksOptions`); `{}` turns them on.",
|
|
616
|
+
"anyOf": [
|
|
617
|
+
{
|
|
618
|
+
"type": "object",
|
|
619
|
+
"properties": {
|
|
620
|
+
"schema": {
|
|
621
|
+
"description": "The schema of the subscriptions table and the deliveries view; default `webhooks`.",
|
|
622
|
+
"anyOf": [
|
|
623
|
+
{
|
|
624
|
+
"type": "string"
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"$ref": "#/definitions/EnvValue"
|
|
628
|
+
}
|
|
629
|
+
]
|
|
630
|
+
},
|
|
631
|
+
"deliveryLog": {
|
|
632
|
+
"description": "Also keep every try, successes too, for 30 days, listed as Webhook delivery log. Default false.",
|
|
633
|
+
"anyOf": [
|
|
634
|
+
{
|
|
635
|
+
"type": "boolean"
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"$ref": "#/definitions/EnvValue"
|
|
639
|
+
}
|
|
640
|
+
]
|
|
641
|
+
},
|
|
642
|
+
"allowPrivateAddresses": {
|
|
643
|
+
"description": "Lets subscriptions send to private, loopback and link-local addresses, for development and tests. Default false:\na URL whose host resolves to one is refused, so a subscription cannot reach the app's own network.",
|
|
644
|
+
"anyOf": [
|
|
645
|
+
{
|
|
646
|
+
"type": "boolean"
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"$ref": "#/definitions/EnvValue"
|
|
650
|
+
}
|
|
651
|
+
]
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
"additionalProperties": false
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"$ref": "#/definitions/EnvValue"
|
|
658
|
+
}
|
|
659
|
+
]
|
|
660
|
+
},
|
|
661
|
+
"notifications": {
|
|
662
|
+
"description": "Each user's devices and inbox (see `NotificationsOptions`); `{}` turns them on.",
|
|
663
|
+
"anyOf": [
|
|
664
|
+
{
|
|
665
|
+
"type": "object",
|
|
666
|
+
"properties": {
|
|
667
|
+
"schema": {
|
|
668
|
+
"description": "The schema of the built-in tables; default `notifications`.",
|
|
669
|
+
"anyOf": [
|
|
670
|
+
{
|
|
671
|
+
"type": "string"
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"$ref": "#/definitions/EnvValue"
|
|
675
|
+
}
|
|
676
|
+
]
|
|
677
|
+
},
|
|
678
|
+
"ui": {
|
|
679
|
+
"description": "The bell in the top bar; default true. `false` keeps only the backend.",
|
|
680
|
+
"anyOf": [
|
|
681
|
+
{
|
|
682
|
+
"type": "boolean"
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"$ref": "#/definitions/EnvValue"
|
|
686
|
+
}
|
|
687
|
+
]
|
|
688
|
+
},
|
|
689
|
+
"devices": {
|
|
690
|
+
"description": "The devices table: its name, default `devices`, and its columns named otherwise than Protobase names them.",
|
|
691
|
+
"anyOf": [
|
|
692
|
+
{
|
|
693
|
+
"type": "object",
|
|
694
|
+
"properties": {
|
|
695
|
+
"table": {
|
|
696
|
+
"anyOf": [
|
|
697
|
+
{
|
|
698
|
+
"type": "string"
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"$ref": "#/definitions/EnvValue"
|
|
702
|
+
}
|
|
703
|
+
]
|
|
704
|
+
},
|
|
705
|
+
"columns": {
|
|
706
|
+
"anyOf": [
|
|
707
|
+
{
|
|
708
|
+
"type": "object",
|
|
709
|
+
"properties": {
|
|
710
|
+
"created_at": {
|
|
711
|
+
"anyOf": [
|
|
712
|
+
{
|
|
713
|
+
"type": "string"
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"$ref": "#/definitions/EnvValue"
|
|
717
|
+
}
|
|
718
|
+
]
|
|
719
|
+
},
|
|
720
|
+
"auth": {
|
|
721
|
+
"anyOf": [
|
|
722
|
+
{
|
|
723
|
+
"type": "string"
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"$ref": "#/definitions/EnvValue"
|
|
727
|
+
}
|
|
728
|
+
]
|
|
729
|
+
},
|
|
730
|
+
"id": {
|
|
731
|
+
"anyOf": [
|
|
732
|
+
{
|
|
733
|
+
"type": "string"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
"$ref": "#/definitions/EnvValue"
|
|
737
|
+
}
|
|
738
|
+
]
|
|
739
|
+
},
|
|
740
|
+
"user_id": {
|
|
741
|
+
"anyOf": [
|
|
742
|
+
{
|
|
743
|
+
"type": "string"
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"$ref": "#/definitions/EnvValue"
|
|
747
|
+
}
|
|
748
|
+
]
|
|
749
|
+
},
|
|
750
|
+
"kind": {
|
|
751
|
+
"anyOf": [
|
|
752
|
+
{
|
|
753
|
+
"type": "string"
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
"$ref": "#/definitions/EnvValue"
|
|
757
|
+
}
|
|
758
|
+
]
|
|
759
|
+
},
|
|
760
|
+
"token": {
|
|
761
|
+
"anyOf": [
|
|
762
|
+
{
|
|
763
|
+
"type": "string"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"$ref": "#/definitions/EnvValue"
|
|
767
|
+
}
|
|
768
|
+
]
|
|
769
|
+
},
|
|
770
|
+
"p256dh": {
|
|
771
|
+
"anyOf": [
|
|
772
|
+
{
|
|
773
|
+
"type": "string"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
"$ref": "#/definitions/EnvValue"
|
|
777
|
+
}
|
|
778
|
+
]
|
|
779
|
+
},
|
|
780
|
+
"environment": {
|
|
781
|
+
"anyOf": [
|
|
782
|
+
{
|
|
783
|
+
"type": "string"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"$ref": "#/definitions/EnvValue"
|
|
787
|
+
}
|
|
788
|
+
]
|
|
789
|
+
},
|
|
790
|
+
"app_id": {
|
|
791
|
+
"anyOf": [
|
|
792
|
+
{
|
|
793
|
+
"type": "string"
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
"$ref": "#/definitions/EnvValue"
|
|
797
|
+
}
|
|
798
|
+
]
|
|
799
|
+
},
|
|
800
|
+
"user_agent": {
|
|
801
|
+
"anyOf": [
|
|
802
|
+
{
|
|
803
|
+
"type": "string"
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"$ref": "#/definitions/EnvValue"
|
|
807
|
+
}
|
|
808
|
+
]
|
|
809
|
+
},
|
|
810
|
+
"session_id": {
|
|
811
|
+
"anyOf": [
|
|
812
|
+
{
|
|
813
|
+
"type": "string"
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
"$ref": "#/definitions/EnvValue"
|
|
817
|
+
}
|
|
818
|
+
]
|
|
819
|
+
},
|
|
820
|
+
"last_seen_at": {
|
|
821
|
+
"anyOf": [
|
|
822
|
+
{
|
|
823
|
+
"type": "string"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"$ref": "#/definitions/EnvValue"
|
|
827
|
+
}
|
|
828
|
+
]
|
|
829
|
+
}
|
|
830
|
+
},
|
|
831
|
+
"additionalProperties": false
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"$ref": "#/definitions/EnvValue"
|
|
835
|
+
}
|
|
836
|
+
]
|
|
837
|
+
}
|
|
838
|
+
},
|
|
839
|
+
"additionalProperties": false
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"$ref": "#/definitions/EnvValue"
|
|
843
|
+
}
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
"history": {
|
|
847
|
+
"description": "The history table: its name, default `history`, and its columns named otherwise than Protobase names them.",
|
|
848
|
+
"anyOf": [
|
|
849
|
+
{
|
|
850
|
+
"type": "object",
|
|
851
|
+
"properties": {
|
|
852
|
+
"table": {
|
|
853
|
+
"anyOf": [
|
|
854
|
+
{
|
|
855
|
+
"type": "string"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"$ref": "#/definitions/EnvValue"
|
|
859
|
+
}
|
|
860
|
+
]
|
|
861
|
+
},
|
|
862
|
+
"columns": {
|
|
863
|
+
"anyOf": [
|
|
864
|
+
{
|
|
865
|
+
"type": "object",
|
|
866
|
+
"properties": {
|
|
867
|
+
"url": {
|
|
868
|
+
"anyOf": [
|
|
869
|
+
{
|
|
870
|
+
"type": "string"
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
"$ref": "#/definitions/EnvValue"
|
|
874
|
+
}
|
|
875
|
+
]
|
|
876
|
+
},
|
|
877
|
+
"created_at": {
|
|
878
|
+
"anyOf": [
|
|
879
|
+
{
|
|
880
|
+
"type": "string"
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
"$ref": "#/definitions/EnvValue"
|
|
884
|
+
}
|
|
885
|
+
]
|
|
886
|
+
},
|
|
887
|
+
"id": {
|
|
888
|
+
"anyOf": [
|
|
889
|
+
{
|
|
890
|
+
"type": "string"
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"$ref": "#/definitions/EnvValue"
|
|
894
|
+
}
|
|
895
|
+
]
|
|
896
|
+
},
|
|
897
|
+
"user_id": {
|
|
898
|
+
"anyOf": [
|
|
899
|
+
{
|
|
900
|
+
"type": "string"
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"$ref": "#/definitions/EnvValue"
|
|
904
|
+
}
|
|
905
|
+
]
|
|
906
|
+
},
|
|
907
|
+
"title": {
|
|
908
|
+
"anyOf": [
|
|
909
|
+
{
|
|
910
|
+
"type": "string"
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
"$ref": "#/definitions/EnvValue"
|
|
914
|
+
}
|
|
915
|
+
]
|
|
916
|
+
},
|
|
917
|
+
"body": {
|
|
918
|
+
"anyOf": [
|
|
919
|
+
{
|
|
920
|
+
"type": "string"
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
"$ref": "#/definitions/EnvValue"
|
|
924
|
+
}
|
|
925
|
+
]
|
|
926
|
+
},
|
|
927
|
+
"data": {
|
|
928
|
+
"anyOf": [
|
|
929
|
+
{
|
|
930
|
+
"type": "string"
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
"$ref": "#/definitions/EnvValue"
|
|
934
|
+
}
|
|
935
|
+
]
|
|
936
|
+
},
|
|
937
|
+
"read_at": {
|
|
938
|
+
"anyOf": [
|
|
939
|
+
{
|
|
940
|
+
"type": "string"
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"$ref": "#/definitions/EnvValue"
|
|
944
|
+
}
|
|
945
|
+
]
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
"additionalProperties": false
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"$ref": "#/definitions/EnvValue"
|
|
952
|
+
}
|
|
953
|
+
]
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
"additionalProperties": false
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"$ref": "#/definitions/EnvValue"
|
|
960
|
+
}
|
|
961
|
+
]
|
|
962
|
+
}
|
|
963
|
+
},
|
|
964
|
+
"additionalProperties": false
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
"$ref": "#/definitions/EnvValue"
|
|
968
|
+
}
|
|
969
|
+
]
|
|
970
|
+
},
|
|
971
|
+
"mobile": {
|
|
972
|
+
"description": "The app's iOS and Android build (see `MobileConfig`).",
|
|
973
|
+
"anyOf": [
|
|
974
|
+
{
|
|
975
|
+
"$ref": "#/definitions/MobileConfig"
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"$ref": "#/definitions/EnvValue"
|
|
979
|
+
}
|
|
980
|
+
]
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
"additionalProperties": false,
|
|
984
|
+
"definitions": {
|
|
985
|
+
"EnvValue": {
|
|
986
|
+
"description": "A value read from the environment variable `$env`: `default` when it is unset or empty, and with `split` the list of its non-empty parts.",
|
|
987
|
+
"type": "object",
|
|
988
|
+
"properties": {
|
|
989
|
+
"$env": {
|
|
990
|
+
"type": "string"
|
|
991
|
+
},
|
|
992
|
+
"default": {},
|
|
993
|
+
"split": {
|
|
994
|
+
"type": "string"
|
|
995
|
+
}
|
|
996
|
+
},
|
|
997
|
+
"required": [
|
|
998
|
+
"$env"
|
|
999
|
+
],
|
|
1000
|
+
"additionalProperties": false
|
|
1001
|
+
},
|
|
1002
|
+
"ApiKeysOptions": {
|
|
1003
|
+
"type": "object",
|
|
1004
|
+
"properties": {
|
|
1005
|
+
"publishable_key": {
|
|
1006
|
+
"anyOf": [
|
|
1007
|
+
{
|
|
1008
|
+
"type": "string"
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
"$ref": "#/definitions/EnvValue"
|
|
1012
|
+
}
|
|
1013
|
+
]
|
|
1014
|
+
},
|
|
1015
|
+
"secret_key": {
|
|
1016
|
+
"anyOf": [
|
|
1017
|
+
{
|
|
1018
|
+
"type": "string"
|
|
1019
|
+
},
|
|
1020
|
+
{
|
|
1021
|
+
"$ref": "#/definitions/EnvValue"
|
|
1022
|
+
}
|
|
1023
|
+
]
|
|
1024
|
+
}
|
|
1025
|
+
},
|
|
1026
|
+
"additionalProperties": false
|
|
1027
|
+
},
|
|
1028
|
+
"ErrorReportingOptions": {
|
|
1029
|
+
"type": "object",
|
|
1030
|
+
"properties": {
|
|
1031
|
+
"dsn": {
|
|
1032
|
+
"anyOf": [
|
|
1033
|
+
{
|
|
1034
|
+
"type": "string"
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
"$ref": "#/definitions/EnvValue"
|
|
1038
|
+
}
|
|
1039
|
+
]
|
|
1040
|
+
},
|
|
1041
|
+
"environment": {
|
|
1042
|
+
"anyOf": [
|
|
1043
|
+
{
|
|
1044
|
+
"type": "string"
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
"$ref": "#/definitions/EnvValue"
|
|
1048
|
+
}
|
|
1049
|
+
]
|
|
1050
|
+
}
|
|
1051
|
+
},
|
|
1052
|
+
"additionalProperties": false
|
|
1053
|
+
},
|
|
1054
|
+
"MapOptions": {
|
|
1055
|
+
"type": "object",
|
|
1056
|
+
"properties": {
|
|
1057
|
+
"style": {
|
|
1058
|
+
"anyOf": [
|
|
1059
|
+
{
|
|
1060
|
+
"type": "string"
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
"$ref": "#/definitions/EnvValue"
|
|
1064
|
+
}
|
|
1065
|
+
]
|
|
1066
|
+
},
|
|
1067
|
+
"layers": {
|
|
1068
|
+
"anyOf": [
|
|
1069
|
+
{
|
|
1070
|
+
"type": "array",
|
|
1071
|
+
"items": {
|
|
1072
|
+
"anyOf": [
|
|
1073
|
+
{
|
|
1074
|
+
"$ref": "#/definitions/MapLayer"
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
"$ref": "#/definitions/EnvValue"
|
|
1078
|
+
}
|
|
1079
|
+
]
|
|
1080
|
+
}
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
"$ref": "#/definitions/EnvValue"
|
|
1084
|
+
}
|
|
1085
|
+
]
|
|
1086
|
+
}
|
|
1087
|
+
},
|
|
1088
|
+
"additionalProperties": false
|
|
1089
|
+
},
|
|
1090
|
+
"MapLayer": {
|
|
1091
|
+
"type": "object",
|
|
1092
|
+
"properties": {
|
|
1093
|
+
"id": {
|
|
1094
|
+
"anyOf": [
|
|
1095
|
+
{
|
|
1096
|
+
"type": "string"
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
"$ref": "#/definitions/EnvValue"
|
|
1100
|
+
}
|
|
1101
|
+
]
|
|
1102
|
+
},
|
|
1103
|
+
"label": {
|
|
1104
|
+
"anyOf": [
|
|
1105
|
+
{
|
|
1106
|
+
"type": "string"
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
"$ref": "#/definitions/EnvValue"
|
|
1110
|
+
}
|
|
1111
|
+
]
|
|
1112
|
+
},
|
|
1113
|
+
"tiles": {
|
|
1114
|
+
"anyOf": [
|
|
1115
|
+
{
|
|
1116
|
+
"type": "string"
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
"$ref": "#/definitions/EnvValue"
|
|
1120
|
+
}
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
"attribution": {
|
|
1124
|
+
"anyOf": [
|
|
1125
|
+
{
|
|
1126
|
+
"type": "string"
|
|
1127
|
+
},
|
|
1128
|
+
{
|
|
1129
|
+
"$ref": "#/definitions/EnvValue"
|
|
1130
|
+
}
|
|
1131
|
+
]
|
|
1132
|
+
},
|
|
1133
|
+
"bounds": {
|
|
1134
|
+
"anyOf": [
|
|
1135
|
+
{
|
|
1136
|
+
"type": "array",
|
|
1137
|
+
"items": [
|
|
1138
|
+
{
|
|
1139
|
+
"anyOf": [
|
|
1140
|
+
{
|
|
1141
|
+
"type": "number"
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
"$ref": "#/definitions/EnvValue"
|
|
1145
|
+
}
|
|
1146
|
+
]
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"anyOf": [
|
|
1150
|
+
{
|
|
1151
|
+
"type": "number"
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
"$ref": "#/definitions/EnvValue"
|
|
1155
|
+
}
|
|
1156
|
+
]
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"anyOf": [
|
|
1160
|
+
{
|
|
1161
|
+
"type": "number"
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"$ref": "#/definitions/EnvValue"
|
|
1165
|
+
}
|
|
1166
|
+
]
|
|
1167
|
+
},
|
|
1168
|
+
{
|
|
1169
|
+
"anyOf": [
|
|
1170
|
+
{
|
|
1171
|
+
"type": "number"
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"$ref": "#/definitions/EnvValue"
|
|
1175
|
+
}
|
|
1176
|
+
]
|
|
1177
|
+
}
|
|
1178
|
+
],
|
|
1179
|
+
"minItems": 4,
|
|
1180
|
+
"maxItems": 4
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"$ref": "#/definitions/EnvValue"
|
|
1184
|
+
}
|
|
1185
|
+
]
|
|
1186
|
+
},
|
|
1187
|
+
"maxzoom": {
|
|
1188
|
+
"anyOf": [
|
|
1189
|
+
{
|
|
1190
|
+
"type": "number"
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
"$ref": "#/definitions/EnvValue"
|
|
1194
|
+
}
|
|
1195
|
+
]
|
|
1196
|
+
}
|
|
1197
|
+
},
|
|
1198
|
+
"required": [
|
|
1199
|
+
"id",
|
|
1200
|
+
"label",
|
|
1201
|
+
"tiles",
|
|
1202
|
+
"attribution"
|
|
1203
|
+
],
|
|
1204
|
+
"additionalProperties": false
|
|
1205
|
+
},
|
|
1206
|
+
"PluginOption": {
|
|
1207
|
+
"type": "object",
|
|
1208
|
+
"properties": {
|
|
1209
|
+
"url": {
|
|
1210
|
+
"anyOf": [
|
|
1211
|
+
{
|
|
1212
|
+
"type": "string"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"$ref": "#/definitions/EnvValue"
|
|
1216
|
+
}
|
|
1217
|
+
]
|
|
1218
|
+
},
|
|
1219
|
+
"settings": {
|
|
1220
|
+
"anyOf": [
|
|
1221
|
+
{
|
|
1222
|
+
"type": "object",
|
|
1223
|
+
"additionalProperties": {
|
|
1224
|
+
"anyOf": [
|
|
1225
|
+
{
|
|
1226
|
+
"type": "boolean"
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
"type": "null"
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
"type": "string"
|
|
1233
|
+
},
|
|
1234
|
+
{
|
|
1235
|
+
"type": "number"
|
|
1236
|
+
},
|
|
1237
|
+
{
|
|
1238
|
+
"type": "array",
|
|
1239
|
+
"items": {}
|
|
1240
|
+
},
|
|
1241
|
+
{
|
|
1242
|
+
"type": "object",
|
|
1243
|
+
"additionalProperties": {}
|
|
1244
|
+
},
|
|
1245
|
+
{
|
|
1246
|
+
"$ref": "#/definitions/EnvValue"
|
|
1247
|
+
}
|
|
1248
|
+
]
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"$ref": "#/definitions/EnvValue"
|
|
1253
|
+
}
|
|
1254
|
+
]
|
|
1255
|
+
},
|
|
1256
|
+
"roles": {
|
|
1257
|
+
"anyOf": [
|
|
1258
|
+
{
|
|
1259
|
+
"type": "array",
|
|
1260
|
+
"items": {
|
|
1261
|
+
"anyOf": [
|
|
1262
|
+
{
|
|
1263
|
+
"type": "string"
|
|
1264
|
+
},
|
|
1265
|
+
{
|
|
1266
|
+
"$ref": "#/definitions/EnvValue"
|
|
1267
|
+
}
|
|
1268
|
+
]
|
|
1269
|
+
}
|
|
1270
|
+
},
|
|
1271
|
+
{
|
|
1272
|
+
"$ref": "#/definitions/EnvValue"
|
|
1273
|
+
}
|
|
1274
|
+
]
|
|
1275
|
+
},
|
|
1276
|
+
"beforeSignIn": {
|
|
1277
|
+
"anyOf": [
|
|
1278
|
+
{
|
|
1279
|
+
"type": "boolean"
|
|
1280
|
+
},
|
|
1281
|
+
{
|
|
1282
|
+
"$ref": "#/definitions/EnvValue"
|
|
1283
|
+
}
|
|
1284
|
+
]
|
|
1285
|
+
}
|
|
1286
|
+
},
|
|
1287
|
+
"required": [
|
|
1288
|
+
"url"
|
|
1289
|
+
],
|
|
1290
|
+
"additionalProperties": false
|
|
1291
|
+
},
|
|
1292
|
+
"RuntimeOptions": {
|
|
1293
|
+
"type": "object",
|
|
1294
|
+
"properties": {
|
|
1295
|
+
"url": {
|
|
1296
|
+
"anyOf": [
|
|
1297
|
+
{
|
|
1298
|
+
"type": "string"
|
|
1299
|
+
},
|
|
1300
|
+
{
|
|
1301
|
+
"$ref": "#/definitions/EnvValue"
|
|
1302
|
+
}
|
|
1303
|
+
]
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
"additionalProperties": false
|
|
1307
|
+
},
|
|
1308
|
+
"SourceOption": {
|
|
1309
|
+
"type": "object",
|
|
1310
|
+
"properties": {
|
|
1311
|
+
"url": {
|
|
1312
|
+
"anyOf": [
|
|
1313
|
+
{
|
|
1314
|
+
"type": "string"
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
"$ref": "#/definitions/EnvValue"
|
|
1318
|
+
}
|
|
1319
|
+
]
|
|
1320
|
+
},
|
|
1321
|
+
"label": {
|
|
1322
|
+
"anyOf": [
|
|
1323
|
+
{
|
|
1324
|
+
"type": "string"
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"$ref": "#/definitions/EnvValue"
|
|
1328
|
+
}
|
|
1329
|
+
]
|
|
1330
|
+
},
|
|
1331
|
+
"resources": {
|
|
1332
|
+
"anyOf": [
|
|
1333
|
+
{
|
|
1334
|
+
"type": "array",
|
|
1335
|
+
"items": {
|
|
1336
|
+
"anyOf": [
|
|
1337
|
+
{
|
|
1338
|
+
"type": "string"
|
|
1339
|
+
},
|
|
1340
|
+
{
|
|
1341
|
+
"$ref": "#/definitions/EnvValue"
|
|
1342
|
+
}
|
|
1343
|
+
]
|
|
1344
|
+
}
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
"$ref": "#/definitions/EnvValue"
|
|
1348
|
+
}
|
|
1349
|
+
]
|
|
1350
|
+
},
|
|
1351
|
+
"roles": {
|
|
1352
|
+
"anyOf": [
|
|
1353
|
+
{
|
|
1354
|
+
"type": "array",
|
|
1355
|
+
"items": {
|
|
1356
|
+
"anyOf": [
|
|
1357
|
+
{
|
|
1358
|
+
"type": "string"
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
"$ref": "#/definitions/EnvValue"
|
|
1362
|
+
}
|
|
1363
|
+
]
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
"$ref": "#/definitions/EnvValue"
|
|
1368
|
+
}
|
|
1369
|
+
]
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
"required": [
|
|
1373
|
+
"url",
|
|
1374
|
+
"label",
|
|
1375
|
+
"resources"
|
|
1376
|
+
],
|
|
1377
|
+
"additionalProperties": false
|
|
1378
|
+
},
|
|
1379
|
+
"AuthConfig": {
|
|
1380
|
+
"type": "object",
|
|
1381
|
+
"properties": {
|
|
1382
|
+
"roles": {
|
|
1383
|
+
"description": "The roles users can have, for example `['admin', 'accountant', 'warehouse']`. `admin` is always included; default\n`['admin', 'user']`. With `organizations`, give each a label, and optionally the other roles its holders may also\ngive members: `{ manager: { label: 'Manager', grants: ['sales'] }, sales: 'Sales' }`.",
|
|
1384
|
+
"anyOf": [
|
|
1385
|
+
{
|
|
1386
|
+
"type": "array",
|
|
1387
|
+
"items": {
|
|
1388
|
+
"anyOf": [
|
|
1389
|
+
{
|
|
1390
|
+
"type": "string"
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"$ref": "#/definitions/EnvValue"
|
|
1394
|
+
}
|
|
1395
|
+
]
|
|
1396
|
+
}
|
|
1397
|
+
},
|
|
1398
|
+
{
|
|
1399
|
+
"type": "object",
|
|
1400
|
+
"additionalProperties": {
|
|
1401
|
+
"anyOf": [
|
|
1402
|
+
{
|
|
1403
|
+
"type": "string"
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
"type": "object",
|
|
1407
|
+
"properties": {
|
|
1408
|
+
"label": {
|
|
1409
|
+
"anyOf": [
|
|
1410
|
+
{
|
|
1411
|
+
"type": "string"
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
"$ref": "#/definitions/EnvValue"
|
|
1415
|
+
}
|
|
1416
|
+
]
|
|
1417
|
+
},
|
|
1418
|
+
"grants": {
|
|
1419
|
+
"anyOf": [
|
|
1420
|
+
{
|
|
1421
|
+
"type": "array",
|
|
1422
|
+
"items": {
|
|
1423
|
+
"anyOf": [
|
|
1424
|
+
{
|
|
1425
|
+
"type": "string"
|
|
1426
|
+
},
|
|
1427
|
+
{
|
|
1428
|
+
"$ref": "#/definitions/EnvValue"
|
|
1429
|
+
}
|
|
1430
|
+
]
|
|
1431
|
+
}
|
|
1432
|
+
},
|
|
1433
|
+
{
|
|
1434
|
+
"$ref": "#/definitions/EnvValue"
|
|
1435
|
+
}
|
|
1436
|
+
]
|
|
1437
|
+
}
|
|
1438
|
+
},
|
|
1439
|
+
"required": [
|
|
1440
|
+
"label"
|
|
1441
|
+
],
|
|
1442
|
+
"additionalProperties": false
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
"$ref": "#/definitions/EnvValue"
|
|
1446
|
+
}
|
|
1447
|
+
]
|
|
1448
|
+
}
|
|
1449
|
+
},
|
|
1450
|
+
{
|
|
1451
|
+
"$ref": "#/definitions/EnvValue"
|
|
1452
|
+
}
|
|
1453
|
+
]
|
|
1454
|
+
},
|
|
1455
|
+
"mcp": {
|
|
1456
|
+
"description": "Turns on the OAuth provider for MCP clients: `true`, or the endpoint's `path` and the `connectPage`.",
|
|
1457
|
+
"anyOf": [
|
|
1458
|
+
{
|
|
1459
|
+
"const": true
|
|
1460
|
+
},
|
|
1461
|
+
{
|
|
1462
|
+
"type": "object",
|
|
1463
|
+
"properties": {
|
|
1464
|
+
"path": {
|
|
1465
|
+
"description": "The path of the MCP endpoint on the app's origin, its OAuth resource; default `/api/mcp`. Changing it makes clients connect again.",
|
|
1466
|
+
"anyOf": [
|
|
1467
|
+
{
|
|
1468
|
+
"type": "string"
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
"$ref": "#/definitions/EnvValue"
|
|
1472
|
+
}
|
|
1473
|
+
]
|
|
1474
|
+
},
|
|
1475
|
+
"connectPage": {
|
|
1476
|
+
"description": "The connect page's path on the app's origin, where people sign in and allow a client; default `/-/connect`, for a UI at the root.",
|
|
1477
|
+
"anyOf": [
|
|
1478
|
+
{
|
|
1479
|
+
"type": "string"
|
|
1480
|
+
},
|
|
1481
|
+
{
|
|
1482
|
+
"$ref": "#/definitions/EnvValue"
|
|
1483
|
+
}
|
|
1484
|
+
]
|
|
1485
|
+
}
|
|
1486
|
+
},
|
|
1487
|
+
"additionalProperties": false
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
"$ref": "#/definitions/EnvValue"
|
|
1491
|
+
}
|
|
1492
|
+
]
|
|
1493
|
+
},
|
|
1494
|
+
"generateUserId": {
|
|
1495
|
+
"description": "`'uuid'` gives new users a random UUID, and makes every id column of the store a `uuid`; `generateUserId` in the hooks takes the ids from the app instead.",
|
|
1496
|
+
"anyOf": [
|
|
1497
|
+
{
|
|
1498
|
+
"const": "uuid"
|
|
1499
|
+
},
|
|
1500
|
+
{
|
|
1501
|
+
"$ref": "#/definitions/EnvValue"
|
|
1502
|
+
}
|
|
1503
|
+
]
|
|
1504
|
+
},
|
|
1505
|
+
"mailer": {
|
|
1506
|
+
"description": "`false` turns mail off whatever the environment says; default SMTP from `PROTOBASE_SMTP_URL` and `PROTOBASE_MAIL_FROM`.",
|
|
1507
|
+
"anyOf": [
|
|
1508
|
+
{
|
|
1509
|
+
"const": false
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
"$ref": "#/definitions/EnvValue"
|
|
1513
|
+
}
|
|
1514
|
+
]
|
|
1515
|
+
},
|
|
1516
|
+
"organizations": {
|
|
1517
|
+
"description": "Turns on organizations (see `OrganizationsOptions`); their hooks are in the hooks module.",
|
|
1518
|
+
"anyOf": [
|
|
1519
|
+
{
|
|
1520
|
+
"const": true
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
"type": "object",
|
|
1524
|
+
"properties": {
|
|
1525
|
+
"creatorAppRoles": {
|
|
1526
|
+
"description": "The app roles an organization's creator holds there: `'all'` (default), every role a member can hold, or a list.",
|
|
1527
|
+
"anyOf": [
|
|
1528
|
+
{
|
|
1529
|
+
"const": "all"
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
"type": "array",
|
|
1533
|
+
"items": {
|
|
1534
|
+
"anyOf": [
|
|
1535
|
+
{
|
|
1536
|
+
"type": "string"
|
|
1537
|
+
},
|
|
1538
|
+
{
|
|
1539
|
+
"$ref": "#/definitions/EnvValue"
|
|
1540
|
+
}
|
|
1541
|
+
]
|
|
1542
|
+
}
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"$ref": "#/definitions/EnvValue"
|
|
1546
|
+
}
|
|
1547
|
+
]
|
|
1548
|
+
},
|
|
1549
|
+
"create": {
|
|
1550
|
+
"description": "Who may create organizations: `'admins'` (default), superusers only, or `'everyone'` signed in.",
|
|
1551
|
+
"anyOf": [
|
|
1552
|
+
{
|
|
1553
|
+
"enum": [
|
|
1554
|
+
"admins",
|
|
1555
|
+
"everyone"
|
|
1556
|
+
]
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"$ref": "#/definitions/EnvValue"
|
|
1560
|
+
}
|
|
1561
|
+
]
|
|
1562
|
+
},
|
|
1563
|
+
"invitationDays": {
|
|
1564
|
+
"description": "How long an invitation works, in days. Default 7.",
|
|
1565
|
+
"anyOf": [
|
|
1566
|
+
{
|
|
1567
|
+
"type": "number"
|
|
1568
|
+
},
|
|
1569
|
+
{
|
|
1570
|
+
"$ref": "#/definitions/EnvValue"
|
|
1571
|
+
}
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
"membershipLimit": {
|
|
1575
|
+
"description": "The most members an organization can have. Default 1000.",
|
|
1576
|
+
"anyOf": [
|
|
1577
|
+
{
|
|
1578
|
+
"type": "number"
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
"$ref": "#/definitions/EnvValue"
|
|
1582
|
+
}
|
|
1583
|
+
]
|
|
1584
|
+
},
|
|
1585
|
+
"deleteRecords": {
|
|
1586
|
+
"description": "What deleting an organization does with its records: `'refuse'` (default) deletes only an organization without\nrows in any `.tenant` resource; `'cascade'` leaves it to the project's foreign keys.",
|
|
1587
|
+
"anyOf": [
|
|
1588
|
+
{
|
|
1589
|
+
"enum": [
|
|
1590
|
+
"refuse",
|
|
1591
|
+
"cascade"
|
|
1592
|
+
]
|
|
1593
|
+
},
|
|
1594
|
+
{
|
|
1595
|
+
"$ref": "#/definitions/EnvValue"
|
|
1596
|
+
}
|
|
1597
|
+
]
|
|
1598
|
+
},
|
|
1599
|
+
"invitationUrl": {
|
|
1600
|
+
"description": "The page an invitation link opens, with `?token=`. Default `{baseURL}/-/invitation`.",
|
|
1601
|
+
"anyOf": [
|
|
1602
|
+
{
|
|
1603
|
+
"type": "string"
|
|
1604
|
+
},
|
|
1605
|
+
{
|
|
1606
|
+
"$ref": "#/definitions/EnvValue"
|
|
1607
|
+
}
|
|
1608
|
+
]
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
"additionalProperties": false
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
"$ref": "#/definitions/EnvValue"
|
|
1615
|
+
}
|
|
1616
|
+
]
|
|
1617
|
+
},
|
|
1618
|
+
"origins": {
|
|
1619
|
+
"description": "The other origins the app is served on, for example `['https://admin.shop.com']`. A request to one of them is\nanswered for that host: its sign-in callbacks and the links it mails, such as a password reset, stay there, and\npasskeys work on every origin. Tokens keep `baseURL` as issuer, whatever host issued them. Defaults to the\ncomma-separated list the platform passes in `PROTOBASE_ORIGINS`, when set; none otherwise.",
|
|
1620
|
+
"anyOf": [
|
|
1621
|
+
{
|
|
1622
|
+
"type": "array",
|
|
1623
|
+
"items": {
|
|
1624
|
+
"anyOf": [
|
|
1625
|
+
{
|
|
1626
|
+
"type": "string"
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"$ref": "#/definitions/EnvValue"
|
|
1630
|
+
}
|
|
1631
|
+
]
|
|
1632
|
+
}
|
|
1633
|
+
},
|
|
1634
|
+
{
|
|
1635
|
+
"$ref": "#/definitions/EnvValue"
|
|
1636
|
+
}
|
|
1637
|
+
]
|
|
1638
|
+
},
|
|
1639
|
+
"passkeyDomain": {
|
|
1640
|
+
"description": "The host new passkeys are made for (their RP ID): the host of `baseURL` or of one of `origins`. Each passkey keeps\nthe one it was made for, and works on every origin, so changing it breaks none. Defaults to the one the platform\npasses in `PROTOBASE_PASSKEY_DOMAIN`, when set, and to the host of `baseURL` otherwise.",
|
|
1641
|
+
"anyOf": [
|
|
1642
|
+
{
|
|
1643
|
+
"type": "string"
|
|
1644
|
+
},
|
|
1645
|
+
{
|
|
1646
|
+
"$ref": "#/definitions/EnvValue"
|
|
1647
|
+
}
|
|
1648
|
+
]
|
|
1649
|
+
},
|
|
1650
|
+
"trustedOrigins": {
|
|
1651
|
+
"description": "Extra origins that may call the auth endpoints, such as the exact host of a dev tunnel. `baseURL` and `origins` are always trusted.",
|
|
1652
|
+
"anyOf": [
|
|
1653
|
+
{
|
|
1654
|
+
"type": "array",
|
|
1655
|
+
"items": {
|
|
1656
|
+
"anyOf": [
|
|
1657
|
+
{
|
|
1658
|
+
"type": "string"
|
|
1659
|
+
},
|
|
1660
|
+
{
|
|
1661
|
+
"$ref": "#/definitions/EnvValue"
|
|
1662
|
+
}
|
|
1663
|
+
]
|
|
1664
|
+
}
|
|
1665
|
+
},
|
|
1666
|
+
{
|
|
1667
|
+
"$ref": "#/definitions/EnvValue"
|
|
1668
|
+
}
|
|
1669
|
+
]
|
|
1670
|
+
},
|
|
1671
|
+
"defaultRole": {
|
|
1672
|
+
"description": "The role of a user created without one. Optional: when unset, and more than one role besides `admin` exists,\ncreating a user without a role is an error that asks for one. With exactly one other role, that role is the default.",
|
|
1673
|
+
"anyOf": [
|
|
1674
|
+
{
|
|
1675
|
+
"type": "string"
|
|
1676
|
+
},
|
|
1677
|
+
{
|
|
1678
|
+
"$ref": "#/definitions/EnvValue"
|
|
1679
|
+
}
|
|
1680
|
+
]
|
|
1681
|
+
},
|
|
1682
|
+
"signUp": {
|
|
1683
|
+
"description": "Open sign-up: anyone makes their own account from the sign-in page, with `role`, after proving their address with\nan emailed code. Off by default, so accounts come only from the host, an admin, an invitation or a sign-in provider.\nNeeds a mailer: without one it is not offered. `role` is one of `roles` and never `admin`; give it the least\na stranger may hold. Not with `organizations`, whose people come from invitations.",
|
|
1684
|
+
"anyOf": [
|
|
1685
|
+
{
|
|
1686
|
+
"type": "object",
|
|
1687
|
+
"properties": {
|
|
1688
|
+
"role": {
|
|
1689
|
+
"anyOf": [
|
|
1690
|
+
{
|
|
1691
|
+
"type": "string"
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"$ref": "#/definitions/EnvValue"
|
|
1695
|
+
}
|
|
1696
|
+
]
|
|
1697
|
+
}
|
|
1698
|
+
},
|
|
1699
|
+
"required": [
|
|
1700
|
+
"role"
|
|
1701
|
+
],
|
|
1702
|
+
"additionalProperties": false
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
"$ref": "#/definitions/EnvValue"
|
|
1706
|
+
}
|
|
1707
|
+
]
|
|
1708
|
+
},
|
|
1709
|
+
"signInPolicy": {
|
|
1710
|
+
"description": "The sign-in policy that applies until an admin saves one on the Sign-in policy page, and when the saved one no\nlonger reads: the methods it names, for example `{ password: 'forbidden' }` for emailed codes and passkeys only,\nwith everything else allowed. Checked at startup as an admin's save is. Default everything allowed.",
|
|
1711
|
+
"anyOf": [
|
|
1712
|
+
{
|
|
1713
|
+
"type": "object",
|
|
1714
|
+
"properties": {
|
|
1715
|
+
"password": {
|
|
1716
|
+
"anyOf": [
|
|
1717
|
+
{
|
|
1718
|
+
"enum": [
|
|
1719
|
+
"allowed",
|
|
1720
|
+
"forbidden"
|
|
1721
|
+
]
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
"$ref": "#/definitions/EnvValue"
|
|
1725
|
+
}
|
|
1726
|
+
]
|
|
1727
|
+
},
|
|
1728
|
+
"emailCode": {
|
|
1729
|
+
"anyOf": [
|
|
1730
|
+
{
|
|
1731
|
+
"enum": [
|
|
1732
|
+
"allowed",
|
|
1733
|
+
"forbidden"
|
|
1734
|
+
]
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"$ref": "#/definitions/EnvValue"
|
|
1738
|
+
}
|
|
1739
|
+
]
|
|
1740
|
+
},
|
|
1741
|
+
"passkey": {
|
|
1742
|
+
"anyOf": [
|
|
1743
|
+
{
|
|
1744
|
+
"enum": [
|
|
1745
|
+
"allowed",
|
|
1746
|
+
"forbidden",
|
|
1747
|
+
"required"
|
|
1748
|
+
]
|
|
1749
|
+
},
|
|
1750
|
+
{
|
|
1751
|
+
"$ref": "#/definitions/EnvValue"
|
|
1752
|
+
}
|
|
1753
|
+
]
|
|
1754
|
+
},
|
|
1755
|
+
"twoFactor": {
|
|
1756
|
+
"anyOf": [
|
|
1757
|
+
{
|
|
1758
|
+
"enum": [
|
|
1759
|
+
"allowed",
|
|
1760
|
+
"forbidden",
|
|
1761
|
+
"required"
|
|
1762
|
+
]
|
|
1763
|
+
},
|
|
1764
|
+
{
|
|
1765
|
+
"$ref": "#/definitions/EnvValue"
|
|
1766
|
+
}
|
|
1767
|
+
]
|
|
1768
|
+
},
|
|
1769
|
+
"staffAccess": {
|
|
1770
|
+
"anyOf": [
|
|
1771
|
+
{
|
|
1772
|
+
"enum": [
|
|
1773
|
+
"allowed",
|
|
1774
|
+
"forbidden",
|
|
1775
|
+
"notify"
|
|
1776
|
+
]
|
|
1777
|
+
},
|
|
1778
|
+
{
|
|
1779
|
+
"$ref": "#/definitions/EnvValue"
|
|
1780
|
+
}
|
|
1781
|
+
]
|
|
1782
|
+
},
|
|
1783
|
+
"platformSignIn": {
|
|
1784
|
+
"anyOf": [
|
|
1785
|
+
{
|
|
1786
|
+
"enum": [
|
|
1787
|
+
"allowed",
|
|
1788
|
+
"forbidden"
|
|
1789
|
+
]
|
|
1790
|
+
},
|
|
1791
|
+
{
|
|
1792
|
+
"$ref": "#/definitions/EnvValue"
|
|
1793
|
+
}
|
|
1794
|
+
]
|
|
1795
|
+
}
|
|
1796
|
+
},
|
|
1797
|
+
"additionalProperties": false
|
|
1798
|
+
},
|
|
1799
|
+
{
|
|
1800
|
+
"$ref": "#/definitions/EnvValue"
|
|
1801
|
+
}
|
|
1802
|
+
]
|
|
1803
|
+
},
|
|
1804
|
+
"signInFirst": {
|
|
1805
|
+
"description": "What the sign-in page leads with: `password`, the email address and a password, with emailing a code below it; or\n`emailCode`, the address and \"Email me a sign-in code\", with the password behind \"Use a password\", for apps whose\npeople mostly never set one. Only while the policy leaves both on; default `password`.",
|
|
1806
|
+
"anyOf": [
|
|
1807
|
+
{
|
|
1808
|
+
"enum": [
|
|
1809
|
+
"password",
|
|
1810
|
+
"emailCode"
|
|
1811
|
+
]
|
|
1812
|
+
},
|
|
1813
|
+
{
|
|
1814
|
+
"$ref": "#/definitions/EnvValue"
|
|
1815
|
+
}
|
|
1816
|
+
]
|
|
1817
|
+
},
|
|
1818
|
+
"signInPerMinute": {
|
|
1819
|
+
"description": "Sign-in attempts allowed per minute and client, default 5; also the sign-up requests allowed.",
|
|
1820
|
+
"anyOf": [
|
|
1821
|
+
{
|
|
1822
|
+
"type": "number"
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
"$ref": "#/definitions/EnvValue"
|
|
1826
|
+
}
|
|
1827
|
+
]
|
|
1828
|
+
},
|
|
1829
|
+
"socialProviders": {
|
|
1830
|
+
"description": "Sign-in providers for Better Auth, for example `{ github: { clientId, clientSecret } }`; the callback is\n`{baseURL}/api/auth/callback/<provider>`. A provider also signs up people without an account, with the default role.\nOne with the id of `signInProvider` takes its place. Default none.",
|
|
1831
|
+
"anyOf": [
|
|
1832
|
+
{
|
|
1833
|
+
"type": "object"
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
"$ref": "#/definitions/EnvValue"
|
|
1837
|
+
}
|
|
1838
|
+
]
|
|
1839
|
+
},
|
|
1840
|
+
"encryptOAuthTokens": {
|
|
1841
|
+
"description": "Encrypt the OAuth access, refresh and ID tokens Better Auth stores for social sign-ins, with `secret`. Default off.",
|
|
1842
|
+
"anyOf": [
|
|
1843
|
+
{
|
|
1844
|
+
"type": "boolean"
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
"$ref": "#/definitions/EnvValue"
|
|
1848
|
+
}
|
|
1849
|
+
]
|
|
1850
|
+
},
|
|
1851
|
+
"users": {
|
|
1852
|
+
"description": "The user table, when it is one another system made, such as Supabase's `auth.users`: its name, the columns named\notherwise than Protobase names them, and a JSON column for each user's metadata, for example `{ table: 'users',\ncolumns: { role: 'app_role' }, metadata: 'raw_user_meta_data' }`. The other tables keep their names. Default the\ntable `protobase auth migration` makes.",
|
|
1853
|
+
"anyOf": [
|
|
1854
|
+
{
|
|
1855
|
+
"$ref": "#/definitions/UserTableOptions"
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"$ref": "#/definitions/EnvValue"
|
|
1859
|
+
}
|
|
1860
|
+
]
|
|
1861
|
+
},
|
|
1862
|
+
"passwordHashes": {
|
|
1863
|
+
"description": "Password hashes another system wrote that sign-in accepts besides Better Auth's own, such as `['bcrypt']` for\nSupabase Auth's. The first sign-in with one stores the password again as Better Auth hashes it. Default none.",
|
|
1864
|
+
"anyOf": [
|
|
1865
|
+
{
|
|
1866
|
+
"type": "array",
|
|
1867
|
+
"items": {
|
|
1868
|
+
"anyOf": [
|
|
1869
|
+
{
|
|
1870
|
+
"const": "bcrypt"
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"$ref": "#/definitions/EnvValue"
|
|
1874
|
+
}
|
|
1875
|
+
]
|
|
1876
|
+
}
|
|
1877
|
+
},
|
|
1878
|
+
{
|
|
1879
|
+
"$ref": "#/definitions/EnvValue"
|
|
1880
|
+
}
|
|
1881
|
+
]
|
|
1882
|
+
},
|
|
1883
|
+
"leakedPasswords": {
|
|
1884
|
+
"description": "Refuses a new password that appears in a known data breach, by Have I Been Pwned's password list: at sign-up, from\nan invitation, and when a password is set, changed, reset or given by an admin. Only the first five characters of\nthe password's SHA-1 hash leave the server. While the list cannot be reached, setting a password fails. Default off.",
|
|
1885
|
+
"anyOf": [
|
|
1886
|
+
{
|
|
1887
|
+
"type": "boolean"
|
|
1888
|
+
},
|
|
1889
|
+
{
|
|
1890
|
+
"$ref": "#/definitions/EnvValue"
|
|
1891
|
+
}
|
|
1892
|
+
]
|
|
1893
|
+
},
|
|
1894
|
+
"operator": {
|
|
1895
|
+
"description": "The identity provider the operator's staff sign in with to sign in as people of this app, for support. Defaults\nto the one the platform passes in `PROTOBASE_OPERATOR_ISSUER`, `PROTOBASE_OPERATOR_CLIENT_ID` and\n`PROTOBASE_OPERATOR_CLIENT_SECRET` (see `readOperatorSettings`), when set; `false` turns staff sign-in off\nwhatever the environment says.",
|
|
1896
|
+
"anyOf": [
|
|
1897
|
+
{
|
|
1898
|
+
"const": false
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
"$ref": "#/definitions/OperatorProvider"
|
|
1902
|
+
},
|
|
1903
|
+
{
|
|
1904
|
+
"$ref": "#/definitions/EnvValue"
|
|
1905
|
+
}
|
|
1906
|
+
]
|
|
1907
|
+
},
|
|
1908
|
+
"signInProvider": {
|
|
1909
|
+
"description": "A sign-in provider the platform adds for people who already have an account: an OpenID Connect provider that never\nsigns anyone up. Defaults to the one the platform passes in `PROTOBASE_SIGN_IN_ISSUER`, `PROTOBASE_SIGN_IN_CLIENT_ID`\nand `PROTOBASE_SIGN_IN_CLIENT_SECRET` (see `readPlatformSignIn`), when set; `false` turns it off whatever the\nenvironment says. Left out when `socialProviders` has a provider with the same id.",
|
|
1910
|
+
"anyOf": [
|
|
1911
|
+
{
|
|
1912
|
+
"const": false
|
|
1913
|
+
},
|
|
1914
|
+
{
|
|
1915
|
+
"$ref": "#/definitions/PlatformSignIn"
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"$ref": "#/definitions/EnvValue"
|
|
1919
|
+
}
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1922
|
+
"sso": {
|
|
1923
|
+
"description": "Single sign-on with the app's SAML 2.0 identity providers, for example `{ saml: [{ id: 'okta', name: 'Okta',\ndomains: ['example.com'], idp: { metadata } }] }` (see `SamlProvider`). Like `socialProviders`, a provider signs up\npeople without an account, with the default role, but only at its `domains`, where it also links to the account\nwith the same address. Default none.",
|
|
1924
|
+
"anyOf": [
|
|
1925
|
+
{
|
|
1926
|
+
"$ref": "#/definitions/SsoOptions"
|
|
1927
|
+
},
|
|
1928
|
+
{
|
|
1929
|
+
"$ref": "#/definitions/EnvValue"
|
|
1930
|
+
}
|
|
1931
|
+
]
|
|
1932
|
+
},
|
|
1933
|
+
"schema": {
|
|
1934
|
+
"description": "The schema of the auth store in the app's database; default `auth`.",
|
|
1935
|
+
"anyOf": [
|
|
1936
|
+
{
|
|
1937
|
+
"type": "string"
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
"$ref": "#/definitions/EnvValue"
|
|
1941
|
+
}
|
|
1942
|
+
]
|
|
1943
|
+
}
|
|
1944
|
+
},
|
|
1945
|
+
"additionalProperties": false
|
|
1946
|
+
},
|
|
1947
|
+
"UserTableOptions": {
|
|
1948
|
+
"type": "object",
|
|
1949
|
+
"properties": {
|
|
1950
|
+
"table": {
|
|
1951
|
+
"description": "The table's name, default `user`, for example `users` for Supabase's `auth.users`.",
|
|
1952
|
+
"anyOf": [
|
|
1953
|
+
{
|
|
1954
|
+
"type": "string"
|
|
1955
|
+
},
|
|
1956
|
+
{
|
|
1957
|
+
"$ref": "#/definitions/EnvValue"
|
|
1958
|
+
}
|
|
1959
|
+
]
|
|
1960
|
+
},
|
|
1961
|
+
"columns": {
|
|
1962
|
+
"description": "The columns named otherwise than Protobase names them: `{ role: 'app_role' }`, where `role` holds something else\nalready, such as the Postgres role in Supabase's `auth.users`.",
|
|
1963
|
+
"anyOf": [
|
|
1964
|
+
{
|
|
1965
|
+
"type": "object",
|
|
1966
|
+
"properties": {
|
|
1967
|
+
"name": {
|
|
1968
|
+
"anyOf": [
|
|
1969
|
+
{
|
|
1970
|
+
"type": "string"
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
"$ref": "#/definitions/EnvValue"
|
|
1974
|
+
}
|
|
1975
|
+
]
|
|
1976
|
+
},
|
|
1977
|
+
"email": {
|
|
1978
|
+
"anyOf": [
|
|
1979
|
+
{
|
|
1980
|
+
"type": "string"
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
"$ref": "#/definitions/EnvValue"
|
|
1984
|
+
}
|
|
1985
|
+
]
|
|
1986
|
+
},
|
|
1987
|
+
"image": {
|
|
1988
|
+
"anyOf": [
|
|
1989
|
+
{
|
|
1990
|
+
"type": "string"
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
"$ref": "#/definitions/EnvValue"
|
|
1994
|
+
}
|
|
1995
|
+
]
|
|
1996
|
+
},
|
|
1997
|
+
"role": {
|
|
1998
|
+
"anyOf": [
|
|
1999
|
+
{
|
|
2000
|
+
"type": "string"
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
"$ref": "#/definitions/EnvValue"
|
|
2004
|
+
}
|
|
2005
|
+
]
|
|
2006
|
+
},
|
|
2007
|
+
"banned": {
|
|
2008
|
+
"anyOf": [
|
|
2009
|
+
{
|
|
2010
|
+
"type": "string"
|
|
2011
|
+
},
|
|
2012
|
+
{
|
|
2013
|
+
"$ref": "#/definitions/EnvValue"
|
|
2014
|
+
}
|
|
2015
|
+
]
|
|
2016
|
+
},
|
|
2017
|
+
"email_verified": {
|
|
2018
|
+
"anyOf": [
|
|
2019
|
+
{
|
|
2020
|
+
"type": "string"
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
"$ref": "#/definitions/EnvValue"
|
|
2024
|
+
}
|
|
2025
|
+
]
|
|
2026
|
+
},
|
|
2027
|
+
"email_confirmed_at": {
|
|
2028
|
+
"anyOf": [
|
|
2029
|
+
{
|
|
2030
|
+
"type": "string"
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"$ref": "#/definitions/EnvValue"
|
|
2034
|
+
}
|
|
2035
|
+
]
|
|
2036
|
+
},
|
|
2037
|
+
"created_at": {
|
|
2038
|
+
"anyOf": [
|
|
2039
|
+
{
|
|
2040
|
+
"type": "string"
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
"$ref": "#/definitions/EnvValue"
|
|
2044
|
+
}
|
|
2045
|
+
]
|
|
2046
|
+
},
|
|
2047
|
+
"updated_at": {
|
|
2048
|
+
"anyOf": [
|
|
2049
|
+
{
|
|
2050
|
+
"type": "string"
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
"$ref": "#/definitions/EnvValue"
|
|
2054
|
+
}
|
|
2055
|
+
]
|
|
2056
|
+
},
|
|
2057
|
+
"ban_reason": {
|
|
2058
|
+
"anyOf": [
|
|
2059
|
+
{
|
|
2060
|
+
"type": "string"
|
|
2061
|
+
},
|
|
2062
|
+
{
|
|
2063
|
+
"$ref": "#/definitions/EnvValue"
|
|
2064
|
+
}
|
|
2065
|
+
]
|
|
2066
|
+
},
|
|
2067
|
+
"ban_expires": {
|
|
2068
|
+
"anyOf": [
|
|
2069
|
+
{
|
|
2070
|
+
"type": "string"
|
|
2071
|
+
},
|
|
2072
|
+
{
|
|
2073
|
+
"$ref": "#/definitions/EnvValue"
|
|
2074
|
+
}
|
|
2075
|
+
]
|
|
2076
|
+
},
|
|
2077
|
+
"two_factor_enabled": {
|
|
2078
|
+
"anyOf": [
|
|
2079
|
+
{
|
|
2080
|
+
"type": "string"
|
|
2081
|
+
},
|
|
2082
|
+
{
|
|
2083
|
+
"$ref": "#/definitions/EnvValue"
|
|
2084
|
+
}
|
|
2085
|
+
]
|
|
2086
|
+
},
|
|
2087
|
+
"last_role": {
|
|
2088
|
+
"anyOf": [
|
|
2089
|
+
{
|
|
2090
|
+
"type": "string"
|
|
2091
|
+
},
|
|
2092
|
+
{
|
|
2093
|
+
"$ref": "#/definitions/EnvValue"
|
|
2094
|
+
}
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"last_organization_id": {
|
|
2098
|
+
"anyOf": [
|
|
2099
|
+
{
|
|
2100
|
+
"type": "string"
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
"$ref": "#/definitions/EnvValue"
|
|
2104
|
+
}
|
|
2105
|
+
]
|
|
2106
|
+
}
|
|
2107
|
+
},
|
|
2108
|
+
"additionalProperties": false
|
|
2109
|
+
},
|
|
2110
|
+
{
|
|
2111
|
+
"$ref": "#/definitions/EnvValue"
|
|
2112
|
+
}
|
|
2113
|
+
]
|
|
2114
|
+
},
|
|
2115
|
+
"metadata": {
|
|
2116
|
+
"description": "A JSON column that holds each user's metadata, such as `raw_user_meta_data`; none by default.",
|
|
2117
|
+
"anyOf": [
|
|
2118
|
+
{
|
|
2119
|
+
"type": "string"
|
|
2120
|
+
},
|
|
2121
|
+
{
|
|
2122
|
+
"$ref": "#/definitions/EnvValue"
|
|
2123
|
+
}
|
|
2124
|
+
]
|
|
2125
|
+
}
|
|
2126
|
+
},
|
|
2127
|
+
"additionalProperties": false
|
|
2128
|
+
},
|
|
2129
|
+
"OperatorProvider": {
|
|
2130
|
+
"type": "object",
|
|
2131
|
+
"properties": {
|
|
2132
|
+
"issuer": {
|
|
2133
|
+
"description": "The provider's issuer URL; its settings are read from `{issuer}/.well-known/openid-configuration`.",
|
|
2134
|
+
"anyOf": [
|
|
2135
|
+
{
|
|
2136
|
+
"type": "string"
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
"$ref": "#/definitions/EnvValue"
|
|
2140
|
+
}
|
|
2141
|
+
]
|
|
2142
|
+
},
|
|
2143
|
+
"clientId": {
|
|
2144
|
+
"anyOf": [
|
|
2145
|
+
{
|
|
2146
|
+
"type": "string"
|
|
2147
|
+
},
|
|
2148
|
+
{
|
|
2149
|
+
"$ref": "#/definitions/EnvValue"
|
|
2150
|
+
}
|
|
2151
|
+
]
|
|
2152
|
+
},
|
|
2153
|
+
"clientSecret": {
|
|
2154
|
+
"anyOf": [
|
|
2155
|
+
{
|
|
2156
|
+
"type": "string"
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
"$ref": "#/definitions/EnvValue"
|
|
2160
|
+
}
|
|
2161
|
+
]
|
|
2162
|
+
},
|
|
2163
|
+
"name": {
|
|
2164
|
+
"description": "Shown on the staff sign-in page as \"Continue with {name}\". Default `the operator`.",
|
|
2165
|
+
"anyOf": [
|
|
2166
|
+
{
|
|
2167
|
+
"type": "string"
|
|
2168
|
+
},
|
|
2169
|
+
{
|
|
2170
|
+
"$ref": "#/definitions/EnvValue"
|
|
2171
|
+
}
|
|
2172
|
+
]
|
|
2173
|
+
},
|
|
2174
|
+
"group": {
|
|
2175
|
+
"description": "The group in the ID token's `groups` claim that lets staff sign in as people. Default `protobase-staff-access`.",
|
|
2176
|
+
"anyOf": [
|
|
2177
|
+
{
|
|
2178
|
+
"type": "string"
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
"$ref": "#/definitions/EnvValue"
|
|
2182
|
+
}
|
|
2183
|
+
]
|
|
2184
|
+
},
|
|
2185
|
+
"scopes": {
|
|
2186
|
+
"description": "Scopes asked for besides `openid email profile`, for a provider that puts `groups` in the ID token only for one of its own.",
|
|
2187
|
+
"anyOf": [
|
|
2188
|
+
{
|
|
2189
|
+
"type": "array",
|
|
2190
|
+
"items": {
|
|
2191
|
+
"anyOf": [
|
|
2192
|
+
{
|
|
2193
|
+
"type": "string"
|
|
2194
|
+
},
|
|
2195
|
+
{
|
|
2196
|
+
"$ref": "#/definitions/EnvValue"
|
|
2197
|
+
}
|
|
2198
|
+
]
|
|
2199
|
+
}
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
"$ref": "#/definitions/EnvValue"
|
|
2203
|
+
}
|
|
2204
|
+
]
|
|
2205
|
+
},
|
|
2206
|
+
"acrValues": {
|
|
2207
|
+
"description": "`acr` values that count as a strong sign-in, asked for as `acr_values`, for a provider that reports levels instead of `amr`.",
|
|
2208
|
+
"anyOf": [
|
|
2209
|
+
{
|
|
2210
|
+
"type": "array",
|
|
2211
|
+
"items": {
|
|
2212
|
+
"anyOf": [
|
|
2213
|
+
{
|
|
2214
|
+
"type": "string"
|
|
2215
|
+
},
|
|
2216
|
+
{
|
|
2217
|
+
"$ref": "#/definitions/EnvValue"
|
|
2218
|
+
}
|
|
2219
|
+
]
|
|
2220
|
+
}
|
|
2221
|
+
},
|
|
2222
|
+
{
|
|
2223
|
+
"$ref": "#/definitions/EnvValue"
|
|
2224
|
+
}
|
|
2225
|
+
]
|
|
2226
|
+
},
|
|
2227
|
+
"sessionMinutes": {
|
|
2228
|
+
"description": "How long a staff session lasts, in minutes: default 30, at most 240. It is not extended while in use.",
|
|
2229
|
+
"anyOf": [
|
|
2230
|
+
{
|
|
2231
|
+
"type": "number"
|
|
2232
|
+
},
|
|
2233
|
+
{
|
|
2234
|
+
"$ref": "#/definitions/EnvValue"
|
|
2235
|
+
}
|
|
2236
|
+
]
|
|
2237
|
+
}
|
|
2238
|
+
},
|
|
2239
|
+
"required": [
|
|
2240
|
+
"issuer",
|
|
2241
|
+
"clientId",
|
|
2242
|
+
"clientSecret"
|
|
2243
|
+
],
|
|
2244
|
+
"additionalProperties": false
|
|
2245
|
+
},
|
|
2246
|
+
"PlatformSignIn": {
|
|
2247
|
+
"type": "object",
|
|
2248
|
+
"properties": {
|
|
2249
|
+
"issuer": {
|
|
2250
|
+
"description": "The provider's issuer URL; its settings are read from `{issuer}/.well-known/openid-configuration`.",
|
|
2251
|
+
"anyOf": [
|
|
2252
|
+
{
|
|
2253
|
+
"type": "string"
|
|
2254
|
+
},
|
|
2255
|
+
{
|
|
2256
|
+
"$ref": "#/definitions/EnvValue"
|
|
2257
|
+
}
|
|
2258
|
+
]
|
|
2259
|
+
},
|
|
2260
|
+
"clientId": {
|
|
2261
|
+
"anyOf": [
|
|
2262
|
+
{
|
|
2263
|
+
"type": "string"
|
|
2264
|
+
},
|
|
2265
|
+
{
|
|
2266
|
+
"$ref": "#/definitions/EnvValue"
|
|
2267
|
+
}
|
|
2268
|
+
]
|
|
2269
|
+
},
|
|
2270
|
+
"clientSecret": {
|
|
2271
|
+
"anyOf": [
|
|
2272
|
+
{
|
|
2273
|
+
"type": "string"
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
"$ref": "#/definitions/EnvValue"
|
|
2277
|
+
}
|
|
2278
|
+
]
|
|
2279
|
+
},
|
|
2280
|
+
"provider": {
|
|
2281
|
+
"description": "The id of the provider: the button, the callback path, and the namespace of the linked accounts. Default `oidc`.\nUse `github` only when the provider's `sub` is the GitHub user id, so its accounts are those of Better Auth's own\nGitHub provider.",
|
|
2282
|
+
"anyOf": [
|
|
2283
|
+
{
|
|
2284
|
+
"type": "string"
|
|
2285
|
+
},
|
|
2286
|
+
{
|
|
2287
|
+
"$ref": "#/definitions/EnvValue"
|
|
2288
|
+
}
|
|
2289
|
+
]
|
|
2290
|
+
},
|
|
2291
|
+
"name": {
|
|
2292
|
+
"description": "Shown on the sign-in page as \"Continue with {name}\". Default `GitHub` for the `github` provider, `SSO` otherwise.",
|
|
2293
|
+
"anyOf": [
|
|
2294
|
+
{
|
|
2295
|
+
"type": "string"
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"$ref": "#/definitions/EnvValue"
|
|
2299
|
+
}
|
|
2300
|
+
]
|
|
2301
|
+
},
|
|
2302
|
+
"scopes": {
|
|
2303
|
+
"description": "Scopes asked for besides `openid email profile`.",
|
|
2304
|
+
"anyOf": [
|
|
2305
|
+
{
|
|
2306
|
+
"type": "array",
|
|
2307
|
+
"items": {
|
|
2308
|
+
"anyOf": [
|
|
2309
|
+
{
|
|
2310
|
+
"type": "string"
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"$ref": "#/definitions/EnvValue"
|
|
2314
|
+
}
|
|
2315
|
+
]
|
|
2316
|
+
}
|
|
2317
|
+
},
|
|
2318
|
+
{
|
|
2319
|
+
"$ref": "#/definitions/EnvValue"
|
|
2320
|
+
}
|
|
2321
|
+
]
|
|
2322
|
+
}
|
|
2323
|
+
},
|
|
2324
|
+
"required": [
|
|
2325
|
+
"issuer",
|
|
2326
|
+
"clientId",
|
|
2327
|
+
"clientSecret"
|
|
2328
|
+
],
|
|
2329
|
+
"additionalProperties": false
|
|
2330
|
+
},
|
|
2331
|
+
"SsoOptions": {
|
|
2332
|
+
"type": "object",
|
|
2333
|
+
"properties": {
|
|
2334
|
+
"saml": {
|
|
2335
|
+
"anyOf": [
|
|
2336
|
+
{
|
|
2337
|
+
"type": "array",
|
|
2338
|
+
"items": {
|
|
2339
|
+
"anyOf": [
|
|
2340
|
+
{
|
|
2341
|
+
"$ref": "#/definitions/SamlProvider"
|
|
2342
|
+
},
|
|
2343
|
+
{
|
|
2344
|
+
"$ref": "#/definitions/EnvValue"
|
|
2345
|
+
}
|
|
2346
|
+
]
|
|
2347
|
+
}
|
|
2348
|
+
},
|
|
2349
|
+
{
|
|
2350
|
+
"$ref": "#/definitions/EnvValue"
|
|
2351
|
+
}
|
|
2352
|
+
]
|
|
2353
|
+
}
|
|
2354
|
+
},
|
|
2355
|
+
"required": [
|
|
2356
|
+
"saml"
|
|
2357
|
+
],
|
|
2358
|
+
"additionalProperties": false
|
|
2359
|
+
},
|
|
2360
|
+
"SamlProvider": {
|
|
2361
|
+
"type": "object",
|
|
2362
|
+
"properties": {
|
|
2363
|
+
"id": {
|
|
2364
|
+
"description": "The id: the button's `?sign-in=` link, the provider's paths and the namespace of its accounts. Lowercase letters, digits or \"-\".",
|
|
2365
|
+
"anyOf": [
|
|
2366
|
+
{
|
|
2367
|
+
"type": "string"
|
|
2368
|
+
},
|
|
2369
|
+
{
|
|
2370
|
+
"$ref": "#/definitions/EnvValue"
|
|
2371
|
+
}
|
|
2372
|
+
]
|
|
2373
|
+
},
|
|
2374
|
+
"name": {
|
|
2375
|
+
"description": "Shown on the sign-in page as \"Continue with {name}\". Default `SSO`.",
|
|
2376
|
+
"anyOf": [
|
|
2377
|
+
{
|
|
2378
|
+
"type": "string"
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
"$ref": "#/definitions/EnvValue"
|
|
2382
|
+
}
|
|
2383
|
+
]
|
|
2384
|
+
},
|
|
2385
|
+
"domains": {
|
|
2386
|
+
"description": "The email domains of its people, for example `['example.com']`; subdomains count. Only an address there signs up,\nor links to the account that has it.",
|
|
2387
|
+
"anyOf": [
|
|
2388
|
+
{
|
|
2389
|
+
"type": "array",
|
|
2390
|
+
"items": {
|
|
2391
|
+
"anyOf": [
|
|
2392
|
+
{
|
|
2393
|
+
"type": "string"
|
|
2394
|
+
},
|
|
2395
|
+
{
|
|
2396
|
+
"$ref": "#/definitions/EnvValue"
|
|
2397
|
+
}
|
|
2398
|
+
]
|
|
2399
|
+
}
|
|
2400
|
+
},
|
|
2401
|
+
{
|
|
2402
|
+
"$ref": "#/definitions/EnvValue"
|
|
2403
|
+
}
|
|
2404
|
+
]
|
|
2405
|
+
},
|
|
2406
|
+
"idp": {
|
|
2407
|
+
"description": "The provider's metadata XML, or its entity ID, sign-in URL and signing certificate(s) (PEM; several while one rotates).",
|
|
2408
|
+
"anyOf": [
|
|
2409
|
+
{
|
|
2410
|
+
"type": "object",
|
|
2411
|
+
"properties": {
|
|
2412
|
+
"metadata": {
|
|
2413
|
+
"anyOf": [
|
|
2414
|
+
{
|
|
2415
|
+
"type": "string"
|
|
2416
|
+
},
|
|
2417
|
+
{
|
|
2418
|
+
"$ref": "#/definitions/EnvValue"
|
|
2419
|
+
}
|
|
2420
|
+
]
|
|
2421
|
+
}
|
|
2422
|
+
},
|
|
2423
|
+
"required": [
|
|
2424
|
+
"metadata"
|
|
2425
|
+
],
|
|
2426
|
+
"additionalProperties": false
|
|
2427
|
+
},
|
|
2428
|
+
{
|
|
2429
|
+
"type": "object",
|
|
2430
|
+
"properties": {
|
|
2431
|
+
"entityId": {
|
|
2432
|
+
"anyOf": [
|
|
2433
|
+
{
|
|
2434
|
+
"type": "string"
|
|
2435
|
+
},
|
|
2436
|
+
{
|
|
2437
|
+
"$ref": "#/definitions/EnvValue"
|
|
2438
|
+
}
|
|
2439
|
+
]
|
|
2440
|
+
},
|
|
2441
|
+
"ssoUrl": {
|
|
2442
|
+
"anyOf": [
|
|
2443
|
+
{
|
|
2444
|
+
"type": "string"
|
|
2445
|
+
},
|
|
2446
|
+
{
|
|
2447
|
+
"$ref": "#/definitions/EnvValue"
|
|
2448
|
+
}
|
|
2449
|
+
]
|
|
2450
|
+
},
|
|
2451
|
+
"certificate": {
|
|
2452
|
+
"anyOf": [
|
|
2453
|
+
{
|
|
2454
|
+
"type": "string"
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
"type": "array",
|
|
2458
|
+
"items": {
|
|
2459
|
+
"anyOf": [
|
|
2460
|
+
{
|
|
2461
|
+
"type": "string"
|
|
2462
|
+
},
|
|
2463
|
+
{
|
|
2464
|
+
"$ref": "#/definitions/EnvValue"
|
|
2465
|
+
}
|
|
2466
|
+
]
|
|
2467
|
+
}
|
|
2468
|
+
},
|
|
2469
|
+
{
|
|
2470
|
+
"$ref": "#/definitions/EnvValue"
|
|
2471
|
+
}
|
|
2472
|
+
]
|
|
2473
|
+
}
|
|
2474
|
+
},
|
|
2475
|
+
"required": [
|
|
2476
|
+
"entityId",
|
|
2477
|
+
"ssoUrl",
|
|
2478
|
+
"certificate"
|
|
2479
|
+
],
|
|
2480
|
+
"additionalProperties": false
|
|
2481
|
+
},
|
|
2482
|
+
{
|
|
2483
|
+
"$ref": "#/definitions/EnvValue"
|
|
2484
|
+
}
|
|
2485
|
+
]
|
|
2486
|
+
},
|
|
2487
|
+
"attributes": {
|
|
2488
|
+
"description": "The assertion's attribute names, when they are not `email`, `givenName`, `surname` and `displayName`.",
|
|
2489
|
+
"anyOf": [
|
|
2490
|
+
{
|
|
2491
|
+
"type": "object",
|
|
2492
|
+
"properties": {
|
|
2493
|
+
"email": {
|
|
2494
|
+
"anyOf": [
|
|
2495
|
+
{
|
|
2496
|
+
"type": "string"
|
|
2497
|
+
},
|
|
2498
|
+
{
|
|
2499
|
+
"$ref": "#/definitions/EnvValue"
|
|
2500
|
+
}
|
|
2501
|
+
]
|
|
2502
|
+
},
|
|
2503
|
+
"name": {
|
|
2504
|
+
"anyOf": [
|
|
2505
|
+
{
|
|
2506
|
+
"type": "string"
|
|
2507
|
+
},
|
|
2508
|
+
{
|
|
2509
|
+
"$ref": "#/definitions/EnvValue"
|
|
2510
|
+
}
|
|
2511
|
+
]
|
|
2512
|
+
},
|
|
2513
|
+
"firstName": {
|
|
2514
|
+
"anyOf": [
|
|
2515
|
+
{
|
|
2516
|
+
"type": "string"
|
|
2517
|
+
},
|
|
2518
|
+
{
|
|
2519
|
+
"$ref": "#/definitions/EnvValue"
|
|
2520
|
+
}
|
|
2521
|
+
]
|
|
2522
|
+
},
|
|
2523
|
+
"lastName": {
|
|
2524
|
+
"anyOf": [
|
|
2525
|
+
{
|
|
2526
|
+
"type": "string"
|
|
2527
|
+
},
|
|
2528
|
+
{
|
|
2529
|
+
"$ref": "#/definitions/EnvValue"
|
|
2530
|
+
}
|
|
2531
|
+
]
|
|
2532
|
+
}
|
|
2533
|
+
},
|
|
2534
|
+
"additionalProperties": false
|
|
2535
|
+
},
|
|
2536
|
+
{
|
|
2537
|
+
"$ref": "#/definitions/EnvValue"
|
|
2538
|
+
}
|
|
2539
|
+
]
|
|
2540
|
+
}
|
|
2541
|
+
},
|
|
2542
|
+
"required": [
|
|
2543
|
+
"id",
|
|
2544
|
+
"domains",
|
|
2545
|
+
"idp"
|
|
2546
|
+
],
|
|
2547
|
+
"additionalProperties": false
|
|
2548
|
+
},
|
|
2549
|
+
"AuthenticateSettings": {
|
|
2550
|
+
"type": "object",
|
|
2551
|
+
"properties": {
|
|
2552
|
+
"organizations": {
|
|
2553
|
+
"description": "Whether the tokens carry organizations; read from `auth` when given. Needed with `jwksUrl` only.",
|
|
2554
|
+
"anyOf": [
|
|
2555
|
+
{
|
|
2556
|
+
"type": "boolean"
|
|
2557
|
+
},
|
|
2558
|
+
{
|
|
2559
|
+
"$ref": "#/definitions/EnvValue"
|
|
2560
|
+
}
|
|
2561
|
+
]
|
|
2562
|
+
},
|
|
2563
|
+
"jwksUrl": {
|
|
2564
|
+
"description": "Or its JWKS endpoint, for an API that runs apart from the auth server. Needs `issuer`.",
|
|
2565
|
+
"anyOf": [
|
|
2566
|
+
{
|
|
2567
|
+
"type": "string"
|
|
2568
|
+
},
|
|
2569
|
+
{
|
|
2570
|
+
"$ref": "#/definitions/EnvValue"
|
|
2571
|
+
}
|
|
2572
|
+
]
|
|
2573
|
+
},
|
|
2574
|
+
"issuer": {
|
|
2575
|
+
"description": "Defaults to the auth instance's `issuer`, its `baseURL`; it is both issuer and audience of its tokens.",
|
|
2576
|
+
"anyOf": [
|
|
2577
|
+
{
|
|
2578
|
+
"type": "string"
|
|
2579
|
+
},
|
|
2580
|
+
{
|
|
2581
|
+
"$ref": "#/definitions/EnvValue"
|
|
2582
|
+
}
|
|
2583
|
+
]
|
|
2584
|
+
},
|
|
2585
|
+
"cache": {
|
|
2586
|
+
"description": "How long the key set is cached; see `cachedKeys`.",
|
|
2587
|
+
"anyOf": [
|
|
2588
|
+
{
|
|
2589
|
+
"$ref": "#/definitions/JwksCacheOptions"
|
|
2590
|
+
},
|
|
2591
|
+
{
|
|
2592
|
+
"$ref": "#/definitions/EnvValue"
|
|
2593
|
+
}
|
|
2594
|
+
]
|
|
2595
|
+
},
|
|
2596
|
+
"apps": {
|
|
2597
|
+
"description": "Other Protobase apps whose users this API admits with their own tokens, so their admin apps can draw its resources (see `TrustedApp`).",
|
|
2598
|
+
"anyOf": [
|
|
2599
|
+
{
|
|
2600
|
+
"type": "array",
|
|
2601
|
+
"items": {
|
|
2602
|
+
"anyOf": [
|
|
2603
|
+
{
|
|
2604
|
+
"$ref": "#/definitions/TrustedApp"
|
|
2605
|
+
},
|
|
2606
|
+
{
|
|
2607
|
+
"$ref": "#/definitions/EnvValue"
|
|
2608
|
+
}
|
|
2609
|
+
]
|
|
2610
|
+
}
|
|
2611
|
+
},
|
|
2612
|
+
{
|
|
2613
|
+
"$ref": "#/definitions/EnvValue"
|
|
2614
|
+
}
|
|
2615
|
+
]
|
|
2616
|
+
},
|
|
2617
|
+
"audience": {
|
|
2618
|
+
"description": "The audience the tokens must name; default `issuer`, the app's own tokens.",
|
|
2619
|
+
"anyOf": [
|
|
2620
|
+
{
|
|
2621
|
+
"type": "string"
|
|
2622
|
+
},
|
|
2623
|
+
{
|
|
2624
|
+
"$ref": "#/definitions/EnvValue"
|
|
2625
|
+
}
|
|
2626
|
+
]
|
|
2627
|
+
},
|
|
2628
|
+
"tenant": {
|
|
2629
|
+
"description": "The one tenant everyone works in, for an app without organizations; never read from the token.",
|
|
2630
|
+
"anyOf": [
|
|
2631
|
+
{
|
|
2632
|
+
"type": "string"
|
|
2633
|
+
},
|
|
2634
|
+
{
|
|
2635
|
+
"type": "number"
|
|
2636
|
+
},
|
|
2637
|
+
{
|
|
2638
|
+
"$ref": "#/definitions/EnvValue"
|
|
2639
|
+
}
|
|
2640
|
+
]
|
|
2641
|
+
}
|
|
2642
|
+
},
|
|
2643
|
+
"additionalProperties": false
|
|
2644
|
+
},
|
|
2645
|
+
"JwksCacheOptions": {
|
|
2646
|
+
"type": "object",
|
|
2647
|
+
"properties": {
|
|
2648
|
+
"refreshMs": {
|
|
2649
|
+
"description": "Reload the whole key set this often, so removed keys stop being accepted. Default 10 minutes.",
|
|
2650
|
+
"anyOf": [
|
|
2651
|
+
{
|
|
2652
|
+
"type": "number"
|
|
2653
|
+
},
|
|
2654
|
+
{
|
|
2655
|
+
"$ref": "#/definitions/EnvValue"
|
|
2656
|
+
}
|
|
2657
|
+
]
|
|
2658
|
+
},
|
|
2659
|
+
"minReloadMs": {
|
|
2660
|
+
"description": "A token with an unknown `kid` reloads the set, but at most this often. Default 30 seconds.",
|
|
2661
|
+
"anyOf": [
|
|
2662
|
+
{
|
|
2663
|
+
"type": "number"
|
|
2664
|
+
},
|
|
2665
|
+
{
|
|
2666
|
+
"$ref": "#/definitions/EnvValue"
|
|
2667
|
+
}
|
|
2668
|
+
]
|
|
2669
|
+
}
|
|
2670
|
+
},
|
|
2671
|
+
"additionalProperties": false
|
|
2672
|
+
},
|
|
2673
|
+
"TrustedApp": {
|
|
2674
|
+
"type": "object",
|
|
2675
|
+
"properties": {
|
|
2676
|
+
"issuer": {
|
|
2677
|
+
"anyOf": [
|
|
2678
|
+
{
|
|
2679
|
+
"type": "string"
|
|
2680
|
+
},
|
|
2681
|
+
{
|
|
2682
|
+
"$ref": "#/definitions/EnvValue"
|
|
2683
|
+
}
|
|
2684
|
+
]
|
|
2685
|
+
},
|
|
2686
|
+
"roles": {
|
|
2687
|
+
"anyOf": [
|
|
2688
|
+
{
|
|
2689
|
+
"type": "object",
|
|
2690
|
+
"additionalProperties": {
|
|
2691
|
+
"anyOf": [
|
|
2692
|
+
{
|
|
2693
|
+
"type": "string"
|
|
2694
|
+
},
|
|
2695
|
+
{
|
|
2696
|
+
"type": "array",
|
|
2697
|
+
"items": {
|
|
2698
|
+
"anyOf": [
|
|
2699
|
+
{
|
|
2700
|
+
"type": "string"
|
|
2701
|
+
},
|
|
2702
|
+
{
|
|
2703
|
+
"$ref": "#/definitions/EnvValue"
|
|
2704
|
+
}
|
|
2705
|
+
]
|
|
2706
|
+
}
|
|
2707
|
+
},
|
|
2708
|
+
{
|
|
2709
|
+
"$ref": "#/definitions/EnvValue"
|
|
2710
|
+
}
|
|
2711
|
+
]
|
|
2712
|
+
}
|
|
2713
|
+
},
|
|
2714
|
+
{
|
|
2715
|
+
"$ref": "#/definitions/EnvValue"
|
|
2716
|
+
}
|
|
2717
|
+
]
|
|
2718
|
+
},
|
|
2719
|
+
"tenant": {
|
|
2720
|
+
"anyOf": [
|
|
2721
|
+
{
|
|
2722
|
+
"type": "string"
|
|
2723
|
+
},
|
|
2724
|
+
{
|
|
2725
|
+
"type": "number"
|
|
2726
|
+
},
|
|
2727
|
+
{
|
|
2728
|
+
"$ref": "#/definitions/EnvValue"
|
|
2729
|
+
}
|
|
2730
|
+
]
|
|
2731
|
+
}
|
|
2732
|
+
},
|
|
2733
|
+
"required": [
|
|
2734
|
+
"issuer",
|
|
2735
|
+
"roles"
|
|
2736
|
+
],
|
|
2737
|
+
"additionalProperties": false
|
|
2738
|
+
},
|
|
2739
|
+
"JobDeclaration": {
|
|
2740
|
+
"type": "object",
|
|
2741
|
+
"properties": {
|
|
2742
|
+
"maxAttempts": {
|
|
2743
|
+
"description": "Tries before the job is kept as failed, listed in the admin app. Default 10.",
|
|
2744
|
+
"anyOf": [
|
|
2745
|
+
{
|
|
2746
|
+
"type": "number"
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
"$ref": "#/definitions/EnvValue"
|
|
2750
|
+
}
|
|
2751
|
+
]
|
|
2752
|
+
},
|
|
2753
|
+
"retryDelay": {
|
|
2754
|
+
"description": "The wait before the first retry, doubling with each one: milliseconds or text such as `30 seconds`. Default `2s`.",
|
|
2755
|
+
"anyOf": [
|
|
2756
|
+
{
|
|
2757
|
+
"type": "string"
|
|
2758
|
+
},
|
|
2759
|
+
{
|
|
2760
|
+
"type": "number"
|
|
2761
|
+
},
|
|
2762
|
+
{
|
|
2763
|
+
"$ref": "#/definitions/EnvValue"
|
|
2764
|
+
}
|
|
2765
|
+
]
|
|
2766
|
+
},
|
|
2767
|
+
"maxRetryDelay": {
|
|
2768
|
+
"description": "The longest wait between two tries. Default `1 hour`.",
|
|
2769
|
+
"anyOf": [
|
|
2770
|
+
{
|
|
2771
|
+
"type": "string"
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
"type": "number"
|
|
2775
|
+
},
|
|
2776
|
+
{
|
|
2777
|
+
"$ref": "#/definitions/EnvValue"
|
|
2778
|
+
}
|
|
2779
|
+
]
|
|
2780
|
+
},
|
|
2781
|
+
"timeout": {
|
|
2782
|
+
"description": "How long one try may run before it counts as failed. Default `15 minutes`.",
|
|
2783
|
+
"anyOf": [
|
|
2784
|
+
{
|
|
2785
|
+
"type": "string"
|
|
2786
|
+
},
|
|
2787
|
+
{
|
|
2788
|
+
"type": "number"
|
|
2789
|
+
},
|
|
2790
|
+
{
|
|
2791
|
+
"$ref": "#/definitions/EnvValue"
|
|
2792
|
+
}
|
|
2793
|
+
]
|
|
2794
|
+
},
|
|
2795
|
+
"longQueries": {
|
|
2796
|
+
"description": "Its queries through `db` may run up to 30 seconds instead of the database's own limit, on a connection kept for\nsuch work: for imports, backfills, large deletes and other bulk work.",
|
|
2797
|
+
"anyOf": [
|
|
2798
|
+
{
|
|
2799
|
+
"type": "boolean"
|
|
2800
|
+
},
|
|
2801
|
+
{
|
|
2802
|
+
"$ref": "#/definitions/EnvValue"
|
|
2803
|
+
}
|
|
2804
|
+
]
|
|
2805
|
+
},
|
|
2806
|
+
"concurrency": {
|
|
2807
|
+
"description": "Jobs of this name running at once in each worker process. Default 1.",
|
|
2808
|
+
"anyOf": [
|
|
2809
|
+
{
|
|
2810
|
+
"type": "number"
|
|
2811
|
+
},
|
|
2812
|
+
{
|
|
2813
|
+
"$ref": "#/definitions/EnvValue"
|
|
2814
|
+
}
|
|
2815
|
+
]
|
|
2816
|
+
},
|
|
2817
|
+
"ordered": {
|
|
2818
|
+
"description": "Jobs run one at a time per group, in the order they were enqueued, and every enqueue names its group. A job that is\nretrying or failed holds back the rest of its group until it succeeds, or is retried or deleted in the admin app.",
|
|
2819
|
+
"anyOf": [
|
|
2820
|
+
{
|
|
2821
|
+
"type": "boolean"
|
|
2822
|
+
},
|
|
2823
|
+
{
|
|
2824
|
+
"$ref": "#/definitions/EnvValue"
|
|
2825
|
+
}
|
|
2826
|
+
]
|
|
2827
|
+
},
|
|
2828
|
+
"schedule": {
|
|
2829
|
+
"description": "Runs the job on this cron schedule, such as `0 7 * * *` (with an optional seconds field first), with no payload: one\nrun per time, however many workers run. A run missed while no worker ran happens once, as soon as one does.",
|
|
2830
|
+
"anyOf": [
|
|
2831
|
+
{
|
|
2832
|
+
"type": "string"
|
|
2833
|
+
},
|
|
2834
|
+
{
|
|
2835
|
+
"$ref": "#/definitions/EnvValue"
|
|
2836
|
+
}
|
|
2837
|
+
]
|
|
2838
|
+
},
|
|
2839
|
+
"timezone": {
|
|
2840
|
+
"description": "The time zone `schedule` is read in, such as `Europe/Amsterdam`. Default `UTC`.",
|
|
2841
|
+
"anyOf": [
|
|
2842
|
+
{
|
|
2843
|
+
"type": "string"
|
|
2844
|
+
},
|
|
2845
|
+
{
|
|
2846
|
+
"$ref": "#/definitions/EnvValue"
|
|
2847
|
+
}
|
|
2848
|
+
]
|
|
2849
|
+
},
|
|
2850
|
+
"description": {
|
|
2851
|
+
"description": "What the job does, for the people who read the config and the failed jobs page.",
|
|
2852
|
+
"anyOf": [
|
|
2853
|
+
{
|
|
2854
|
+
"type": "string"
|
|
2855
|
+
},
|
|
2856
|
+
{
|
|
2857
|
+
"$ref": "#/definitions/EnvValue"
|
|
2858
|
+
}
|
|
2859
|
+
]
|
|
2860
|
+
},
|
|
2861
|
+
"arguments": {
|
|
2862
|
+
"description": "Its arguments by name, each a field type or a type with options (see `ArgumentSpec`), such as `{ invoiceId: 'bigint' }`.",
|
|
2863
|
+
"anyOf": [
|
|
2864
|
+
{
|
|
2865
|
+
"$ref": "#/definitions/ArgumentsSpec"
|
|
2866
|
+
},
|
|
2867
|
+
{
|
|
2868
|
+
"$ref": "#/definitions/EnvValue"
|
|
2869
|
+
}
|
|
2870
|
+
]
|
|
2871
|
+
}
|
|
2872
|
+
},
|
|
2873
|
+
"additionalProperties": false
|
|
2874
|
+
},
|
|
2875
|
+
"ArgumentsSpec": {
|
|
2876
|
+
"type": "object",
|
|
2877
|
+
"additionalProperties": {
|
|
2878
|
+
"anyOf": [
|
|
2879
|
+
{
|
|
2880
|
+
"enum": [
|
|
2881
|
+
"bigint",
|
|
2882
|
+
"boolean",
|
|
2883
|
+
"uuid",
|
|
2884
|
+
"text",
|
|
2885
|
+
"integer",
|
|
2886
|
+
"decimal",
|
|
2887
|
+
"date",
|
|
2888
|
+
"timestamp",
|
|
2889
|
+
"enum",
|
|
2890
|
+
"json",
|
|
2891
|
+
"currency",
|
|
2892
|
+
"country"
|
|
2893
|
+
]
|
|
2894
|
+
},
|
|
2895
|
+
{
|
|
2896
|
+
"type": "object",
|
|
2897
|
+
"properties": {
|
|
2898
|
+
"type": {
|
|
2899
|
+
"description": "The argument's type.",
|
|
2900
|
+
"anyOf": [
|
|
2901
|
+
{
|
|
2902
|
+
"enum": [
|
|
2903
|
+
"bigint",
|
|
2904
|
+
"boolean",
|
|
2905
|
+
"uuid",
|
|
2906
|
+
"text",
|
|
2907
|
+
"integer",
|
|
2908
|
+
"decimal",
|
|
2909
|
+
"date",
|
|
2910
|
+
"timestamp",
|
|
2911
|
+
"enum",
|
|
2912
|
+
"json",
|
|
2913
|
+
"currency",
|
|
2914
|
+
"country"
|
|
2915
|
+
]
|
|
2916
|
+
},
|
|
2917
|
+
{
|
|
2918
|
+
"$ref": "#/definitions/EnvValue"
|
|
2919
|
+
}
|
|
2920
|
+
]
|
|
2921
|
+
},
|
|
2922
|
+
"optional": {
|
|
2923
|
+
"description": "It may be left out.",
|
|
2924
|
+
"anyOf": [
|
|
2925
|
+
{
|
|
2926
|
+
"type": "boolean"
|
|
2927
|
+
},
|
|
2928
|
+
{
|
|
2929
|
+
"$ref": "#/definitions/EnvValue"
|
|
2930
|
+
}
|
|
2931
|
+
]
|
|
2932
|
+
},
|
|
2933
|
+
"values": {
|
|
2934
|
+
"description": "An enum's values.",
|
|
2935
|
+
"anyOf": [
|
|
2936
|
+
{
|
|
2937
|
+
"type": "array",
|
|
2938
|
+
"items": {
|
|
2939
|
+
"anyOf": [
|
|
2940
|
+
{
|
|
2941
|
+
"type": "string"
|
|
2942
|
+
},
|
|
2943
|
+
{
|
|
2944
|
+
"$ref": "#/definitions/EnvValue"
|
|
2945
|
+
}
|
|
2946
|
+
]
|
|
2947
|
+
}
|
|
2948
|
+
},
|
|
2949
|
+
{
|
|
2950
|
+
"$ref": "#/definitions/EnvValue"
|
|
2951
|
+
}
|
|
2952
|
+
]
|
|
2953
|
+
},
|
|
2954
|
+
"min": {
|
|
2955
|
+
"description": "The least value, or for text the shortest length.",
|
|
2956
|
+
"anyOf": [
|
|
2957
|
+
{
|
|
2958
|
+
"type": "number"
|
|
2959
|
+
},
|
|
2960
|
+
{
|
|
2961
|
+
"$ref": "#/definitions/EnvValue"
|
|
2962
|
+
}
|
|
2963
|
+
]
|
|
2964
|
+
},
|
|
2965
|
+
"max": {
|
|
2966
|
+
"description": "The greatest value, or for text the longest length.",
|
|
2967
|
+
"anyOf": [
|
|
2968
|
+
{
|
|
2969
|
+
"type": "number"
|
|
2970
|
+
},
|
|
2971
|
+
{
|
|
2972
|
+
"$ref": "#/definitions/EnvValue"
|
|
2973
|
+
}
|
|
2974
|
+
]
|
|
2975
|
+
},
|
|
2976
|
+
"precision": {
|
|
2977
|
+
"description": "A decimal's number of digits.",
|
|
2978
|
+
"anyOf": [
|
|
2979
|
+
{
|
|
2980
|
+
"type": "number"
|
|
2981
|
+
},
|
|
2982
|
+
{
|
|
2983
|
+
"$ref": "#/definitions/EnvValue"
|
|
2984
|
+
}
|
|
2985
|
+
]
|
|
2986
|
+
},
|
|
2987
|
+
"scale": {
|
|
2988
|
+
"description": "A decimal's number of digits after the point.",
|
|
2989
|
+
"anyOf": [
|
|
2990
|
+
{
|
|
2991
|
+
"type": "number"
|
|
2992
|
+
},
|
|
2993
|
+
{
|
|
2994
|
+
"$ref": "#/definitions/EnvValue"
|
|
2995
|
+
}
|
|
2996
|
+
]
|
|
2997
|
+
}
|
|
2998
|
+
},
|
|
2999
|
+
"required": [
|
|
3000
|
+
"type"
|
|
3001
|
+
],
|
|
3002
|
+
"additionalProperties": false
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
"$ref": "#/definitions/EnvValue"
|
|
3006
|
+
}
|
|
3007
|
+
]
|
|
3008
|
+
}
|
|
3009
|
+
},
|
|
3010
|
+
"FilesConfig": {
|
|
3011
|
+
"type": "object",
|
|
3012
|
+
"properties": {
|
|
3013
|
+
"secret": {
|
|
3014
|
+
"description": "Signs upload tickets and download URLs; default `PROTOBASE_FILES_SECRET`, then the app's `secret` (`PROTOBASE_SECRET`).",
|
|
3015
|
+
"anyOf": [
|
|
3016
|
+
{
|
|
3017
|
+
"type": "string"
|
|
3018
|
+
},
|
|
3019
|
+
{
|
|
3020
|
+
"$ref": "#/definitions/EnvValue"
|
|
3021
|
+
}
|
|
3022
|
+
]
|
|
3023
|
+
},
|
|
3024
|
+
"retention": {
|
|
3025
|
+
"description": "How long bytes outlive their last reference, for restores; default `1 day`. Public providers default to 0.",
|
|
3026
|
+
"anyOf": [
|
|
3027
|
+
{
|
|
3028
|
+
"type": "string"
|
|
3029
|
+
},
|
|
3030
|
+
{
|
|
3031
|
+
"type": "number"
|
|
3032
|
+
},
|
|
3033
|
+
{
|
|
3034
|
+
"$ref": "#/definitions/EnvValue"
|
|
3035
|
+
}
|
|
3036
|
+
]
|
|
3037
|
+
},
|
|
3038
|
+
"trustedHosts": {
|
|
3039
|
+
"description": "Hosts whose images the admin app draws with the page's referrer, besides the app's own and those its providers link\npublic files from: `['images.example.com']`. Images from any other host load with `referrerPolicy=\"no-referrer\"`.",
|
|
3040
|
+
"anyOf": [
|
|
3041
|
+
{
|
|
3042
|
+
"type": "array",
|
|
3043
|
+
"items": {
|
|
3044
|
+
"anyOf": [
|
|
3045
|
+
{
|
|
3046
|
+
"type": "string"
|
|
3047
|
+
},
|
|
3048
|
+
{
|
|
3049
|
+
"$ref": "#/definitions/EnvValue"
|
|
3050
|
+
}
|
|
3051
|
+
]
|
|
3052
|
+
}
|
|
3053
|
+
},
|
|
3054
|
+
{
|
|
3055
|
+
"$ref": "#/definitions/EnvValue"
|
|
3056
|
+
}
|
|
3057
|
+
]
|
|
3058
|
+
},
|
|
3059
|
+
"storage": {
|
|
3060
|
+
"description": "Where `supabase.storage` keeps the bytes of its objects, which the app serves at `/api/sb/storage/v1` when it has an API key\n(see `apiKeys`): `provider` names one of the providers, default `private`, and `maxFileSize` caps every upload, as\n`50 MB` (the default) or a number of bytes; a bucket's own limit can only be lower. `false` serves no `/api/sb/storage/v1`.",
|
|
3061
|
+
"anyOf": [
|
|
3062
|
+
{
|
|
3063
|
+
"const": false
|
|
3064
|
+
},
|
|
3065
|
+
{
|
|
3066
|
+
"type": "object",
|
|
3067
|
+
"properties": {
|
|
3068
|
+
"provider": {
|
|
3069
|
+
"anyOf": [
|
|
3070
|
+
{
|
|
3071
|
+
"type": "string"
|
|
3072
|
+
},
|
|
3073
|
+
{
|
|
3074
|
+
"$ref": "#/definitions/EnvValue"
|
|
3075
|
+
}
|
|
3076
|
+
]
|
|
3077
|
+
},
|
|
3078
|
+
"maxFileSize": {
|
|
3079
|
+
"anyOf": [
|
|
3080
|
+
{
|
|
3081
|
+
"type": "string"
|
|
3082
|
+
},
|
|
3083
|
+
{
|
|
3084
|
+
"type": "number"
|
|
3085
|
+
},
|
|
3086
|
+
{
|
|
3087
|
+
"$ref": "#/definitions/EnvValue"
|
|
3088
|
+
}
|
|
3089
|
+
]
|
|
3090
|
+
}
|
|
3091
|
+
},
|
|
3092
|
+
"additionalProperties": false
|
|
3093
|
+
},
|
|
3094
|
+
{
|
|
3095
|
+
"$ref": "#/definitions/EnvValue"
|
|
3096
|
+
}
|
|
3097
|
+
]
|
|
3098
|
+
},
|
|
3099
|
+
"providers": {
|
|
3100
|
+
"description": "Providers by name: `{ kind: 'local', dir }`, `{ kind: 's3', bucket }`, or `{ kind: 'custom' }`, the default export\nof `files/<name>.ts`. Name the role (`archive`), not the vendor.",
|
|
3101
|
+
"anyOf": [
|
|
3102
|
+
{
|
|
3103
|
+
"type": "object",
|
|
3104
|
+
"additionalProperties": {
|
|
3105
|
+
"anyOf": [
|
|
3106
|
+
{
|
|
3107
|
+
"type": "object",
|
|
3108
|
+
"properties": {
|
|
3109
|
+
"kind": {
|
|
3110
|
+
"anyOf": [
|
|
3111
|
+
{
|
|
3112
|
+
"const": "local"
|
|
3113
|
+
},
|
|
3114
|
+
{
|
|
3115
|
+
"$ref": "#/definitions/EnvValue"
|
|
3116
|
+
}
|
|
3117
|
+
]
|
|
3118
|
+
},
|
|
3119
|
+
"maxBytes": {
|
|
3120
|
+
"anyOf": [
|
|
3121
|
+
{
|
|
3122
|
+
"type": "string"
|
|
3123
|
+
},
|
|
3124
|
+
{
|
|
3125
|
+
"type": "number"
|
|
3126
|
+
},
|
|
3127
|
+
{
|
|
3128
|
+
"$ref": "#/definitions/EnvValue"
|
|
3129
|
+
}
|
|
3130
|
+
]
|
|
3131
|
+
},
|
|
3132
|
+
"maxFiles": {
|
|
3133
|
+
"anyOf": [
|
|
3134
|
+
{
|
|
3135
|
+
"type": "number"
|
|
3136
|
+
},
|
|
3137
|
+
{
|
|
3138
|
+
"$ref": "#/definitions/EnvValue"
|
|
3139
|
+
}
|
|
3140
|
+
]
|
|
3141
|
+
},
|
|
3142
|
+
"dir": {
|
|
3143
|
+
"description": "The folder the files live in, created when missing; relative to the working directory.",
|
|
3144
|
+
"anyOf": [
|
|
3145
|
+
{
|
|
3146
|
+
"type": "string"
|
|
3147
|
+
},
|
|
3148
|
+
{
|
|
3149
|
+
"$ref": "#/definitions/EnvValue"
|
|
3150
|
+
}
|
|
3151
|
+
]
|
|
3152
|
+
},
|
|
3153
|
+
"public": {
|
|
3154
|
+
"description": "Files anyone with the link may open, served without a signature.",
|
|
3155
|
+
"anyOf": [
|
|
3156
|
+
{
|
|
3157
|
+
"type": "boolean"
|
|
3158
|
+
},
|
|
3159
|
+
{
|
|
3160
|
+
"$ref": "#/definitions/EnvValue"
|
|
3161
|
+
}
|
|
3162
|
+
]
|
|
3163
|
+
},
|
|
3164
|
+
"publicUrl": {
|
|
3165
|
+
"description": "Where public files are linked from instead of the app's own `/api/files/<provider>`, such as a CDN in front of it.",
|
|
3166
|
+
"anyOf": [
|
|
3167
|
+
{
|
|
3168
|
+
"type": "string"
|
|
3169
|
+
},
|
|
3170
|
+
{
|
|
3171
|
+
"$ref": "#/definitions/EnvValue"
|
|
3172
|
+
}
|
|
3173
|
+
]
|
|
3174
|
+
},
|
|
3175
|
+
"retention": {
|
|
3176
|
+
"description": "How long bytes outlive their last reference; default `files.retention`, or 0 for a public provider.",
|
|
3177
|
+
"anyOf": [
|
|
3178
|
+
{
|
|
3179
|
+
"type": "string"
|
|
3180
|
+
},
|
|
3181
|
+
{
|
|
3182
|
+
"type": "number"
|
|
3183
|
+
},
|
|
3184
|
+
{
|
|
3185
|
+
"$ref": "#/definitions/EnvValue"
|
|
3186
|
+
}
|
|
3187
|
+
]
|
|
3188
|
+
}
|
|
3189
|
+
},
|
|
3190
|
+
"required": [
|
|
3191
|
+
"kind",
|
|
3192
|
+
"dir"
|
|
3193
|
+
],
|
|
3194
|
+
"additionalProperties": false
|
|
3195
|
+
},
|
|
3196
|
+
{
|
|
3197
|
+
"type": "object",
|
|
3198
|
+
"properties": {
|
|
3199
|
+
"kind": {
|
|
3200
|
+
"anyOf": [
|
|
3201
|
+
{
|
|
3202
|
+
"const": "s3"
|
|
3203
|
+
},
|
|
3204
|
+
{
|
|
3205
|
+
"$ref": "#/definitions/EnvValue"
|
|
3206
|
+
}
|
|
3207
|
+
]
|
|
3208
|
+
},
|
|
3209
|
+
"maxBytes": {
|
|
3210
|
+
"anyOf": [
|
|
3211
|
+
{
|
|
3212
|
+
"type": "string"
|
|
3213
|
+
},
|
|
3214
|
+
{
|
|
3215
|
+
"type": "number"
|
|
3216
|
+
},
|
|
3217
|
+
{
|
|
3218
|
+
"$ref": "#/definitions/EnvValue"
|
|
3219
|
+
}
|
|
3220
|
+
]
|
|
3221
|
+
},
|
|
3222
|
+
"maxFiles": {
|
|
3223
|
+
"anyOf": [
|
|
3224
|
+
{
|
|
3225
|
+
"type": "number"
|
|
3226
|
+
},
|
|
3227
|
+
{
|
|
3228
|
+
"$ref": "#/definitions/EnvValue"
|
|
3229
|
+
}
|
|
3230
|
+
]
|
|
3231
|
+
},
|
|
3232
|
+
"bucket": {
|
|
3233
|
+
"anyOf": [
|
|
3234
|
+
{
|
|
3235
|
+
"type": "string"
|
|
3236
|
+
},
|
|
3237
|
+
{
|
|
3238
|
+
"$ref": "#/definitions/EnvValue"
|
|
3239
|
+
}
|
|
3240
|
+
]
|
|
3241
|
+
},
|
|
3242
|
+
"prefix": {
|
|
3243
|
+
"description": "The folder in the bucket that holds this provider's files, such as `acme/private`; default the bucket's root.",
|
|
3244
|
+
"anyOf": [
|
|
3245
|
+
{
|
|
3246
|
+
"type": "string"
|
|
3247
|
+
},
|
|
3248
|
+
{
|
|
3249
|
+
"$ref": "#/definitions/EnvValue"
|
|
3250
|
+
}
|
|
3251
|
+
]
|
|
3252
|
+
},
|
|
3253
|
+
"endpoint": {
|
|
3254
|
+
"description": "The S3 API's address, such as `https://<account>.eu.r2.cloudflarestorage.com`; default AWS.",
|
|
3255
|
+
"anyOf": [
|
|
3256
|
+
{
|
|
3257
|
+
"type": "string"
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
"$ref": "#/definitions/EnvValue"
|
|
3261
|
+
}
|
|
3262
|
+
]
|
|
3263
|
+
},
|
|
3264
|
+
"region": {
|
|
3265
|
+
"description": "`auto` for R2, `fr-par` for Scaleway in Paris.",
|
|
3266
|
+
"anyOf": [
|
|
3267
|
+
{
|
|
3268
|
+
"type": "string"
|
|
3269
|
+
},
|
|
3270
|
+
{
|
|
3271
|
+
"$ref": "#/definitions/EnvValue"
|
|
3272
|
+
}
|
|
3273
|
+
]
|
|
3274
|
+
},
|
|
3275
|
+
"accessKeyId": {
|
|
3276
|
+
"description": "Default `S3_ACCESS_KEY_ID`, then `AWS_ACCESS_KEY_ID`, from the environment.",
|
|
3277
|
+
"anyOf": [
|
|
3278
|
+
{
|
|
3279
|
+
"type": "string"
|
|
3280
|
+
},
|
|
3281
|
+
{
|
|
3282
|
+
"$ref": "#/definitions/EnvValue"
|
|
3283
|
+
}
|
|
3284
|
+
]
|
|
3285
|
+
},
|
|
3286
|
+
"secretAccessKey": {
|
|
3287
|
+
"description": "Default `S3_SECRET_ACCESS_KEY`, then `AWS_SECRET_ACCESS_KEY`, from the environment.",
|
|
3288
|
+
"anyOf": [
|
|
3289
|
+
{
|
|
3290
|
+
"type": "string"
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"$ref": "#/definitions/EnvValue"
|
|
3294
|
+
}
|
|
3295
|
+
]
|
|
3296
|
+
},
|
|
3297
|
+
"public": {
|
|
3298
|
+
"description": "Files anyone with the link may open.",
|
|
3299
|
+
"anyOf": [
|
|
3300
|
+
{
|
|
3301
|
+
"type": "boolean"
|
|
3302
|
+
},
|
|
3303
|
+
{
|
|
3304
|
+
"$ref": "#/definitions/EnvValue"
|
|
3305
|
+
}
|
|
3306
|
+
]
|
|
3307
|
+
},
|
|
3308
|
+
"publicUrl": {
|
|
3309
|
+
"description": "The bucket's public address, such as an R2 custom domain; public files are linked from there, under `prefix`.",
|
|
3310
|
+
"anyOf": [
|
|
3311
|
+
{
|
|
3312
|
+
"type": "string"
|
|
3313
|
+
},
|
|
3314
|
+
{
|
|
3315
|
+
"$ref": "#/definitions/EnvValue"
|
|
3316
|
+
}
|
|
3317
|
+
]
|
|
3318
|
+
},
|
|
3319
|
+
"retention": {
|
|
3320
|
+
"description": "How long bytes outlive their last reference; default `files.retention`, or 0 for a public provider.",
|
|
3321
|
+
"anyOf": [
|
|
3322
|
+
{
|
|
3323
|
+
"type": "string"
|
|
3324
|
+
},
|
|
3325
|
+
{
|
|
3326
|
+
"type": "number"
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
"$ref": "#/definitions/EnvValue"
|
|
3330
|
+
}
|
|
3331
|
+
]
|
|
3332
|
+
}
|
|
3333
|
+
},
|
|
3334
|
+
"required": [
|
|
3335
|
+
"kind",
|
|
3336
|
+
"bucket"
|
|
3337
|
+
],
|
|
3338
|
+
"additionalProperties": false
|
|
3339
|
+
},
|
|
3340
|
+
{
|
|
3341
|
+
"type": "object",
|
|
3342
|
+
"properties": {
|
|
3343
|
+
"kind": {
|
|
3344
|
+
"anyOf": [
|
|
3345
|
+
{
|
|
3346
|
+
"const": "custom"
|
|
3347
|
+
},
|
|
3348
|
+
{
|
|
3349
|
+
"$ref": "#/definitions/EnvValue"
|
|
3350
|
+
}
|
|
3351
|
+
]
|
|
3352
|
+
}
|
|
3353
|
+
},
|
|
3354
|
+
"required": [
|
|
3355
|
+
"kind"
|
|
3356
|
+
],
|
|
3357
|
+
"additionalProperties": false
|
|
3358
|
+
},
|
|
3359
|
+
{
|
|
3360
|
+
"$ref": "#/definitions/EnvValue"
|
|
3361
|
+
}
|
|
3362
|
+
]
|
|
3363
|
+
}
|
|
3364
|
+
},
|
|
3365
|
+
{
|
|
3366
|
+
"$ref": "#/definitions/EnvValue"
|
|
3367
|
+
}
|
|
3368
|
+
]
|
|
3369
|
+
},
|
|
3370
|
+
"images": {
|
|
3371
|
+
"description": "The image library of image fields' variants and placeholders, by its package name, loaded when the app serves.",
|
|
3372
|
+
"anyOf": [
|
|
3373
|
+
{
|
|
3374
|
+
"const": "sharp"
|
|
3375
|
+
},
|
|
3376
|
+
{
|
|
3377
|
+
"$ref": "#/definitions/EnvValue"
|
|
3378
|
+
}
|
|
3379
|
+
]
|
|
3380
|
+
}
|
|
3381
|
+
},
|
|
3382
|
+
"additionalProperties": false
|
|
3383
|
+
},
|
|
3384
|
+
"EventsOptions": {
|
|
3385
|
+
"type": "object",
|
|
3386
|
+
"properties": {
|
|
3387
|
+
"schema": {
|
|
3388
|
+
"description": "The schema holding the outbox and the capture function, and the prefix of their transaction settings\n(`changes.actor`, `changes.capture`); default `changes`. Rename it when the database already has a schema by that name.",
|
|
3389
|
+
"anyOf": [
|
|
3390
|
+
{
|
|
3391
|
+
"type": "string"
|
|
3392
|
+
},
|
|
3393
|
+
{
|
|
3394
|
+
"$ref": "#/definitions/EnvValue"
|
|
3395
|
+
}
|
|
3396
|
+
]
|
|
3397
|
+
}
|
|
3398
|
+
},
|
|
3399
|
+
"additionalProperties": false
|
|
3400
|
+
},
|
|
3401
|
+
"HistoryOptions": {
|
|
3402
|
+
"type": "object",
|
|
3403
|
+
"properties": {
|
|
3404
|
+
"days": {
|
|
3405
|
+
"description": "Days a change is kept; a daily job deletes older ones. Kept forever when omitted.",
|
|
3406
|
+
"anyOf": [
|
|
3407
|
+
{
|
|
3408
|
+
"type": "number"
|
|
3409
|
+
},
|
|
3410
|
+
{
|
|
3411
|
+
"$ref": "#/definitions/EnvValue"
|
|
3412
|
+
}
|
|
3413
|
+
]
|
|
3414
|
+
}
|
|
3415
|
+
},
|
|
3416
|
+
"additionalProperties": false
|
|
3417
|
+
},
|
|
3418
|
+
"MobileConfig": {
|
|
3419
|
+
"type": "object",
|
|
3420
|
+
"properties": {
|
|
3421
|
+
"appId": {
|
|
3422
|
+
"description": "The app's id on both iOS and Android, such as `com.example.shop`: two or more dot-separated parts, each a letter then letters and digits.",
|
|
3423
|
+
"anyOf": [
|
|
3424
|
+
{
|
|
3425
|
+
"type": "string"
|
|
3426
|
+
},
|
|
3427
|
+
{
|
|
3428
|
+
"$ref": "#/definitions/EnvValue"
|
|
3429
|
+
}
|
|
3430
|
+
]
|
|
3431
|
+
},
|
|
3432
|
+
"plugins": {
|
|
3433
|
+
"description": "Extra native Capacitor plugins the app needs, as npm name → version range, such as `{ '@capacitor/camera': '^8.0.0' }`.",
|
|
3434
|
+
"anyOf": [
|
|
3435
|
+
{
|
|
3436
|
+
"type": "object",
|
|
3437
|
+
"additionalProperties": {
|
|
3438
|
+
"anyOf": [
|
|
3439
|
+
{
|
|
3440
|
+
"type": "string"
|
|
3441
|
+
},
|
|
3442
|
+
{
|
|
3443
|
+
"$ref": "#/definitions/EnvValue"
|
|
3444
|
+
}
|
|
3445
|
+
]
|
|
3446
|
+
}
|
|
3447
|
+
},
|
|
3448
|
+
{
|
|
3449
|
+
"$ref": "#/definitions/EnvValue"
|
|
3450
|
+
}
|
|
3451
|
+
]
|
|
3452
|
+
}
|
|
3453
|
+
},
|
|
3454
|
+
"required": [
|
|
3455
|
+
"appId"
|
|
3456
|
+
],
|
|
3457
|
+
"additionalProperties": false
|
|
3458
|
+
}
|
|
3459
|
+
}
|
|
3460
|
+
}
|