code-standards 7.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. code_standards-7.0.0.dist-info/METADATA +53 -0
  2. code_standards-7.0.0.dist-info/RECORD +99 -0
  3. code_standards-7.0.0.dist-info/WHEEL +4 -0
  4. code_standards-7.0.0.dist-info/entry_points.txt +3 -0
  5. code_standards-7.0.0.dist-info/licenses/LICENSE +21 -0
  6. sarj_standards/__init__.py +30 -0
  7. sarj_standards/__main__.py +5 -0
  8. sarj_standards/_meta.py +22 -0
  9. sarj_standards/api.py +890 -0
  10. sarj_standards/cli/__init__.py +0 -0
  11. sarj_standards/cli/main.py +2466 -0
  12. sarj_standards/configs/cli-reference.v1.json +1 -0
  13. sarj_standards/configs/doctor.config.json +22 -0
  14. sarj_standards/configs/eslint.application.mjs +1366 -0
  15. sarj_standards/configs/eslint.peers.json +44 -0
  16. sarj_standards/configs/eslint.strict.mjs +1060 -0
  17. sarj_standards/configs/markdownlint.strict.yaml +12 -0
  18. sarj_standards/configs/pyright.strict.json +96 -0
  19. sarj_standards/configs/ruff.application.toml +363 -0
  20. sarj_standards/configs/ruff.strict.toml +338 -0
  21. sarj_standards/configs/rule-inventory.v1.json +1 -0
  22. sarj_standards/configs/rule-ledger.json +846 -0
  23. sarj_standards/configs/rule-warning-levels.v1.json +1 -0
  24. sarj_standards/configs/taplo.strict.toml +14 -0
  25. sarj_standards/configs/yamllint.strict.yaml +25 -0
  26. sarj_standards/libs/__init__.py +0 -0
  27. sarj_standards/libs/adoption/__init__.py +0 -0
  28. sarj_standards/libs/adoption/configs.py +36 -0
  29. sarj_standards/libs/adoption/doctor.py +1346 -0
  30. sarj_standards/libs/adoption/exclusions.py +66 -0
  31. sarj_standards/libs/adoption/hooks.py +423 -0
  32. sarj_standards/libs/adoption/launcher.py +240 -0
  33. sarj_standards/libs/adoption/lifecycle.py +493 -0
  34. sarj_standards/libs/adoption/manifest.py +550 -0
  35. sarj_standards/libs/adoption/packagemanager.py +285 -0
  36. sarj_standards/libs/adoption/retired_suppressions.py +371 -0
  37. sarj_standards/libs/adoption/scaffold.py +1660 -0
  38. sarj_standards/libs/adoption/service.py +441 -0
  39. sarj_standards/libs/adoption/transaction.py +274 -0
  40. sarj_standards/libs/adoption/upgrade.py +516 -0
  41. sarj_standards/libs/adoption/uvtool.py +62 -0
  42. sarj_standards/libs/catalogs/__init__.py +9 -0
  43. sarj_standards/libs/catalogs/slack_automations.py +627 -0
  44. sarj_standards/libs/corpus/__init__.py +25 -0
  45. sarj_standards/libs/corpus/manifest.py +211 -0
  46. sarj_standards/libs/corpus/snapshot.py +222 -0
  47. sarj_standards/libs/diagnostics/__init__.py +65 -0
  48. sarj_standards/libs/diagnostics/analysis.schema.json +161 -0
  49. sarj_standards/libs/diagnostics/baseline.py +131 -0
  50. sarj_standards/libs/diagnostics/models.py +574 -0
  51. sarj_standards/libs/diagnostics/serialize.py +290 -0
  52. sarj_standards/libs/diagnostics/source.py +172 -0
  53. sarj_standards/libs/filesystem.py +11 -0
  54. sarj_standards/libs/linting/__init__.py +0 -0
  55. sarj_standards/libs/linting/analysis.py +422 -0
  56. sarj_standards/libs/linting/external.py +1454 -0
  57. sarj_standards/libs/linting/library_policy.py +688 -0
  58. sarj_standards/libs/linting/policy.py +152 -0
  59. sarj_standards/libs/linting/runner.py +442 -0
  60. sarj_standards/libs/linting/textlint.py +1605 -0
  61. sarj_standards/libs/release/__init__.py +98 -0
  62. sarj_standards/libs/release/_values.py +24 -0
  63. sarj_standards/libs/release/artifacts.py +191 -0
  64. sarj_standards/libs/release/causality.py +80 -0
  65. sarj_standards/libs/release/changes.py +48 -0
  66. sarj_standards/libs/release/process.py +128 -0
  67. sarj_standards/libs/release/publish.py +85 -0
  68. sarj_standards/libs/release/registry.py +271 -0
  69. sarj_standards/libs/release/release_age.py +218 -0
  70. sarj_standards/libs/release/rollout.py +1163 -0
  71. sarj_standards/libs/release/tags.py +373 -0
  72. sarj_standards/libs/release/typescript.py +191 -0
  73. sarj_standards/libs/repository/__init__.py +0 -0
  74. sarj_standards/libs/repository/cli_reference_artifact.py +324 -0
  75. sarj_standards/libs/repository/comment_corpus.py +536 -0
  76. sarj_standards/libs/repository/config_generation.py +146 -0
  77. sarj_standards/libs/repository/docs.py +347 -0
  78. sarj_standards/libs/repository/hooks.py +118 -0
  79. sarj_standards/libs/repository/ledger.py +99 -0
  80. sarj_standards/libs/repository/repository.py +744 -0
  81. sarj_standards/libs/repository/rule_authoring.py +246 -0
  82. sarj_standards/libs/repository/rule_catalog_artifact.py +479 -0
  83. sarj_standards/libs/repository/rule_changes.py +318 -0
  84. sarj_standards/libs/repository/rule_inventory_artifact.py +142 -0
  85. sarj_standards/libs/repository/rule_lifecycle.py +167 -0
  86. sarj_standards/libs/repository/rule_maintenance.py +225 -0
  87. sarj_standards/libs/rules/__init__.py +74 -0
  88. sarj_standards/libs/rules/catalog.py +145 -0
  89. sarj_standards/libs/rules/contracts.py +382 -0
  90. sarj_standards/libs/rules/corpus_runner.py +365 -0
  91. sarj_standards/libs/rules/evaluation.py +177 -0
  92. sarj_standards/libs/setup/__init__.py +4 -0
  93. sarj_standards/libs/setup/repository.py +40 -0
  94. sarj_standards/py.typed +0 -0
  95. sarj_standards/schemas/__init__.py +4 -0
  96. sarj_standards/schemas/_paths.py +7 -0
  97. sarj_standards/schemas/rule-catalog.v1.json +1 -0
  98. sarj_standards/schemas/rule-catalog.v1.schema.json +112 -0
  99. sarj_standards/schemas/slack-automations.v1.schema.json +1751 -0
