isc-transforms-mcp 1.0.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.
Files changed (63) hide show
  1. package/JSONS/authoritative-operation-catalog.json +280 -0
  2. package/JSONS/sailpoint.isc.transforms.accountAttribute.schema.json +164 -0
  3. package/JSONS/sailpoint.isc.transforms.base64Decode.schema.json +37 -0
  4. package/JSONS/sailpoint.isc.transforms.base64Encode.schema.json +32 -0
  5. package/JSONS/sailpoint.isc.transforms.concat.schema.json +109 -0
  6. package/JSONS/sailpoint.isc.transforms.conditional.schema.json +161 -0
  7. package/JSONS/sailpoint.isc.transforms.dateCompare.schema.json +159 -0
  8. package/JSONS/sailpoint.isc.transforms.dateFormat.schema.json +101 -0
  9. package/JSONS/sailpoint.isc.transforms.dateMath.schema.json +119 -0
  10. package/JSONS/sailpoint.isc.transforms.decomposeDiacriticalMarks.schema.json +92 -0
  11. package/JSONS/sailpoint.isc.transforms.displayName.schema.json +42 -0
  12. package/JSONS/sailpoint.isc.transforms.e164phone.schema.json +107 -0
  13. package/JSONS/sailpoint.isc.transforms.firstValid.schema.json +129 -0
  14. package/JSONS/sailpoint.isc.transforms.generateRandomString.schema.json +94 -0
  15. package/JSONS/sailpoint.isc.transforms.getEndOfString.schema.json +118 -0
  16. package/JSONS/sailpoint.isc.transforms.getReferenceIdentityAttribute.schema.json +79 -0
  17. package/JSONS/sailpoint.isc.transforms.identityAttribute.schema.json +104 -0
  18. package/JSONS/sailpoint.isc.transforms.index.schema.json +48 -0
  19. package/JSONS/sailpoint.isc.transforms.indexOf.schema.json +90 -0
  20. package/JSONS/sailpoint.isc.transforms.iso3166.schema.json +103 -0
  21. package/JSONS/sailpoint.isc.transforms.join.schema.json +113 -0
  22. package/JSONS/sailpoint.isc.transforms.lastIndexOf.schema.json +90 -0
  23. package/JSONS/sailpoint.isc.transforms.leftPad.schema.json +96 -0
  24. package/JSONS/sailpoint.isc.transforms.lookup.schema.json +100 -0
  25. package/JSONS/sailpoint.isc.transforms.lower.schema.json +80 -0
  26. package/JSONS/sailpoint.isc.transforms.normalizeNames.schema.json +79 -0
  27. package/JSONS/sailpoint.isc.transforms.randomAlphaNumeric.schema.json +53 -0
  28. package/JSONS/sailpoint.isc.transforms.randomNumeric.schema.json +53 -0
  29. package/JSONS/sailpoint.isc.transforms.reference.schema.json +90 -0
  30. package/JSONS/sailpoint.isc.transforms.replace.schema.json +96 -0
  31. package/JSONS/sailpoint.isc.transforms.replaceAll.schema.json +96 -0
  32. package/JSONS/sailpoint.isc.transforms.rfc5646.schema.json +79 -0
  33. package/JSONS/sailpoint.isc.transforms.rightPad.schema.json +96 -0
  34. package/JSONS/sailpoint.isc.transforms.rule.schema.json +106 -0
  35. package/JSONS/sailpoint.isc.transforms.split.schema.json +103 -0
  36. package/JSONS/sailpoint.isc.transforms.static.schema.json +131 -0
  37. package/JSONS/sailpoint.isc.transforms.substring.schema.json +167 -0
  38. package/JSONS/sailpoint.isc.transforms.trim.schema.json +93 -0
  39. package/JSONS/sailpoint.isc.transforms.upper.schema.json +80 -0
  40. package/JSONS/sailpoint.isc.transforms.usernameGenerator.schema.json +106 -0
  41. package/JSONS/sailpoint.isc.transforms.uuid.schema.json +32 -0
  42. package/LICENSE +21 -0
  43. package/README.md +221 -0
  44. package/bin/isc-transforms-mcp.mjs +3 -0
  45. package/dist/allowlist.js +37 -0
  46. package/dist/config.js +67 -0
  47. package/dist/http/errors.js +19 -0
  48. package/dist/http/iscAuth.js +45 -0
  49. package/dist/http/iscClient.js +73 -0
  50. package/dist/index.js +613 -0
  51. package/dist/logger.js +9 -0
  52. package/dist/redact.js +28 -0
  53. package/dist/transforms/catalog.js +566 -0
  54. package/dist/transforms/explain.js +266 -0
  55. package/dist/transforms/generate.js +551 -0
  56. package/dist/transforms/index.js +9 -0
  57. package/dist/transforms/lint.js +839 -0
  58. package/dist/transforms/normalize.js +96 -0
  59. package/dist/transforms/patterns.js +295 -0
  60. package/dist/transforms/testcases.js +350 -0
  61. package/dist/transforms/validate.js +250 -0
  62. package/dist/util/diff.js +23 -0
  63. package/package.json +76 -0
