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.
- package/JSONS/authoritative-operation-catalog.json +280 -0
- package/JSONS/sailpoint.isc.transforms.accountAttribute.schema.json +164 -0
- package/JSONS/sailpoint.isc.transforms.base64Decode.schema.json +37 -0
- package/JSONS/sailpoint.isc.transforms.base64Encode.schema.json +32 -0
- package/JSONS/sailpoint.isc.transforms.concat.schema.json +109 -0
- package/JSONS/sailpoint.isc.transforms.conditional.schema.json +161 -0
- package/JSONS/sailpoint.isc.transforms.dateCompare.schema.json +159 -0
- package/JSONS/sailpoint.isc.transforms.dateFormat.schema.json +101 -0
- package/JSONS/sailpoint.isc.transforms.dateMath.schema.json +119 -0
- package/JSONS/sailpoint.isc.transforms.decomposeDiacriticalMarks.schema.json +92 -0
- package/JSONS/sailpoint.isc.transforms.displayName.schema.json +42 -0
- package/JSONS/sailpoint.isc.transforms.e164phone.schema.json +107 -0
- package/JSONS/sailpoint.isc.transforms.firstValid.schema.json +129 -0
- package/JSONS/sailpoint.isc.transforms.generateRandomString.schema.json +94 -0
- package/JSONS/sailpoint.isc.transforms.getEndOfString.schema.json +118 -0
- package/JSONS/sailpoint.isc.transforms.getReferenceIdentityAttribute.schema.json +79 -0
- package/JSONS/sailpoint.isc.transforms.identityAttribute.schema.json +104 -0
- package/JSONS/sailpoint.isc.transforms.index.schema.json +48 -0
- package/JSONS/sailpoint.isc.transforms.indexOf.schema.json +90 -0
- package/JSONS/sailpoint.isc.transforms.iso3166.schema.json +103 -0
- package/JSONS/sailpoint.isc.transforms.join.schema.json +113 -0
- package/JSONS/sailpoint.isc.transforms.lastIndexOf.schema.json +90 -0
- package/JSONS/sailpoint.isc.transforms.leftPad.schema.json +96 -0
- package/JSONS/sailpoint.isc.transforms.lookup.schema.json +100 -0
- package/JSONS/sailpoint.isc.transforms.lower.schema.json +80 -0
- package/JSONS/sailpoint.isc.transforms.normalizeNames.schema.json +79 -0
- package/JSONS/sailpoint.isc.transforms.randomAlphaNumeric.schema.json +53 -0
- package/JSONS/sailpoint.isc.transforms.randomNumeric.schema.json +53 -0
- package/JSONS/sailpoint.isc.transforms.reference.schema.json +90 -0
- package/JSONS/sailpoint.isc.transforms.replace.schema.json +96 -0
- package/JSONS/sailpoint.isc.transforms.replaceAll.schema.json +96 -0
- package/JSONS/sailpoint.isc.transforms.rfc5646.schema.json +79 -0
- package/JSONS/sailpoint.isc.transforms.rightPad.schema.json +96 -0
- package/JSONS/sailpoint.isc.transforms.rule.schema.json +106 -0
- package/JSONS/sailpoint.isc.transforms.split.schema.json +103 -0
- package/JSONS/sailpoint.isc.transforms.static.schema.json +131 -0
- package/JSONS/sailpoint.isc.transforms.substring.schema.json +167 -0
- package/JSONS/sailpoint.isc.transforms.trim.schema.json +93 -0
- package/JSONS/sailpoint.isc.transforms.upper.schema.json +80 -0
- package/JSONS/sailpoint.isc.transforms.usernameGenerator.schema.json +106 -0
- package/JSONS/sailpoint.isc.transforms.uuid.schema.json +32 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/bin/isc-transforms-mcp.mjs +3 -0
- package/dist/allowlist.js +37 -0
- package/dist/config.js +67 -0
- package/dist/http/errors.js +19 -0
- package/dist/http/iscAuth.js +45 -0
- package/dist/http/iscClient.js +73 -0
- package/dist/index.js +613 -0
- package/dist/logger.js +9 -0
- package/dist/redact.js +28 -0
- package/dist/transforms/catalog.js +566 -0
- package/dist/transforms/explain.js +266 -0
- package/dist/transforms/generate.js +551 -0
- package/dist/transforms/index.js +9 -0
- package/dist/transforms/lint.js +839 -0
- package/dist/transforms/normalize.js +96 -0
- package/dist/transforms/patterns.js +295 -0
- package/dist/transforms/testcases.js +350 -0
- package/dist/transforms/validate.js +250 -0
- package/dist/util/diff.js +23 -0
- package/package.json +76 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.conditional.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - conditional",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official Conditional operation documentation. Allows dynamic variables within attributes as additional properties (per docs). Runtime considerations (not fully enforceable by JSON Schema): operands in expression cannot be null; string comparisons are case-sensitive; expression operator must be 'eq'.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "conditional"
|
|
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 identity refresh. Default false."
|
|
25
|
+
},
|
|
26
|
+
"attributes": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"description": "Conditional logic configuration, plus optional dynamic variables (per docs).",
|
|
29
|
+
"additionalProperties": {
|
|
30
|
+
"description": "Dynamic variables referenced via $variableName. Can be literals or nested transforms.",
|
|
31
|
+
"oneOf": [
|
|
32
|
+
{
|
|
33
|
+
"type": "string"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "number"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "integer"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "boolean"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "array"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"type": "object"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"type": "null"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"$ref": "#/$defs/NestedTransform"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"required": [
|
|
59
|
+
"expression",
|
|
60
|
+
"positiveCondition",
|
|
61
|
+
"negativeCondition"
|
|
62
|
+
],
|
|
63
|
+
"properties": {
|
|
64
|
+
"expression": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1,
|
|
67
|
+
"description": "Comparison statement of the form 'ValueA eq ValueB'. Only 'eq' is valid.",
|
|
68
|
+
"pattern": "^.*\\beq\\b.*$"
|
|
69
|
+
},
|
|
70
|
+
"positiveCondition": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 0,
|
|
73
|
+
"description": "Output when expression evaluates to true. May reference a dynamic variable via $var."
|
|
74
|
+
},
|
|
75
|
+
"negativeCondition": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 0,
|
|
78
|
+
"description": "Output when expression evaluates to false. May reference a dynamic variable via $var."
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"$defs": {
|
|
84
|
+
"NestedTransform": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"description": "Nested transform object used as a dynamic variable. Docs examples commonly omit 'name' in nested transforms.",
|
|
87
|
+
"additionalProperties": false,
|
|
88
|
+
"required": [
|
|
89
|
+
"type",
|
|
90
|
+
"attributes"
|
|
91
|
+
],
|
|
92
|
+
"properties": {
|
|
93
|
+
"id": {
|
|
94
|
+
"type": "string"
|
|
95
|
+
},
|
|
96
|
+
"name": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"minLength": 1
|
|
99
|
+
},
|
|
100
|
+
"type": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"minLength": 1
|
|
103
|
+
},
|
|
104
|
+
"requiresPeriodicRefresh": {
|
|
105
|
+
"type": "boolean"
|
|
106
|
+
},
|
|
107
|
+
"attributes": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": true,
|
|
110
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"examples": [
|
|
116
|
+
{
|
|
117
|
+
"type": "conditional",
|
|
118
|
+
"name": "Test Conditional Transform",
|
|
119
|
+
"attributes": {
|
|
120
|
+
"expression": "$department eq Science",
|
|
121
|
+
"positiveCondition": "true",
|
|
122
|
+
"negativeCondition": "false",
|
|
123
|
+
"department": {
|
|
124
|
+
"type": "accountAttribute",
|
|
125
|
+
"attributes": {
|
|
126
|
+
"sourceName": "HR Source",
|
|
127
|
+
"attributeName": "department"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"type": "conditional",
|
|
134
|
+
"name": "Test Conditional Transform (dynamic result)",
|
|
135
|
+
"attributes": {
|
|
136
|
+
"expression": "$department eq Science",
|
|
137
|
+
"positiveCondition": "$scienceBuilding",
|
|
138
|
+
"negativeCondition": "$adminBuilding",
|
|
139
|
+
"department": {
|
|
140
|
+
"type": "accountAttribute",
|
|
141
|
+
"attributes": {
|
|
142
|
+
"sourceName": "HR Source",
|
|
143
|
+
"attributeName": "department"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"scienceBuilding": {
|
|
147
|
+
"type": "static",
|
|
148
|
+
"attributes": {
|
|
149
|
+
"value": "Building S"
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"adminBuilding": {
|
|
153
|
+
"type": "static",
|
|
154
|
+
"attributes": {
|
|
155
|
+
"value": "Building A"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.dateCompare.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - dateCompare",
|
|
5
|
+
"description": "Strict schema derived from the SailPoint official Date Compare operation documentation. Compares firstDate and secondDate (ISO8601 date-time strings or the keyword 'now', or nested transforms producing those values) using operator LT/LTE/GT/GTE, and returns positiveCondition or negativeCondition.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "dateCompare"
|
|
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 identity refresh. Default false."
|
|
25
|
+
},
|
|
26
|
+
"attributes": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"firstDate",
|
|
31
|
+
"secondDate",
|
|
32
|
+
"operator",
|
|
33
|
+
"positiveCondition",
|
|
34
|
+
"negativeCondition"
|
|
35
|
+
],
|
|
36
|
+
"properties": {
|
|
37
|
+
"firstDate": {
|
|
38
|
+
"$ref": "#/$defs/DateOperand"
|
|
39
|
+
},
|
|
40
|
+
"secondDate": {
|
|
41
|
+
"$ref": "#/$defs/DateOperand"
|
|
42
|
+
},
|
|
43
|
+
"operator": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Comparison operator: LT, LTE, GT, GTE (docs list uppercase; examples show lowercase).",
|
|
46
|
+
"enum": [
|
|
47
|
+
"LT",
|
|
48
|
+
"LTE",
|
|
49
|
+
"GT",
|
|
50
|
+
"GTE",
|
|
51
|
+
"lt",
|
|
52
|
+
"lte",
|
|
53
|
+
"gt",
|
|
54
|
+
"gte"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"positiveCondition": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "Value to return if the comparison evaluates to true."
|
|
60
|
+
},
|
|
61
|
+
"negativeCondition": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Value to return if the comparison evaluates to false."
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"$defs": {
|
|
69
|
+
"DateOperand": {
|
|
70
|
+
"description": "A date operand: ISO8601 date-time string, the keyword 'now', or a nested transform returning an ISO8601 value.",
|
|
71
|
+
"oneOf": [
|
|
72
|
+
{
|
|
73
|
+
"type": "string",
|
|
74
|
+
"const": "now"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "string",
|
|
78
|
+
"format": "date-time"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"$ref": "#/$defs/NestedTransform"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"NestedTransform": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"description": "Nested transform object. In SailPoint docs, nested transforms commonly omit 'name'. Operation-specific validation should be applied by the nested transform's own schema.",
|
|
88
|
+
"additionalProperties": false,
|
|
89
|
+
"required": [
|
|
90
|
+
"type",
|
|
91
|
+
"attributes"
|
|
92
|
+
],
|
|
93
|
+
"properties": {
|
|
94
|
+
"id": {
|
|
95
|
+
"type": "string"
|
|
96
|
+
},
|
|
97
|
+
"name": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"minLength": 1
|
|
100
|
+
},
|
|
101
|
+
"type": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"minLength": 1
|
|
104
|
+
},
|
|
105
|
+
"requiresPeriodicRefresh": {
|
|
106
|
+
"type": "boolean"
|
|
107
|
+
},
|
|
108
|
+
"attributes": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"additionalProperties": true,
|
|
111
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"examples": [
|
|
117
|
+
{
|
|
118
|
+
"type": "dateCompare",
|
|
119
|
+
"name": "Date Compare Transform",
|
|
120
|
+
"attributes": {
|
|
121
|
+
"firstDate": {
|
|
122
|
+
"type": "accountAttribute",
|
|
123
|
+
"attributes": {
|
|
124
|
+
"sourceName": "HR Source",
|
|
125
|
+
"attributeName": "termination_date"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"secondDate": "now",
|
|
129
|
+
"operator": "gt",
|
|
130
|
+
"positiveCondition": "active",
|
|
131
|
+
"negativeCondition": "terminated"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"type": "dateCompare",
|
|
136
|
+
"name": "Date Compare Transform (Legacy Cutover)",
|
|
137
|
+
"attributes": {
|
|
138
|
+
"firstDate": {
|
|
139
|
+
"type": "accountAttribute",
|
|
140
|
+
"attributes": {
|
|
141
|
+
"sourceName": "HR Source",
|
|
142
|
+
"attributeName": "hire_date"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"secondDate": {
|
|
146
|
+
"type": "dateFormat",
|
|
147
|
+
"attributes": {
|
|
148
|
+
"input": "12/31/1995",
|
|
149
|
+
"inputFormat": "M/d/yyyy",
|
|
150
|
+
"outputFormat": "ISO8601"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"operator": "lte",
|
|
154
|
+
"positiveCondition": "legacy",
|
|
155
|
+
"negativeCondition": "regular"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.dateFormat.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - dateFormat",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official Date Format operation documentation. Converts datetime strings from one format to another. inputFormat/outputFormat may be Java SimpleDateFormat patterns or built-in named formats (ISO8601, LDAP, PEOPLE_SOFT, EPOCH_TIME_JAVA, EPOCH_TIME_WIN32). Note: The docs state this transform does not support the 'now' keyword as an input value.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"type": {
|
|
14
|
+
"const": "dateFormat"
|
|
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 nightly as part of identity refresh. Default false."
|
|
24
|
+
},
|
|
25
|
+
"attributes": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"description": "Date format configuration (optional). If omitted, inputFormat and outputFormat default to ISO8601.",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"properties": {
|
|
30
|
+
"inputFormat": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"default": "ISO8601",
|
|
33
|
+
"description": "Format of the incoming date. Java SimpleDateFormat pattern or built-in named format."
|
|
34
|
+
},
|
|
35
|
+
"outputFormat": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"default": "ISO8601",
|
|
38
|
+
"description": "Desired output format. Java SimpleDateFormat pattern or built-in named format."
|
|
39
|
+
},
|
|
40
|
+
"input": {
|
|
41
|
+
"description": "Explicitly defines the input data passed into the transform. Docs specify an object; in practice this is a nested transform object. If omitted, the transform uses the UI-configured source+attribute input.",
|
|
42
|
+
"oneOf": [
|
|
43
|
+
{
|
|
44
|
+
"$ref": "#/$defs/NestedTransform"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"$defs": {
|
|
52
|
+
"NestedTransform": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"description": "Nested transform object used for explicit input.",
|
|
55
|
+
"additionalProperties": false,
|
|
56
|
+
"required": [
|
|
57
|
+
"type",
|
|
58
|
+
"attributes"
|
|
59
|
+
],
|
|
60
|
+
"properties": {
|
|
61
|
+
"id": {
|
|
62
|
+
"type": "string"
|
|
63
|
+
},
|
|
64
|
+
"name": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1
|
|
67
|
+
},
|
|
68
|
+
"type": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"minLength": 1
|
|
71
|
+
},
|
|
72
|
+
"requiresPeriodicRefresh": {
|
|
73
|
+
"type": "boolean"
|
|
74
|
+
},
|
|
75
|
+
"attributes": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"additionalProperties": true,
|
|
78
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"examples": [
|
|
84
|
+
{
|
|
85
|
+
"type": "dateFormat",
|
|
86
|
+
"name": "Date Format Transform",
|
|
87
|
+
"attributes": {
|
|
88
|
+
"inputFormat": "EPOCH_TIME_JAVA",
|
|
89
|
+
"outputFormat": "ISO8601"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "dateFormat",
|
|
94
|
+
"name": "Date Format Transform (US date to DB)",
|
|
95
|
+
"attributes": {
|
|
96
|
+
"inputFormat": "M/d/yyyy",
|
|
97
|
+
"outputFormat": "yyyy-MM-dd"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.dateMath.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - dateMath",
|
|
5
|
+
"description": "Strict schema derived from the SailPoint official Date Math operation documentation. Adds/subtracts/rounds components of an incoming ISO8601 UTC timestamp, or uses the keyword 'now'. Other considerations from docs: input must be ISO8601 UTC; rounding by 'week' is not supported; if 'now' is used and an 'input' attribute is also provided, the transform prefers 'now' and ignores 'input'. Output format is yyyy-MM-dd'T'HH:mm (not ISO8601); convert to ISO8601 via dateFormat when embedding in other transforms.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "dateMath"
|
|
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 identity refresh. Default false."
|
|
25
|
+
},
|
|
26
|
+
"attributes": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"expression"
|
|
31
|
+
],
|
|
32
|
+
"properties": {
|
|
33
|
+
"expression": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1,
|
|
36
|
+
"description": "Date-math expression. Allowed units: y, M, w, d, h, m, s and keyword 'now'. Allowed operators: +, -, / (round). Docs note rounding with week is not supported.",
|
|
37
|
+
"pattern": "^(?!.*\\/w)(?:now|[0-9yMwdhms+\\-\\/]+)$"
|
|
38
|
+
},
|
|
39
|
+
"roundUp": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"default": false,
|
|
42
|
+
"description": "When expression includes rounding '/', true rounds up (truncate + add one unit); false truncates only. Default false."
|
|
43
|
+
},
|
|
44
|
+
"input": {
|
|
45
|
+
"description": "Explicitly defines the input data passed into the transform (nested transform object). If omitted, uses UI-configured input.",
|
|
46
|
+
"oneOf": [
|
|
47
|
+
{
|
|
48
|
+
"$ref": "#/$defs/NestedTransform"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"$defs": {
|
|
56
|
+
"NestedTransform": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"description": "Nested transform object used as explicit input. Docs examples frequently omit 'name' for nested transforms.",
|
|
59
|
+
"additionalProperties": false,
|
|
60
|
+
"required": [
|
|
61
|
+
"type",
|
|
62
|
+
"attributes"
|
|
63
|
+
],
|
|
64
|
+
"properties": {
|
|
65
|
+
"id": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
},
|
|
68
|
+
"name": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"minLength": 1
|
|
71
|
+
},
|
|
72
|
+
"type": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"minLength": 1
|
|
75
|
+
},
|
|
76
|
+
"requiresPeriodicRefresh": {
|
|
77
|
+
"type": "boolean"
|
|
78
|
+
},
|
|
79
|
+
"attributes": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"additionalProperties": true,
|
|
82
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"examples": [
|
|
88
|
+
{
|
|
89
|
+
"type": "dateMath",
|
|
90
|
+
"name": "Date Math Transform",
|
|
91
|
+
"attributes": {
|
|
92
|
+
"expression": "now-5d/d",
|
|
93
|
+
"roundUp": false
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "dateMath",
|
|
98
|
+
"name": "Date Math Transform (Explicit Input)",
|
|
99
|
+
"attributes": {
|
|
100
|
+
"expression": "+12h/s",
|
|
101
|
+
"roundUp": true,
|
|
102
|
+
"input": {
|
|
103
|
+
"type": "dateFormat",
|
|
104
|
+
"attributes": {
|
|
105
|
+
"input": {
|
|
106
|
+
"type": "accountAttribute",
|
|
107
|
+
"attributes": {
|
|
108
|
+
"sourceName": "HR Source",
|
|
109
|
+
"attributeName": "startDate"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"inputFormat": "MMM dd yyyy, HH:mm:ss.SSS",
|
|
113
|
+
"outputFormat": "ISO8601"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.decomposeDiacriticalMarks.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - decomposeDiacriticalMarks",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official Decompose Diacritical Marks operation docs. Docs state this transform requires only top-level 'type' and 'name'. An optional 'attributes' object may be provided with an optional 'input' object to explicitly define input. If 'input' is omitted, ISC uses the UI-configured source+attribute input.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"type": {
|
|
14
|
+
"const": "decomposeDiacriticalMarks"
|
|
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 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": "Explicit input data passed into the transform (nested transform object).",
|
|
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 for explicit input. Docs examples commonly omit 'name' for nested transforms.",
|
|
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
|
+
"type": "decomposeDiacriticalMarks",
|
|
76
|
+
"name": "Test Decompose Diacritical Marks Transform"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "decomposeDiacriticalMarks",
|
|
80
|
+
"name": "Decompose Diacritical Marks Transform",
|
|
81
|
+
"attributes": {
|
|
82
|
+
"input": {
|
|
83
|
+
"type": "accountAttribute",
|
|
84
|
+
"attributes": {
|
|
85
|
+
"sourceName": "HR Source",
|
|
86
|
+
"attributeName": "LastName"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.displayName.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - displayName",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official Display Name operation documentation. This transform constructs Display Name as (Preferred Name if present else Given Name) + ' ' + Family Name. Docs require the 'attributes' key to be present and not null.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "displayName"
|
|
16
|
+
},
|
|
17
|
+
"name": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1
|
|
20
|
+
},
|
|
21
|
+
"attributes": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"description": "Per docs, the attributes object must be present and not null. No configurable required fields are documented.",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"properties": {
|
|
26
|
+
"input": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "Shown in docs examples as a placeholder value. Not documented as required."
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"examples": [
|
|
34
|
+
{
|
|
35
|
+
"name": "Display Name Transform",
|
|
36
|
+
"type": "displayName",
|
|
37
|
+
"attributes": {
|
|
38
|
+
"input": "input"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|