@@ -0,0 +1,1751 @@
1
+ {
2
+ "$defs": {
3
+ "AppConfiguration": {
4
+ "discriminator": {
5
+ "mapping": {
6
+ "external": "#/$defs/ExternalConfiguration",
7
+ "repository-manifest": "#/$defs/RepositoryManifestConfiguration"
8
+ },
9
+ "propertyName": "kind"
10
+ },
11
+ "oneOf": [
12
+ {
13
+ "$ref": "#/$defs/RepositoryManifestConfiguration"
14
+ },
15
+ {
16
+ "$ref": "#/$defs/ExternalConfiguration"
17
+ }
18
+ ]
19
+ },
20
+ "BotApp": {
21
+ "discriminator": {
22
+ "mapping": {
23
+ "dedicated": "#/$defs/DedicatedBotApp",
24
+ "shared": "#/$defs/SharedBotApp"
25
+ },
26
+ "propertyName": "identityKind"
27
+ },
28
+ "oneOf": [
29
+ {
30
+ "$ref": "#/$defs/DedicatedBotApp"
31
+ },
32
+ {
33
+ "$ref": "#/$defs/SharedBotApp"
34
+ }
35
+ ]
36
+ },
37
+ "BotCapability": {
38
+ "additionalProperties": false,
39
+ "properties": {
40
+ "connectedSystemIds": {
41
+ "items": {
42
+ "maxLength": 80,
43
+ "minLength": 1,
44
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
45
+ "type": "string"
46
+ },
47
+ "minItems": 1,
48
+ "title": "Connectedsystemids",
49
+ "type": "array",
50
+ "uniqueItems": true
51
+ },
52
+ "displayName": {
53
+ "allOf": [
54
+ {
55
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
56
+ },
57
+ {
58
+ "not": {
59
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
60
+ }
61
+ },
62
+ {
63
+ "not": {
64
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
65
+ }
66
+ },
67
+ {
68
+ "not": {
69
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
70
+ }
71
+ },
72
+ {
73
+ "not": {
74
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
75
+ }
76
+ },
77
+ {
78
+ "not": {
79
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
80
+ }
81
+ },
82
+ {
83
+ "not": {
84
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
85
+ }
86
+ }
87
+ ],
88
+ "maxLength": 80,
89
+ "minLength": 1,
90
+ "title": "Displayname",
91
+ "type": "string"
92
+ },
93
+ "id": {
94
+ "maxLength": 80,
95
+ "minLength": 1,
96
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
97
+ "title": "Id",
98
+ "type": "string"
99
+ },
100
+ "personaIds": {
101
+ "items": {
102
+ "maxLength": 80,
103
+ "minLength": 1,
104
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
105
+ "type": "string"
106
+ },
107
+ "minItems": 1,
108
+ "title": "Personaids",
109
+ "type": "array",
110
+ "uniqueItems": true
111
+ },
112
+ "summary": {
113
+ "allOf": [
114
+ {
115
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
116
+ },
117
+ {
118
+ "not": {
119
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
120
+ }
121
+ },
122
+ {
123
+ "not": {
124
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
125
+ }
126
+ },
127
+ {
128
+ "not": {
129
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
130
+ }
131
+ },
132
+ {
133
+ "not": {
134
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
135
+ }
136
+ },
137
+ {
138
+ "not": {
139
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
140
+ }
141
+ },
142
+ {
143
+ "not": {
144
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
145
+ }
146
+ }
147
+ ],
148
+ "maxLength": 320,
149
+ "minLength": 1,
150
+ "title": "Summary",
151
+ "type": "string"
152
+ },
153
+ "triggers": {
154
+ "items": {
155
+ "$ref": "#/$defs/Trigger"
156
+ },
157
+ "minItems": 1,
158
+ "title": "Triggers",
159
+ "type": "array",
160
+ "uniqueItems": true
161
+ }
162
+ },
163
+ "required": [
164
+ "id",
165
+ "displayName",
166
+ "summary",
167
+ "connectedSystemIds",
168
+ "triggers",
169
+ "personaIds"
170
+ ],
171
+ "title": "BotCapability",
172
+ "type": "object"
173
+ },
174
+ "Cadence": {
175
+ "additionalProperties": false,
176
+ "properties": {
177
+ "kind": {
178
+ "enum": [
179
+ "hourly",
180
+ "daily",
181
+ "weekly",
182
+ "biweekly",
183
+ "periodic"
184
+ ],
185
+ "title": "Kind",
186
+ "type": "string"
187
+ }
188
+ },
189
+ "required": [
190
+ "kind"
191
+ ],
192
+ "title": "Cadence",
193
+ "type": "object"
194
+ },
195
+ "DedicatedBotApp": {
196
+ "additionalProperties": false,
197
+ "properties": {
198
+ "capabilities": {
199
+ "items": {
200
+ "$ref": "#/$defs/BotCapability"
201
+ },
202
+ "minItems": 1,
203
+ "title": "Capabilities",
204
+ "type": "array",
205
+ "uniqueItems": true
206
+ },
207
+ "configuration": {
208
+ "$ref": "#/$defs/AppConfiguration"
209
+ },
210
+ "displayName": {
211
+ "allOf": [
212
+ {
213
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
214
+ },
215
+ {
216
+ "not": {
217
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
218
+ }
219
+ },
220
+ {
221
+ "not": {
222
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
223
+ }
224
+ },
225
+ {
226
+ "not": {
227
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
228
+ }
229
+ },
230
+ {
231
+ "not": {
232
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
233
+ }
234
+ },
235
+ {
236
+ "not": {
237
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
238
+ }
239
+ },
240
+ {
241
+ "not": {
242
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
243
+ }
244
+ }
245
+ ],
246
+ "maxLength": 80,
247
+ "minLength": 1,
248
+ "title": "Displayname",
249
+ "type": "string"
250
+ },
251
+ "id": {
252
+ "maxLength": 80,
253
+ "minLength": 1,
254
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
255
+ "title": "Id",
256
+ "type": "string"
257
+ },
258
+ "identityKind": {
259
+ "const": "dedicated",
260
+ "title": "Identitykind",
261
+ "type": "string"
262
+ },
263
+ "kind": {
264
+ "const": "bot-app",
265
+ "title": "Kind",
266
+ "type": "string"
267
+ },
268
+ "personas": {
269
+ "maxItems": 1,
270
+ "minItems": 1,
271
+ "prefixItems": [
272
+ {
273
+ "$ref": "#/$defs/Persona"
274
+ }
275
+ ],
276
+ "title": "Personas",
277
+ "type": "array"
278
+ },
279
+ "sourcePaths": {
280
+ "items": {
281
+ "pattern": "^(?!\\.?\\.?$)(?!\\.?\\.?/)(?!.*//)(?!.*(?:/\\.?\\.?)(?:/|$))[^/]+(?:/[^/]+)*$",
282
+ "type": "string"
283
+ },
284
+ "minItems": 1,
285
+ "title": "Sourcepaths",
286
+ "type": "array",
287
+ "uniqueItems": true
288
+ },
289
+ "status": {
290
+ "enum": [
291
+ "active",
292
+ "dark",
293
+ "retired"
294
+ ],
295
+ "title": "Status",
296
+ "type": "string"
297
+ },
298
+ "summary": {
299
+ "allOf": [
300
+ {
301
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
302
+ },
303
+ {
304
+ "not": {
305
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
306
+ }
307
+ },
308
+ {
309
+ "not": {
310
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
311
+ }
312
+ },
313
+ {
314
+ "not": {
315
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
316
+ }
317
+ },
318
+ {
319
+ "not": {
320
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
321
+ }
322
+ },
323
+ {
324
+ "not": {
325
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
326
+ }
327
+ },
328
+ {
329
+ "not": {
330
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
331
+ }
332
+ }
333
+ ],
334
+ "maxLength": 320,
335
+ "minLength": 1,
336
+ "title": "Summary",
337
+ "type": "string"
338
+ }
339
+ },
340
+ "required": [
341
+ "id",
342
+ "displayName",
343
+ "summary",
344
+ "status",
345
+ "sourcePaths",
346
+ "kind",
347
+ "configuration",
348
+ "capabilities",
349
+ "personas",
350
+ "identityKind"
351
+ ],
352
+ "title": "DedicatedBotApp",
353
+ "type": "object"
354
+ },
355
+ "ExternalConfiguration": {
356
+ "additionalProperties": false,
357
+ "properties": {
358
+ "kind": {
359
+ "const": "external",
360
+ "title": "Kind",
361
+ "type": "string"
362
+ }
363
+ },
364
+ "required": [
365
+ "kind"
366
+ ],
367
+ "title": "ExternalConfiguration",
368
+ "type": "object"
369
+ },
370
+ "ExternalWebhookTrigger": {
371
+ "additionalProperties": false,
372
+ "properties": {
373
+ "displayName": {
374
+ "allOf": [
375
+ {
376
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
377
+ },
378
+ {
379
+ "not": {
380
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
381
+ }
382
+ },
383
+ {
384
+ "not": {
385
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
386
+ }
387
+ },
388
+ {
389
+ "not": {
390
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
391
+ }
392
+ },
393
+ {
394
+ "not": {
395
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
396
+ }
397
+ },
398
+ {
399
+ "not": {
400
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
401
+ }
402
+ },
403
+ {
404
+ "not": {
405
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
406
+ }
407
+ }
408
+ ],
409
+ "maxLength": 80,
410
+ "minLength": 1,
411
+ "title": "Displayname",
412
+ "type": "string"
413
+ },
414
+ "id": {
415
+ "maxLength": 80,
416
+ "minLength": 1,
417
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
418
+ "title": "Id",
419
+ "type": "string"
420
+ },
421
+ "kind": {
422
+ "const": "external-webhook",
423
+ "title": "Kind",
424
+ "type": "string"
425
+ },
426
+ "sourceSystemId": {
427
+ "maxLength": 80,
428
+ "minLength": 1,
429
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
430
+ "title": "Sourcesystemid",
431
+ "type": "string"
432
+ }
433
+ },
434
+ "required": [
435
+ "id",
436
+ "displayName",
437
+ "kind",
438
+ "sourceSystemId"
439
+ ],
440
+ "title": "ExternalWebhookTrigger",
441
+ "type": "object"
442
+ },
443
+ "Integration": {
444
+ "additionalProperties": false,
445
+ "properties": {
446
+ "authorization": {
447
+ "$ref": "#/$defs/UserTokenAuthorization"
448
+ },
449
+ "capabilities": {
450
+ "items": {
451
+ "$ref": "#/$defs/IntegrationCapability"
452
+ },
453
+ "minItems": 1,
454
+ "title": "Capabilities",
455
+ "type": "array",
456
+ "uniqueItems": true
457
+ },
458
+ "consumerBotAppIds": {
459
+ "items": {
460
+ "maxLength": 80,
461
+ "minLength": 1,
462
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
463
+ "type": "string"
464
+ },
465
+ "title": "Consumerbotappids",
466
+ "type": "array",
467
+ "uniqueItems": true
468
+ },
469
+ "displayName": {
470
+ "allOf": [
471
+ {
472
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
473
+ },
474
+ {
475
+ "not": {
476
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
477
+ }
478
+ },
479
+ {
480
+ "not": {
481
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
482
+ }
483
+ },
484
+ {
485
+ "not": {
486
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
487
+ }
488
+ },
489
+ {
490
+ "not": {
491
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
492
+ }
493
+ },
494
+ {
495
+ "not": {
496
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
497
+ }
498
+ },
499
+ {
500
+ "not": {
501
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
502
+ }
503
+ }
504
+ ],
505
+ "maxLength": 80,
506
+ "minLength": 1,
507
+ "title": "Displayname",
508
+ "type": "string"
509
+ },
510
+ "id": {
511
+ "maxLength": 80,
512
+ "minLength": 1,
513
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
514
+ "title": "Id",
515
+ "type": "string"
516
+ },
517
+ "kind": {
518
+ "const": "integration",
519
+ "title": "Kind",
520
+ "type": "string"
521
+ },
522
+ "sourcePaths": {
523
+ "items": {
524
+ "pattern": "^(?!\\.?\\.?$)(?!\\.?\\.?/)(?!.*//)(?!.*(?:/\\.?\\.?)(?:/|$))[^/]+(?:/[^/]+)*$",
525
+ "type": "string"
526
+ },
527
+ "minItems": 1,
528
+ "title": "Sourcepaths",
529
+ "type": "array",
530
+ "uniqueItems": true
531
+ },
532
+ "status": {
533
+ "enum": [
534
+ "active",
535
+ "dark",
536
+ "retired"
537
+ ],
538
+ "title": "Status",
539
+ "type": "string"
540
+ },
541
+ "summary": {
542
+ "allOf": [
543
+ {
544
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
545
+ },
546
+ {
547
+ "not": {
548
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
549
+ }
550
+ },
551
+ {
552
+ "not": {
553
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
554
+ }
555
+ },
556
+ {
557
+ "not": {
558
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
559
+ }
560
+ },
561
+ {
562
+ "not": {
563
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
564
+ }
565
+ },
566
+ {
567
+ "not": {
568
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
569
+ }
570
+ },
571
+ {
572
+ "not": {
573
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
574
+ }
575
+ }
576
+ ],
577
+ "maxLength": 320,
578
+ "minLength": 1,
579
+ "title": "Summary",
580
+ "type": "string"
581
+ }
582
+ },
583
+ "required": [
584
+ "id",
585
+ "displayName",
586
+ "summary",
587
+ "status",
588
+ "sourcePaths",
589
+ "kind",
590
+ "authorization",
591
+ "capabilities",
592
+ "consumerBotAppIds"
593
+ ],
594
+ "title": "Integration",
595
+ "type": "object"
596
+ },
597
+ "IntegrationCapability": {
598
+ "additionalProperties": false,
599
+ "properties": {
600
+ "connectedSystemIds": {
601
+ "items": {
602
+ "maxLength": 80,
603
+ "minLength": 1,
604
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
605
+ "type": "string"
606
+ },
607
+ "minItems": 1,
608
+ "title": "Connectedsystemids",
609
+ "type": "array",
610
+ "uniqueItems": true
611
+ },
612
+ "displayName": {
613
+ "allOf": [
614
+ {
615
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
616
+ },
617
+ {
618
+ "not": {
619
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
620
+ }
621
+ },
622
+ {
623
+ "not": {
624
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
625
+ }
626
+ },
627
+ {
628
+ "not": {
629
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
630
+ }
631
+ },
632
+ {
633
+ "not": {
634
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
635
+ }
636
+ },
637
+ {
638
+ "not": {
639
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
640
+ }
641
+ },
642
+ {
643
+ "not": {
644
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
645
+ }
646
+ }
647
+ ],
648
+ "maxLength": 80,
649
+ "minLength": 1,
650
+ "title": "Displayname",
651
+ "type": "string"
652
+ },
653
+ "id": {
654
+ "maxLength": 80,
655
+ "minLength": 1,
656
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
657
+ "title": "Id",
658
+ "type": "string"
659
+ },
660
+ "summary": {
661
+ "allOf": [
662
+ {
663
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
664
+ },
665
+ {
666
+ "not": {
667
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
668
+ }
669
+ },
670
+ {
671
+ "not": {
672
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
673
+ }
674
+ },
675
+ {
676
+ "not": {
677
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
678
+ }
679
+ },
680
+ {
681
+ "not": {
682
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
683
+ }
684
+ },
685
+ {
686
+ "not": {
687
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
688
+ }
689
+ },
690
+ {
691
+ "not": {
692
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
693
+ }
694
+ }
695
+ ],
696
+ "maxLength": 320,
697
+ "minLength": 1,
698
+ "title": "Summary",
699
+ "type": "string"
700
+ },
701
+ "triggers": {
702
+ "items": {
703
+ "$ref": "#/$defs/Trigger"
704
+ },
705
+ "minItems": 1,
706
+ "title": "Triggers",
707
+ "type": "array",
708
+ "uniqueItems": true
709
+ }
710
+ },
711
+ "required": [
712
+ "id",
713
+ "displayName",
714
+ "summary",
715
+ "connectedSystemIds",
716
+ "triggers"
717
+ ],
718
+ "title": "IntegrationCapability",
719
+ "type": "object"
720
+ },
721
+ "IntegrationPrivilege": {
722
+ "enum": [
723
+ "channels:read",
724
+ "channels:write",
725
+ "profiles:write",
726
+ "user-groups:read",
727
+ "user-groups:write",
728
+ "workspace-members:read"
729
+ ],
730
+ "type": "string"
731
+ },
732
+ "InternalEventTrigger": {
733
+ "additionalProperties": false,
734
+ "properties": {
735
+ "displayName": {
736
+ "allOf": [
737
+ {
738
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
739
+ },
740
+ {
741
+ "not": {
742
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
743
+ }
744
+ },
745
+ {
746
+ "not": {
747
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
748
+ }
749
+ },
750
+ {
751
+ "not": {
752
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
753
+ }
754
+ },
755
+ {
756
+ "not": {
757
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
758
+ }
759
+ },
760
+ {
761
+ "not": {
762
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
763
+ }
764
+ },
765
+ {
766
+ "not": {
767
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
768
+ }
769
+ }
770
+ ],
771
+ "maxLength": 80,
772
+ "minLength": 1,
773
+ "title": "Displayname",
774
+ "type": "string"
775
+ },
776
+ "eventName": {
777
+ "maxLength": 80,
778
+ "minLength": 1,
779
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
780
+ "title": "Eventname",
781
+ "type": "string"
782
+ },
783
+ "id": {
784
+ "maxLength": 80,
785
+ "minLength": 1,
786
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
787
+ "title": "Id",
788
+ "type": "string"
789
+ },
790
+ "kind": {
791
+ "const": "internal-event",
792
+ "title": "Kind",
793
+ "type": "string"
794
+ }
795
+ },
796
+ "required": [
797
+ "id",
798
+ "displayName",
799
+ "kind",
800
+ "eventName"
801
+ ],
802
+ "title": "InternalEventTrigger",
803
+ "type": "object"
804
+ },
805
+ "ManualTrigger": {
806
+ "additionalProperties": false,
807
+ "properties": {
808
+ "displayName": {
809
+ "allOf": [
810
+ {
811
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
812
+ },
813
+ {
814
+ "not": {
815
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
816
+ }
817
+ },
818
+ {
819
+ "not": {
820
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
821
+ }
822
+ },
823
+ {
824
+ "not": {
825
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
826
+ }
827
+ },
828
+ {
829
+ "not": {
830
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
831
+ }
832
+ },
833
+ {
834
+ "not": {
835
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
836
+ }
837
+ },
838
+ {
839
+ "not": {
840
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
841
+ }
842
+ }
843
+ ],
844
+ "maxLength": 80,
845
+ "minLength": 1,
846
+ "title": "Displayname",
847
+ "type": "string"
848
+ },
849
+ "id": {
850
+ "maxLength": 80,
851
+ "minLength": 1,
852
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
853
+ "title": "Id",
854
+ "type": "string"
855
+ },
856
+ "kind": {
857
+ "const": "manual",
858
+ "title": "Kind",
859
+ "type": "string"
860
+ },
861
+ "mode": {
862
+ "enum": [
863
+ "operator",
864
+ "test"
865
+ ],
866
+ "title": "Mode",
867
+ "type": "string"
868
+ }
869
+ },
870
+ "required": [
871
+ "id",
872
+ "displayName",
873
+ "kind",
874
+ "mode"
875
+ ],
876
+ "title": "ManualTrigger",
877
+ "type": "object"
878
+ },
879
+ "Persona": {
880
+ "additionalProperties": false,
881
+ "properties": {
882
+ "displayName": {
883
+ "allOf": [
884
+ {
885
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
886
+ },
887
+ {
888
+ "not": {
889
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
890
+ }
891
+ },
892
+ {
893
+ "not": {
894
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
895
+ }
896
+ },
897
+ {
898
+ "not": {
899
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
900
+ }
901
+ },
902
+ {
903
+ "not": {
904
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
905
+ }
906
+ },
907
+ {
908
+ "not": {
909
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
910
+ }
911
+ },
912
+ {
913
+ "not": {
914
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
915
+ }
916
+ }
917
+ ],
918
+ "maxLength": 80,
919
+ "minLength": 1,
920
+ "title": "Displayname",
921
+ "type": "string"
922
+ },
923
+ "id": {
924
+ "maxLength": 80,
925
+ "minLength": 1,
926
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
927
+ "title": "Id",
928
+ "type": "string"
929
+ },
930
+ "summary": {
931
+ "allOf": [
932
+ {
933
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
934
+ },
935
+ {
936
+ "not": {
937
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
938
+ }
939
+ },
940
+ {
941
+ "not": {
942
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
943
+ }
944
+ },
945
+ {
946
+ "not": {
947
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
948
+ }
949
+ },
950
+ {
951
+ "not": {
952
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
953
+ }
954
+ },
955
+ {
956
+ "not": {
957
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
958
+ }
959
+ },
960
+ {
961
+ "not": {
962
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
963
+ }
964
+ }
965
+ ],
966
+ "maxLength": 320,
967
+ "minLength": 1,
968
+ "title": "Summary",
969
+ "type": "string"
970
+ }
971
+ },
972
+ "required": [
973
+ "id",
974
+ "displayName",
975
+ "summary"
976
+ ],
977
+ "title": "Persona",
978
+ "type": "object"
979
+ },
980
+ "ReadPrivilege": {
981
+ "enum": [
982
+ "channels:read",
983
+ "user-groups:read",
984
+ "workspace-members:read"
985
+ ],
986
+ "type": "string"
987
+ },
988
+ "ReadUserTokenAuthorization": {
989
+ "additionalProperties": false,
990
+ "properties": {
991
+ "authority": {
992
+ "const": "read",
993
+ "title": "Authority",
994
+ "type": "string"
995
+ },
996
+ "kind": {
997
+ "const": "user-token",
998
+ "title": "Kind",
999
+ "type": "string"
1000
+ },
1001
+ "privileges": {
1002
+ "items": {
1003
+ "$ref": "#/$defs/ReadPrivilege"
1004
+ },
1005
+ "minItems": 1,
1006
+ "title": "Privileges",
1007
+ "type": "array",
1008
+ "uniqueItems": true
1009
+ }
1010
+ },
1011
+ "required": [
1012
+ "kind",
1013
+ "authority",
1014
+ "privileges"
1015
+ ],
1016
+ "title": "ReadUserTokenAuthorization",
1017
+ "type": "object"
1018
+ },
1019
+ "RepositoryManifestConfiguration": {
1020
+ "additionalProperties": false,
1021
+ "properties": {
1022
+ "kind": {
1023
+ "const": "repository-manifest",
1024
+ "title": "Kind",
1025
+ "type": "string"
1026
+ },
1027
+ "manifestPath": {
1028
+ "pattern": "^(?!\\.?\\.?$)(?!\\.?\\.?/)(?!.*//)(?!.*(?:/\\.?\\.?)(?:/|$))[^/]+(?:/[^/]+)*$",
1029
+ "title": "Manifestpath",
1030
+ "type": "string"
1031
+ }
1032
+ },
1033
+ "required": [
1034
+ "kind",
1035
+ "manifestPath"
1036
+ ],
1037
+ "title": "RepositoryManifestConfiguration",
1038
+ "type": "object"
1039
+ },
1040
+ "ScheduleTrigger": {
1041
+ "additionalProperties": false,
1042
+ "properties": {
1043
+ "cadence": {
1044
+ "$ref": "#/$defs/Cadence"
1045
+ },
1046
+ "displayName": {
1047
+ "allOf": [
1048
+ {
1049
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1050
+ },
1051
+ {
1052
+ "not": {
1053
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1054
+ }
1055
+ },
1056
+ {
1057
+ "not": {
1058
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1059
+ }
1060
+ },
1061
+ {
1062
+ "not": {
1063
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1064
+ }
1065
+ },
1066
+ {
1067
+ "not": {
1068
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1069
+ }
1070
+ },
1071
+ {
1072
+ "not": {
1073
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1074
+ }
1075
+ },
1076
+ {
1077
+ "not": {
1078
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1079
+ }
1080
+ }
1081
+ ],
1082
+ "maxLength": 80,
1083
+ "minLength": 1,
1084
+ "title": "Displayname",
1085
+ "type": "string"
1086
+ },
1087
+ "id": {
1088
+ "maxLength": 80,
1089
+ "minLength": 1,
1090
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1091
+ "title": "Id",
1092
+ "type": "string"
1093
+ },
1094
+ "kind": {
1095
+ "const": "schedule",
1096
+ "title": "Kind",
1097
+ "type": "string"
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "id",
1102
+ "displayName",
1103
+ "kind",
1104
+ "cadence"
1105
+ ],
1106
+ "title": "ScheduleTrigger",
1107
+ "type": "object"
1108
+ },
1109
+ "SharedBotApp": {
1110
+ "additionalProperties": false,
1111
+ "properties": {
1112
+ "capabilities": {
1113
+ "items": {
1114
+ "$ref": "#/$defs/BotCapability"
1115
+ },
1116
+ "minItems": 1,
1117
+ "title": "Capabilities",
1118
+ "type": "array",
1119
+ "uniqueItems": true
1120
+ },
1121
+ "configuration": {
1122
+ "$ref": "#/$defs/AppConfiguration"
1123
+ },
1124
+ "displayName": {
1125
+ "allOf": [
1126
+ {
1127
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1128
+ },
1129
+ {
1130
+ "not": {
1131
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1132
+ }
1133
+ },
1134
+ {
1135
+ "not": {
1136
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1137
+ }
1138
+ },
1139
+ {
1140
+ "not": {
1141
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1142
+ }
1143
+ },
1144
+ {
1145
+ "not": {
1146
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1147
+ }
1148
+ },
1149
+ {
1150
+ "not": {
1151
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1152
+ }
1153
+ },
1154
+ {
1155
+ "not": {
1156
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1157
+ }
1158
+ }
1159
+ ],
1160
+ "maxLength": 80,
1161
+ "minLength": 1,
1162
+ "title": "Displayname",
1163
+ "type": "string"
1164
+ },
1165
+ "id": {
1166
+ "maxLength": 80,
1167
+ "minLength": 1,
1168
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1169
+ "title": "Id",
1170
+ "type": "string"
1171
+ },
1172
+ "identityKind": {
1173
+ "const": "shared",
1174
+ "title": "Identitykind",
1175
+ "type": "string"
1176
+ },
1177
+ "kind": {
1178
+ "const": "bot-app",
1179
+ "title": "Kind",
1180
+ "type": "string"
1181
+ },
1182
+ "personas": {
1183
+ "items": {
1184
+ "$ref": "#/$defs/Persona"
1185
+ },
1186
+ "minItems": 2,
1187
+ "title": "Personas",
1188
+ "type": "array"
1189
+ },
1190
+ "sourcePaths": {
1191
+ "items": {
1192
+ "pattern": "^(?!\\.?\\.?$)(?!\\.?\\.?/)(?!.*//)(?!.*(?:/\\.?\\.?)(?:/|$))[^/]+(?:/[^/]+)*$",
1193
+ "type": "string"
1194
+ },
1195
+ "minItems": 1,
1196
+ "title": "Sourcepaths",
1197
+ "type": "array",
1198
+ "uniqueItems": true
1199
+ },
1200
+ "status": {
1201
+ "enum": [
1202
+ "active",
1203
+ "dark",
1204
+ "retired"
1205
+ ],
1206
+ "title": "Status",
1207
+ "type": "string"
1208
+ },
1209
+ "summary": {
1210
+ "allOf": [
1211
+ {
1212
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1213
+ },
1214
+ {
1215
+ "not": {
1216
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1217
+ }
1218
+ },
1219
+ {
1220
+ "not": {
1221
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1222
+ }
1223
+ },
1224
+ {
1225
+ "not": {
1226
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1227
+ }
1228
+ },
1229
+ {
1230
+ "not": {
1231
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1232
+ }
1233
+ },
1234
+ {
1235
+ "not": {
1236
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1237
+ }
1238
+ },
1239
+ {
1240
+ "not": {
1241
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1242
+ }
1243
+ }
1244
+ ],
1245
+ "maxLength": 320,
1246
+ "minLength": 1,
1247
+ "title": "Summary",
1248
+ "type": "string"
1249
+ }
1250
+ },
1251
+ "required": [
1252
+ "id",
1253
+ "displayName",
1254
+ "summary",
1255
+ "status",
1256
+ "sourcePaths",
1257
+ "kind",
1258
+ "configuration",
1259
+ "capabilities",
1260
+ "personas",
1261
+ "identityKind"
1262
+ ],
1263
+ "title": "SharedBotApp",
1264
+ "type": "object"
1265
+ },
1266
+ "SlackEventTrigger": {
1267
+ "additionalProperties": false,
1268
+ "properties": {
1269
+ "displayName": {
1270
+ "allOf": [
1271
+ {
1272
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1273
+ },
1274
+ {
1275
+ "not": {
1276
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1277
+ }
1278
+ },
1279
+ {
1280
+ "not": {
1281
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1282
+ }
1283
+ },
1284
+ {
1285
+ "not": {
1286
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1287
+ }
1288
+ },
1289
+ {
1290
+ "not": {
1291
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1292
+ }
1293
+ },
1294
+ {
1295
+ "not": {
1296
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1297
+ }
1298
+ },
1299
+ {
1300
+ "not": {
1301
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1302
+ }
1303
+ }
1304
+ ],
1305
+ "maxLength": 80,
1306
+ "minLength": 1,
1307
+ "title": "Displayname",
1308
+ "type": "string"
1309
+ },
1310
+ "eventTypes": {
1311
+ "items": {
1312
+ "allOf": [
1313
+ {
1314
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1315
+ },
1316
+ {
1317
+ "not": {
1318
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1319
+ }
1320
+ },
1321
+ {
1322
+ "not": {
1323
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1324
+ }
1325
+ },
1326
+ {
1327
+ "not": {
1328
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1329
+ }
1330
+ },
1331
+ {
1332
+ "not": {
1333
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1334
+ }
1335
+ },
1336
+ {
1337
+ "not": {
1338
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1339
+ }
1340
+ },
1341
+ {
1342
+ "not": {
1343
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1344
+ }
1345
+ }
1346
+ ],
1347
+ "maxLength": 160,
1348
+ "minLength": 1,
1349
+ "type": "string"
1350
+ },
1351
+ "minItems": 1,
1352
+ "title": "Eventtypes",
1353
+ "type": "array",
1354
+ "uniqueItems": true
1355
+ },
1356
+ "id": {
1357
+ "maxLength": 80,
1358
+ "minLength": 1,
1359
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1360
+ "title": "Id",
1361
+ "type": "string"
1362
+ },
1363
+ "kind": {
1364
+ "const": "slack-event",
1365
+ "title": "Kind",
1366
+ "type": "string"
1367
+ }
1368
+ },
1369
+ "required": [
1370
+ "id",
1371
+ "displayName",
1372
+ "kind",
1373
+ "eventTypes"
1374
+ ],
1375
+ "title": "SlackEventTrigger",
1376
+ "type": "object"
1377
+ },
1378
+ "SlackInteractionTrigger": {
1379
+ "additionalProperties": false,
1380
+ "properties": {
1381
+ "displayName": {
1382
+ "allOf": [
1383
+ {
1384
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1385
+ },
1386
+ {
1387
+ "not": {
1388
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1389
+ }
1390
+ },
1391
+ {
1392
+ "not": {
1393
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1394
+ }
1395
+ },
1396
+ {
1397
+ "not": {
1398
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1399
+ }
1400
+ },
1401
+ {
1402
+ "not": {
1403
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1404
+ }
1405
+ },
1406
+ {
1407
+ "not": {
1408
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1409
+ }
1410
+ },
1411
+ {
1412
+ "not": {
1413
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1414
+ }
1415
+ }
1416
+ ],
1417
+ "maxLength": 80,
1418
+ "minLength": 1,
1419
+ "title": "Displayname",
1420
+ "type": "string"
1421
+ },
1422
+ "id": {
1423
+ "maxLength": 80,
1424
+ "minLength": 1,
1425
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1426
+ "title": "Id",
1427
+ "type": "string"
1428
+ },
1429
+ "interactionTypes": {
1430
+ "items": {
1431
+ "enum": [
1432
+ "action",
1433
+ "shortcut",
1434
+ "view-submission"
1435
+ ],
1436
+ "type": "string"
1437
+ },
1438
+ "minItems": 1,
1439
+ "title": "Interactiontypes",
1440
+ "type": "array",
1441
+ "uniqueItems": true
1442
+ },
1443
+ "kind": {
1444
+ "const": "slack-interaction",
1445
+ "title": "Kind",
1446
+ "type": "string"
1447
+ }
1448
+ },
1449
+ "required": [
1450
+ "id",
1451
+ "displayName",
1452
+ "kind",
1453
+ "interactionTypes"
1454
+ ],
1455
+ "title": "SlackInteractionTrigger",
1456
+ "type": "object"
1457
+ },
1458
+ "SlackSystem": {
1459
+ "additionalProperties": false,
1460
+ "properties": {
1461
+ "displayName": {
1462
+ "allOf": [
1463
+ {
1464
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1465
+ },
1466
+ {
1467
+ "not": {
1468
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1469
+ }
1470
+ },
1471
+ {
1472
+ "not": {
1473
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1474
+ }
1475
+ },
1476
+ {
1477
+ "not": {
1478
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1479
+ }
1480
+ },
1481
+ {
1482
+ "not": {
1483
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1484
+ }
1485
+ },
1486
+ {
1487
+ "not": {
1488
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1489
+ }
1490
+ },
1491
+ {
1492
+ "not": {
1493
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1494
+ }
1495
+ }
1496
+ ],
1497
+ "maxLength": 80,
1498
+ "minLength": 1,
1499
+ "title": "Displayname",
1500
+ "type": "string"
1501
+ },
1502
+ "id": {
1503
+ "maxLength": 80,
1504
+ "minLength": 1,
1505
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1506
+ "title": "Id",
1507
+ "type": "string"
1508
+ }
1509
+ },
1510
+ "required": [
1511
+ "id",
1512
+ "displayName"
1513
+ ],
1514
+ "title": "SlackSystem",
1515
+ "type": "object"
1516
+ },
1517
+ "SlashCommandTrigger": {
1518
+ "additionalProperties": false,
1519
+ "properties": {
1520
+ "command": {
1521
+ "maxLength": 82,
1522
+ "minLength": 2,
1523
+ "pattern": "^/[a-z0-9]+(?:-[a-z0-9]+)*$",
1524
+ "title": "Command",
1525
+ "type": "string"
1526
+ },
1527
+ "displayName": {
1528
+ "allOf": [
1529
+ {
1530
+ "pattern": "^(?!\\s)(?:[^\\r\\n]*\\S)$|^\\S$"
1531
+ },
1532
+ {
1533
+ "not": {
1534
+ "pattern": "(?:^|[^A-Z0-9])[ABCDEGTUVW][A-Z0-9]{8,}(?:$|[^A-Z0-9])"
1535
+ }
1536
+ },
1537
+ {
1538
+ "not": {
1539
+ "pattern": "[xX][oO][xX][bBaApPrRsS]-|[bB][eE][aA][rR][eE][rR]\\s+[A-Za-z0-9._-]+|-----BEGIN [A-Z ]+PRIVATE KEY-----"
1540
+ }
1541
+ },
1542
+ {
1543
+ "not": {
1544
+ "pattern": "\\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|CREDENTIALS?|API_KEY)\\b"
1545
+ }
1546
+ },
1547
+ {
1548
+ "not": {
1549
+ "pattern": "(?:^|[^A-Za-z0-9_])#[A-Za-z0-9][A-Za-z0-9_-]*|/archives/[CGcg][A-Za-z0-9]+"
1550
+ }
1551
+ },
1552
+ {
1553
+ "not": {
1554
+ "pattern": "[pP][rR][iI][vV][aA][tT][eE][-_ ][cC][hH][aA][nN][nN][eE][lL][-_ ](?:[iI][dD]|[nN][aA][mM][eE])\\s*[:=]\\s*[A-Za-z0-9_-]+"
1555
+ }
1556
+ },
1557
+ {
1558
+ "not": {
1559
+ "pattern": "[hH][tT][tT][pP][sS]?://[^\\s]+/(?:[aA][dD][mM][iI][nN]|[iI][nN][tT][eE][rR][nN][aA][lL])(?:[/#?]|[^A-Za-z0-9_]|$)"
1560
+ }
1561
+ }
1562
+ ],
1563
+ "maxLength": 80,
1564
+ "minLength": 1,
1565
+ "title": "Displayname",
1566
+ "type": "string"
1567
+ },
1568
+ "id": {
1569
+ "maxLength": 80,
1570
+ "minLength": 1,
1571
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
1572
+ "title": "Id",
1573
+ "type": "string"
1574
+ },
1575
+ "kind": {
1576
+ "const": "slash-command",
1577
+ "title": "Kind",
1578
+ "type": "string"
1579
+ }
1580
+ },
1581
+ "required": [
1582
+ "id",
1583
+ "displayName",
1584
+ "kind",
1585
+ "command"
1586
+ ],
1587
+ "title": "SlashCommandTrigger",
1588
+ "type": "object"
1589
+ },
1590
+ "Trigger": {
1591
+ "discriminator": {
1592
+ "mapping": {
1593
+ "external-webhook": "#/$defs/ExternalWebhookTrigger",
1594
+ "internal-event": "#/$defs/InternalEventTrigger",
1595
+ "manual": "#/$defs/ManualTrigger",
1596
+ "schedule": "#/$defs/ScheduleTrigger",
1597
+ "slack-event": "#/$defs/SlackEventTrigger",
1598
+ "slack-interaction": "#/$defs/SlackInteractionTrigger",
1599
+ "slash-command": "#/$defs/SlashCommandTrigger"
1600
+ },
1601
+ "propertyName": "kind"
1602
+ },
1603
+ "oneOf": [
1604
+ {
1605
+ "$ref": "#/$defs/SlackEventTrigger"
1606
+ },
1607
+ {
1608
+ "$ref": "#/$defs/SlackInteractionTrigger"
1609
+ },
1610
+ {
1611
+ "$ref": "#/$defs/SlashCommandTrigger"
1612
+ },
1613
+ {
1614
+ "$ref": "#/$defs/ScheduleTrigger"
1615
+ },
1616
+ {
1617
+ "$ref": "#/$defs/ExternalWebhookTrigger"
1618
+ },
1619
+ {
1620
+ "$ref": "#/$defs/InternalEventTrigger"
1621
+ },
1622
+ {
1623
+ "$ref": "#/$defs/ManualTrigger"
1624
+ }
1625
+ ]
1626
+ },
1627
+ "UserTokenAuthorization": {
1628
+ "discriminator": {
1629
+ "mapping": {
1630
+ "read": "#/$defs/ReadUserTokenAuthorization",
1631
+ "write": "#/$defs/WriteUserTokenAuthorization"
1632
+ },
1633
+ "propertyName": "authority"
1634
+ },
1635
+ "oneOf": [
1636
+ {
1637
+ "$ref": "#/$defs/ReadUserTokenAuthorization"
1638
+ },
1639
+ {
1640
+ "$ref": "#/$defs/WriteUserTokenAuthorization"
1641
+ }
1642
+ ]
1643
+ },
1644
+ "WriteUserTokenAuthorization": {
1645
+ "additionalProperties": false,
1646
+ "properties": {
1647
+ "authority": {
1648
+ "const": "write",
1649
+ "title": "Authority",
1650
+ "type": "string"
1651
+ },
1652
+ "kind": {
1653
+ "const": "user-token",
1654
+ "title": "Kind",
1655
+ "type": "string"
1656
+ },
1657
+ "privileges": {
1658
+ "contains": {
1659
+ "enum": [
1660
+ "channels:write",
1661
+ "profiles:write",
1662
+ "user-groups:write"
1663
+ ]
1664
+ },
1665
+ "items": {
1666
+ "$ref": "#/$defs/IntegrationPrivilege"
1667
+ },
1668
+ "minContains": 1,
1669
+ "minItems": 1,
1670
+ "title": "Privileges",
1671
+ "type": "array",
1672
+ "uniqueItems": true
1673
+ }
1674
+ },
1675
+ "required": [
1676
+ "kind",
1677
+ "authority",
1678
+ "privileges"
1679
+ ],
1680
+ "title": "WriteUserTokenAuthorization",
1681
+ "type": "object"
1682
+ }
1683
+ },
1684
+ "$id": "https://standards.sarj.ai/schemas/slack-app-catalog/v1",
1685
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1686
+ "additionalProperties": false,
1687
+ "anyOf": [
1688
+ {
1689
+ "properties": {
1690
+ "botApps": {
1691
+ "minItems": 1
1692
+ }
1693
+ }
1694
+ },
1695
+ {
1696
+ "properties": {
1697
+ "integrations": {
1698
+ "minItems": 1
1699
+ }
1700
+ }
1701
+ }
1702
+ ],
1703
+ "properties": {
1704
+ "botApps": {
1705
+ "items": {
1706
+ "$ref": "#/$defs/BotApp"
1707
+ },
1708
+ "title": "Botapps",
1709
+ "type": "array",
1710
+ "uniqueItems": true
1711
+ },
1712
+ "integrations": {
1713
+ "items": {
1714
+ "$ref": "#/$defs/Integration"
1715
+ },
1716
+ "title": "Integrations",
1717
+ "type": "array",
1718
+ "uniqueItems": true
1719
+ },
1720
+ "repository": {
1721
+ "maxLength": 160,
1722
+ "minLength": 3,
1723
+ "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$",
1724
+ "title": "Repository",
1725
+ "type": "string"
1726
+ },
1727
+ "schemaVersion": {
1728
+ "const": 1,
1729
+ "title": "Schemaversion",
1730
+ "type": "integer"
1731
+ },
1732
+ "systems": {
1733
+ "items": {
1734
+ "$ref": "#/$defs/SlackSystem"
1735
+ },
1736
+ "minItems": 1,
1737
+ "title": "Systems",
1738
+ "type": "array",
1739
+ "uniqueItems": true
1740
+ }
1741
+ },
1742
+ "required": [
1743
+ "schemaVersion",
1744
+ "repository",
1745
+ "systems",
1746
+ "botApps",
1747
+ "integrations"
1748
+ ],
1749
+ "title": "SlackAutomationCatalog",
1750
+ "type": "object"
1751
+ }