@friggframework/schemas 2.0.0-next.55 → 2.0.0-next.57

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@friggframework/schemas",
3
- "version": "2.0.0-next.55",
3
+ "version": "2.0.0-next.57",
4
4
  "description": "Canonical JSON Schema definitions for Frigg Framework",
5
5
  "main": "index.js",
6
6
  "author": "",
@@ -39,5 +39,5 @@
39
39
  "validators/",
40
40
  "index.js"
41
41
  ],
42
- "gitHead": "7f86d4b5faaab4de74e6e3676948b62d1e1a5bb1"
42
+ "gitHead": "d09ee09decef14a8cdbf657494ac0dc9bf0b4014"
43
43
  }
@@ -290,6 +290,27 @@
290
290
  }
291
291
  },
292
292
  "additionalProperties": false
293
+ },
294
+ "encryption": {
295
+ "type": "object",
296
+ "description": "Module-specific encryption configuration for credential fields",
297
+ "properties": {
298
+ "credentialFields": {
299
+ "type": "array",
300
+ "description": "Credential field paths to encrypt (in addition to core schema). Use snake_case for consistency.",
301
+ "items": {
302
+ "type": "string",
303
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_.]*$",
304
+ "minLength": 1
305
+ },
306
+ "uniqueItems": true,
307
+ "examples": [
308
+ ["api_key", "custom_token"],
309
+ ["webhook_secret", "signing_key"]
310
+ ]
311
+ }
312
+ },
313
+ "additionalProperties": false
293
314
  }
294
315
  },
295
316
  "additionalProperties": false,
@@ -291,6 +291,42 @@
291
291
  "type": "boolean",
292
292
  "description": "Create KMS key if none found during discovery",
293
293
  "default": false
294
+ },
295
+ "schema": {
296
+ "type": "object",
297
+ "description": "Custom encryption schema defining additional fields to encrypt beyond core schema",
298
+ "patternProperties": {
299
+ "^[A-Z][a-zA-Z0-9]*$": {
300
+ "type": "object",
301
+ "description": "Model name (PascalCase Prisma model)",
302
+ "required": ["fields"],
303
+ "properties": {
304
+ "fields": {
305
+ "type": "array",
306
+ "description": "Array of field paths to encrypt (e.g., 'fieldName' or 'nested.field')",
307
+ "items": {
308
+ "type": "string",
309
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_.]*$",
310
+ "minLength": 1
311
+ },
312
+ "minItems": 1,
313
+ "uniqueItems": true
314
+ }
315
+ },
316
+ "additionalProperties": false
317
+ }
318
+ },
319
+ "additionalProperties": false,
320
+ "examples": [
321
+ {
322
+ "Credential": {
323
+ "fields": ["data.customToken", "data.proprietaryKey"]
324
+ },
325
+ "MyCustomModel": {
326
+ "fields": ["secretData", "nested.apiKey"]
327
+ }
328
+ }
329
+ ]
294
330
  }
295
331
  },
296
332
  "additionalProperties": false
@@ -251,9 +251,94 @@
251
251
  }
252
252
  },
253
253
  "additionalProperties": false
254
+ },
255
+ "modules": {
256
+ "type": "object",
257
+ "description": "API modules used by this integration. Keys are reference names, values contain module definitions.",
258
+ "additionalProperties": {
259
+ "type": "object",
260
+ "description": "Module configuration with its definition",
261
+ "required": ["definition"],
262
+ "properties": {
263
+ "definition": {
264
+ "type": "object",
265
+ "description": "The API module definition (e.g., from @friggframework/api-module-*)"
266
+ }
267
+ },
268
+ "additionalProperties": true
269
+ }
270
+ },
271
+ "hasUserConfig": {
272
+ "type": "boolean",
273
+ "description": "Whether integration requires user-specific configuration",
274
+ "default": false
275
+ },
276
+ "webhooks": {
277
+ "type": "object",
278
+ "description": "Webhook configuration for the integration",
279
+ "properties": {
280
+ "enabled": {
281
+ "type": "boolean",
282
+ "description": "Whether webhooks are enabled",
283
+ "default": false
284
+ }
285
+ },
286
+ "additionalProperties": true
287
+ },
288
+ "display": {
289
+ "type": "object",
290
+ "description": "Display properties for UI representation",
291
+ "properties": {
292
+ "label": {
293
+ "type": "string",
294
+ "description": "Human-readable display label"
295
+ },
296
+ "description": {
297
+ "type": "string",
298
+ "description": "Integration description"
299
+ },
300
+ "category": {
301
+ "type": "string",
302
+ "description": "Integration category for grouping"
303
+ },
304
+ "detailsUrl": {
305
+ "type": "string",
306
+ "description": "URL to integration documentation or details",
307
+ "format": "uri"
308
+ },
309
+ "icon": {
310
+ "type": "string",
311
+ "description": "Icon identifier or URL for the integration"
312
+ }
313
+ },
314
+ "additionalProperties": true
315
+ },
316
+ "routes": {
317
+ "type": "array",
318
+ "description": "Custom routes exposed by this integration",
319
+ "items": {
320
+ "type": "object",
321
+ "required": ["path", "method", "event"],
322
+ "properties": {
323
+ "path": {
324
+ "type": "string",
325
+ "description": "Route path pattern"
326
+ },
327
+ "method": {
328
+ "type": "string",
329
+ "description": "HTTP method",
330
+ "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"]
331
+ },
332
+ "event": {
333
+ "type": "string",
334
+ "description": "Event name triggered by this route"
335
+ }
336
+ },
337
+ "additionalProperties": true
338
+ }
254
339
  }
255
340
  },
256
- "additionalProperties": false,
341
+ "additionalProperties": true,
257
342
  "examples": [
258
343
  {
259
344
  "name": "hubspot",