@@ -0,0 +1,106 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.rule.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - rule",
5
+ "description": "Strict schema derived from SailPoint official Rule operation documentation. References (invokes) a Transform rule by name. The attributes object must contain the rule name and may include dynamic variables passed to the rule. Those variables may be static string values or the results of other transforms.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name",
11
+ "attributes"
12
+ ],
13
+ "properties": {
14
+ "type": {
15
+ "const": "rule"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "requiresPeriodicRefresh": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Whether the transform logic should be reevaluated every evening as part of the identity refresh process. Default false."
25
+ },
26
+ "attributes": {
27
+ "type": "object",
28
+ "description": "Rule configuration + optional dynamic variables (per docs).",
29
+ "required": [
30
+ "name"
31
+ ],
32
+ "properties": {
33
+ "name": {
34
+ "type": "string",
35
+ "minLength": 1,
36
+ "description": "The name of the Transform rule the transform must invoke."
37
+ }
38
+ },
39
+ "additionalProperties": {
40
+ "oneOf": [
41
+ {
42
+ "type": "string"
43
+ },
44
+ {
45
+ "$ref": "#/$defs/NestedTransform"
46
+ }
47
+ ]
48
+ }
49
+ }
50
+ },
51
+ "$defs": {
52
+ "NestedTransform": {
53
+ "type": "object",
54
+ "description": "Nested transform object provided as a dynamic variable. Docs examples show nested transforms sometimes omit 'name' and sometimes omit 'attributes' for operations that don't use them.",
55
+ "additionalProperties": false,
56
+ "required": [
57
+ "type"
58
+ ],
59
+ "properties": {
60
+ "id": {
61
+ "type": "string"
62
+ },
63
+ "name": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "type": {
68
+ "type": "string",
69
+ "minLength": 1
70
+ },
71
+ "requiresPeriodicRefresh": {
72
+ "type": "boolean"
73
+ },
74
+ "attributes": {
75
+ "type": [
76
+ "object",
77
+ "null"
78
+ ],
79
+ "additionalProperties": true,
80
+ "description": "Operation-specific attributes for the nested transform (may be null or omitted for operations that do not use attributes)."
81
+ }
82
+ }
83
+ }
84
+ },
85
+ "examples": [
86
+ {
87
+ "attributes": {
88
+ "name": "Transform Calculation Rule"
89
+ },
90
+ "type": "rule",
91
+ "name": "Rule Transform"
92
+ },
93
+ {
94
+ "attributes": {
95
+ "name": "Cloud Services Deployment Utility",
96
+ "operation": "getEndOfString",
97
+ "input": {
98
+ "type": "trim"
99
+ },
100
+ "numChars": "3"
101
+ },
102
+ "type": "rule",
103
+ "name": "Rule Transform"
104
+ }
105
+ ]
106
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.split.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - split",
5
+ "description": "Strict schema derived from SailPoint official Split operation documentation. Splits an incoming string and returns the element at index. Optional throws controls whether an out-of-bounds index throws (default true).",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name",
11
+ "attributes"
12
+ ],
13
+ "properties": {
14
+ "type": {
15
+ "const": "split"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "requiresPeriodicRefresh": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Whether the transform should be reevaluated nightly as part of identity refresh. Default false."
25
+ },
26
+ "attributes": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": [
30
+ "delimiter",
31
+ "index"
32
+ ],
33
+ "properties": {
34
+ "delimiter": {
35
+ "type": "string",
36
+ "minLength": 1,
37
+ "description": "Delimiter to split on."
38
+ },
39
+ "index": {
40
+ "type": "integer",
41
+ "minimum": 0,
42
+ "description": "0-based index of the element to return."
43
+ },
44
+ "throws": {
45
+ "type": "boolean",
46
+ "default": true,
47
+ "description": "If true (default), throws on invalid index; if false, returns null on invalid index."
48
+ },
49
+ "input": {
50
+ "description": "Optional explicit input passed into the transform (nested transform). If omitted, uses UI-configured input.",
51
+ "oneOf": [
52
+ {
53
+ "$ref": "#/$defs/NestedTransform"
54
+ }
55
+ ]
56
+ }
57
+ }
58
+ }
59
+ },
60
+ "$defs": {
61
+ "NestedTransform": {
62
+ "type": "object",
63
+ "description": "Nested transform object used as explicit input (name optional in docs).",
64
+ "additionalProperties": false,
65
+ "required": [
66
+ "type",
67
+ "attributes"
68
+ ],
69
+ "properties": {
70
+ "id": {
71
+ "type": "string"
72
+ },
73
+ "name": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "type": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ },
81
+ "requiresPeriodicRefresh": {
82
+ "type": "boolean"
83
+ },
84
+ "attributes": {
85
+ "type": "object",
86
+ "additionalProperties": true,
87
+ "description": "Operation-specific attributes for the nested transform."
88
+ }
89
+ }
90
+ }
91
+ },
92
+ "examples": [
93
+ {
94
+ "type": "split",
95
+ "name": "Split Transform",
96
+ "attributes": {
97
+ "delimiter": "_",
98
+ "index": 1,
99
+ "throws": true
100
+ }
101
+ }
102
+ ]
103
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.static.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - static",
5
+ "description": "Strict schema derived from SailPoint official Static operation documentation. Returns a fixed string value. Docs also allow Velocity Template Language (VTL) in the value, and allow dynamic variables in attributes to be referenced within the VTL.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name",
11
+ "attributes"
12
+ ],
13
+ "properties": {
14
+ "type": {
15
+ "const": "static"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "requiresPeriodicRefresh": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Whether the transform should be reevaluated nightly as part of identity refresh. Default false."
25
+ },
26
+ "attributes": {
27
+ "type": "object",
28
+ "description": "Static value plus optional dynamic variables (per docs).",
29
+ "required": [
30
+ "value"
31
+ ],
32
+ "properties": {
33
+ "value": {
34
+ "type": "string",
35
+ "description": "Static string value or Velocity template."
36
+ }
37
+ },
38
+ "additionalProperties": {
39
+ "description": "Dynamic variables referenced in Velocity template. Can be literals or nested transforms.",
40
+ "oneOf": [
41
+ {
42
+ "type": "string"
43
+ },
44
+ {
45
+ "type": "number"
46
+ },
47
+ {
48
+ "type": "integer"
49
+ },
50
+ {
51
+ "type": "boolean"
52
+ },
53
+ {
54
+ "type": "array"
55
+ },
56
+ {
57
+ "type": "object"
58
+ },
59
+ {
60
+ "type": "null"
61
+ },
62
+ {
63
+ "$ref": "#/$defs/NestedTransform"
64
+ }
65
+ ]
66
+ }
67
+ }
68
+ },
69
+ "$defs": {
70
+ "NestedTransform": {
71
+ "type": "object",
72
+ "description": "Nested transform object used as a dynamic variable. Docs examples often omit 'name'.",
73
+ "additionalProperties": false,
74
+ "required": [
75
+ "type"
76
+ ],
77
+ "properties": {
78
+ "id": {
79
+ "type": "string"
80
+ },
81
+ "name": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "type": {
86
+ "type": "string",
87
+ "minLength": 1
88
+ },
89
+ "requiresPeriodicRefresh": {
90
+ "type": "boolean"
91
+ },
92
+ "attributes": {
93
+ "type": [
94
+ "object",
95
+ "null"
96
+ ],
97
+ "additionalProperties": true,
98
+ "description": "Operation-specific attributes for the nested transform (may be omitted for operations without attributes)."
99
+ }
100
+ }
101
+ }
102
+ },
103
+ "examples": [
104
+ {
105
+ "type": "static",
106
+ "name": "Static Transform",
107
+ "attributes": {
108
+ "value": "Contractor"
109
+ }
110
+ },
111
+ {
112
+ "type": "static",
113
+ "name": "Static Transform (Template)",
114
+ "attributes": {
115
+ "value": "${first}.${last}@example.com",
116
+ "first": {
117
+ "type": "identityAttribute",
118
+ "attributes": {
119
+ "name": "givenName"
120
+ }
121
+ },
122
+ "last": {
123
+ "type": "identityAttribute",
124
+ "attributes": {
125
+ "name": "familyName"
126
+ }
127
+ }
128
+ }
129
+ }
130
+ ]
131
+ }
@@ -0,0 +1,167 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.substring.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - substring",
5
+ "description": "Strict schema derived from the SailPoint official Substring operation documentation. Returns a substring of the input string using begin/end indices (zero-based) plus optional offsets. Doc constraints: begin=-1 means start at 0; beginOffset only applies when begin != -1; end=-1 or omitted means to the end; endOffset only applies when end is provided and end != -1.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name",
11
+ "attributes"
12
+ ],
13
+ "properties": {
14
+ "type": {
15
+ "const": "substring"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "requiresPeriodicRefresh": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Whether the transform logic should be reevaluated nightly as part of the identity refresh process. Default false."
25
+ },
26
+ "attributes": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": [
30
+ "begin"
31
+ ],
32
+ "properties": {
33
+ "begin": {
34
+ "type": "integer",
35
+ "description": "Begin index (inclusive). If -1, transform begins at character 0."
36
+ },
37
+ "beginOffset": {
38
+ "type": "integer",
39
+ "description": "Number of characters to add to begin. Only used if begin is not -1."
40
+ },
41
+ "end": {
42
+ "type": "integer",
43
+ "description": "End index (exclusive). If -1 or omitted, returns through end of string."
44
+ },
45
+ "endOffset": {
46
+ "type": "integer",
47
+ "description": "Number of characters to add to end. Only used if end is provided and is not -1."
48
+ },
49
+ "input": {
50
+ "description": "Optional explicit input passed into the transform (nested transform). If omitted, uses UI-configured input.",
51
+ "oneOf": [
52
+ {
53
+ "$ref": "#/$defs/NestedTransform"
54
+ }
55
+ ]
56
+ }
57
+ },
58
+ "allOf": [
59
+ {
60
+ "description": "beginOffset is only meaningful when begin != -1. If begin == -1, beginOffset should be omitted.",
61
+ "if": {
62
+ "properties": {
63
+ "begin": {
64
+ "const": -1
65
+ }
66
+ },
67
+ "required": [
68
+ "begin"
69
+ ]
70
+ },
71
+ "then": {
72
+ "not": {
73
+ "required": [
74
+ "beginOffset"
75
+ ]
76
+ }
77
+ }
78
+ },
79
+ {
80
+ "description": "endOffset is only meaningful when end is provided and end != -1. If end is absent or -1, endOffset should be omitted.",
81
+ "if": {
82
+ "anyOf": [
83
+ {
84
+ "not": {
85
+ "required": [
86
+ "end"
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ "properties": {
92
+ "end": {
93
+ "const": -1
94
+ }
95
+ },
96
+ "required": [
97
+ "end"
98
+ ]
99
+ }
100
+ ]
101
+ },
102
+ "then": {
103
+ "not": {
104
+ "required": [
105
+ "endOffset"
106
+ ]
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ },
113
+ "$defs": {
114
+ "NestedTransform": {
115
+ "type": "object",
116
+ "description": "Nested transform object used as explicit input (name optional in docs).",
117
+ "additionalProperties": false,
118
+ "required": [
119
+ "type"
120
+ ],
121
+ "properties": {
122
+ "id": {
123
+ "type": "string"
124
+ },
125
+ "name": {
126
+ "type": "string",
127
+ "minLength": 1
128
+ },
129
+ "type": {
130
+ "type": "string",
131
+ "minLength": 1
132
+ },
133
+ "requiresPeriodicRefresh": {
134
+ "type": "boolean"
135
+ },
136
+ "attributes": {
137
+ "type": [
138
+ "object",
139
+ "null"
140
+ ],
141
+ "additionalProperties": true,
142
+ "description": "Operation-specific attributes for the nested transform (may be omitted for operations without attributes)."
143
+ }
144
+ }
145
+ }
146
+ },
147
+ "examples": [
148
+ {
149
+ "type": "substring",
150
+ "name": "Substring Transform",
151
+ "attributes": {
152
+ "begin": 2,
153
+ "end": 4
154
+ }
155
+ },
156
+ {
157
+ "type": "substring",
158
+ "name": "Substring Transform (Offsets)",
159
+ "attributes": {
160
+ "begin": 1,
161
+ "end": 3,
162
+ "beginOffset": 1,
163
+ "endOffset": 2
164
+ }
165
+ }
166
+ ]
167
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.trim.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - trim",
5
+ "description": "Strict schema derived from SailPoint official Trim operation documentation. Trims whitespace from both the beginning and ending of the input string. Docs state the transform only requires top-level 'type' and 'name', and also document an optional 'attributes' object with optional 'input' for explicit input.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name"
11
+ ],
12
+ "properties": {
13
+ "type": {
14
+ "const": "trim"
15
+ },
16
+ "name": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "requiresPeriodicRefresh": {
21
+ "type": "boolean",
22
+ "default": false,
23
+ "description": "Whether the transform logic should be reevaluated every evening as part of the identity refresh process. Default false."
24
+ },
25
+ "attributes": {
26
+ "type": "object",
27
+ "description": "Optional configuration. Only 'input' is documented.",
28
+ "additionalProperties": false,
29
+ "properties": {
30
+ "input": {
31
+ "description": "Optional explicit input passed into the transform. If not provided, the transform uses UI-configured input.",
32
+ "oneOf": [
33
+ {
34
+ "$ref": "#/$defs/NestedTransform"
35
+ }
36
+ ]
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "$defs": {
42
+ "NestedTransform": {
43
+ "type": "object",
44
+ "description": "Nested transform object used as explicit input (docs examples use a nested static transform).",
45
+ "additionalProperties": false,
46
+ "required": [
47
+ "type"
48
+ ],
49
+ "properties": {
50
+ "id": {
51
+ "type": "string"
52
+ },
53
+ "name": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ },
57
+ "type": {
58
+ "type": "string",
59
+ "minLength": 1
60
+ },
61
+ "requiresPeriodicRefresh": {
62
+ "type": "boolean"
63
+ },
64
+ "attributes": {
65
+ "type": [
66
+ "object",
67
+ "null"
68
+ ],
69
+ "additionalProperties": true,
70
+ "description": "Operation-specific attributes for the nested transform (may be omitted for operations without attributes)."
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "examples": [
76
+ {
77
+ "type": "trim",
78
+ "name": "Trim Transform"
79
+ },
80
+ {
81
+ "type": "trim",
82
+ "name": "Trim Transform (Explicit Input)",
83
+ "attributes": {
84
+ "input": {
85
+ "type": "static",
86
+ "attributes": {
87
+ "value": " Vice President"
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ]
93
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "sailpoint.isc.transforms.upper.schema.json",
4
+ "title": "SailPoint ISC Transform Schema - upper",
5
+ "description": "Strict schema derived from SailPoint official Upper operation documentation. Converts an input string into all uppercase letters.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "type",
10
+ "name"
11
+ ],
12
+ "properties": {
13
+ "type": {
14
+ "const": "upper"
15
+ },
16
+ "name": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "requiresPeriodicRefresh": {
21
+ "type": "boolean",
22
+ "default": false,
23
+ "description": "Whether the transform should be reevaluated nightly as part of identity refresh. Default false."
24
+ },
25
+ "attributes": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "description": "Optional configuration. Only 'input' is documented.",
29
+ "properties": {
30
+ "input": {
31
+ "description": "Optional explicit input passed into the transform (nested transform). If omitted, uses UI-configured input.",
32
+ "oneOf": [
33
+ {
34
+ "$ref": "#/$defs/NestedTransform"
35
+ }
36
+ ]
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "$defs": {
42
+ "NestedTransform": {
43
+ "type": "object",
44
+ "description": "Nested transform object used as explicit input (name optional in docs).",
45
+ "additionalProperties": false,
46
+ "required": [
47
+ "type",
48
+ "attributes"
49
+ ],
50
+ "properties": {
51
+ "id": {
52
+ "type": "string"
53
+ },
54
+ "name": {
55
+ "type": "string",
56
+ "minLength": 1
57
+ },
58
+ "type": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ },
62
+ "requiresPeriodicRefresh": {
63
+ "type": "boolean"
64
+ },
65
+ "attributes": {
66
+ "type": "object",
67
+ "additionalProperties": true,
68
+ "description": "Operation-specific attributes for the nested transform."
69
+ }
70
+ }
71
+ }
72
+ },
73
+ "examples": [
74
+ {
75
+ "attributes": {},
76
+ "type": "upper",
77
+ "name": "Upper Transform"
78
+ }
79
+ ]
80
+ }