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,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.e164phone.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - e164phone",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official E.164 Phone operation documentation. Converts a phone number string into E.164 format. Docs require only top-level 'type' and 'name'. Optional attributes include defaultRegion and input. Runtime null/invalid handling: if input is invalid, transform returns null; if input is null, output is null.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"type": {
|
|
14
|
+
"const": "e164phone"
|
|
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.",
|
|
29
|
+
"properties": {
|
|
30
|
+
"defaultRegion": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 2,
|
|
33
|
+
"maxLength": 2,
|
|
34
|
+
"default": "US",
|
|
35
|
+
"description": "ISO 3166-1 alpha-2 region code used when parsing phone numbers without an explicit country code."
|
|
36
|
+
},
|
|
37
|
+
"input": {
|
|
38
|
+
"description": "Explicit input data passed into the transform (nested transform object). If omitted, uses UI-configured input.",
|
|
39
|
+
"oneOf": [
|
|
40
|
+
{
|
|
41
|
+
"$ref": "#/$defs/NestedTransform"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"$defs": {
|
|
49
|
+
"NestedTransform": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"description": "Nested transform object used for explicit input. Docs examples commonly omit 'name' for nested transforms.",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": [
|
|
54
|
+
"type",
|
|
55
|
+
"attributes"
|
|
56
|
+
],
|
|
57
|
+
"properties": {
|
|
58
|
+
"id": {
|
|
59
|
+
"type": "string"
|
|
60
|
+
},
|
|
61
|
+
"name": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"minLength": 1
|
|
64
|
+
},
|
|
65
|
+
"type": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1
|
|
68
|
+
},
|
|
69
|
+
"requiresPeriodicRefresh": {
|
|
70
|
+
"type": "boolean"
|
|
71
|
+
},
|
|
72
|
+
"attributes": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": true,
|
|
75
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"examples": [
|
|
81
|
+
{
|
|
82
|
+
"type": "e164phone",
|
|
83
|
+
"name": "E.164 Phone Transform"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"type": "e164phone",
|
|
87
|
+
"name": "E.164 Phone Transform (Default Region)",
|
|
88
|
+
"attributes": {
|
|
89
|
+
"defaultRegion": "IN"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "e164phone",
|
|
94
|
+
"name": "E.164 Phone Transform (Explicit Input)",
|
|
95
|
+
"attributes": {
|
|
96
|
+
"defaultRegion": "US",
|
|
97
|
+
"input": {
|
|
98
|
+
"type": "accountAttribute",
|
|
99
|
+
"attributes": {
|
|
100
|
+
"sourceName": "HR Source",
|
|
101
|
+
"attributeName": "phone"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.firstValid.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - firstValid",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official First Valid operation documentation. Returns the first non-null value from a list of values/transforms. Optional ignoreErrors controls whether evaluation errors are ignored.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "firstValid"
|
|
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
|
+
"values"
|
|
31
|
+
],
|
|
32
|
+
"properties": {
|
|
33
|
+
"values": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"minItems": 1,
|
|
36
|
+
"description": "Ordered list of values/transforms. The first non-null result is returned.",
|
|
37
|
+
"items": {
|
|
38
|
+
"oneOf": [
|
|
39
|
+
{
|
|
40
|
+
"type": "string"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "number"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "integer"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "boolean"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"type": "array"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "object"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"type": "null"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"$ref": "#/$defs/NestedTransform"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"ignoreErrors": {
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"default": false,
|
|
69
|
+
"description": "If true, errors from evaluating a value/transform are ignored and evaluation continues. Default false."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"$defs": {
|
|
75
|
+
"NestedTransform": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"description": "Nested transform object used inside values[]; docs examples often omit 'name' for nested transforms.",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"required": [
|
|
80
|
+
"type",
|
|
81
|
+
"attributes"
|
|
82
|
+
],
|
|
83
|
+
"properties": {
|
|
84
|
+
"id": {
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"name": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 1
|
|
90
|
+
},
|
|
91
|
+
"type": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"minLength": 1
|
|
94
|
+
},
|
|
95
|
+
"requiresPeriodicRefresh": {
|
|
96
|
+
"type": "boolean"
|
|
97
|
+
},
|
|
98
|
+
"attributes": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": true,
|
|
101
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"examples": [
|
|
107
|
+
{
|
|
108
|
+
"type": "firstValid",
|
|
109
|
+
"name": "First Valid Transform",
|
|
110
|
+
"attributes": {
|
|
111
|
+
"values": [
|
|
112
|
+
{
|
|
113
|
+
"type": "identityAttribute",
|
|
114
|
+
"attributes": {
|
|
115
|
+
"name": "preferredName"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "identityAttribute",
|
|
120
|
+
"attributes": {
|
|
121
|
+
"name": "givenName"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"ignoreErrors": false
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.generateRandomString.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - Generate Random String (rule-backed)",
|
|
5
|
+
"description": "Strict schema for the SailPoint ISC 'Generate Random String' operation. Per SailPoint docs, this is implemented as a rule transform: type must be 'rule' and attributes must target the 'Cloud Services Deployment Utility' rule with operation 'generateRandomString'.",
|
|
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
|
+
"description": "Transform name shown in UI."
|
|
21
|
+
},
|
|
22
|
+
"requiresPeriodicRefresh": {
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"default": false,
|
|
25
|
+
"description": "Whether the transform logic should be reevaluated every evening as part of identity refresh. Default false."
|
|
26
|
+
},
|
|
27
|
+
"attributes": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": [
|
|
31
|
+
"name",
|
|
32
|
+
"operation",
|
|
33
|
+
"includeNumbers",
|
|
34
|
+
"includeSpecialChars",
|
|
35
|
+
"length"
|
|
36
|
+
],
|
|
37
|
+
"properties": {
|
|
38
|
+
"name": {
|
|
39
|
+
"const": "Cloud Services Deployment Utility",
|
|
40
|
+
"description": "Referenced rule name must be 'Cloud Services Deployment Utility'."
|
|
41
|
+
},
|
|
42
|
+
"operation": {
|
|
43
|
+
"const": "generateRandomString",
|
|
44
|
+
"description": "Operation must be 'generateRandomString'."
|
|
45
|
+
},
|
|
46
|
+
"includeNumbers": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"enum": [
|
|
49
|
+
"true",
|
|
50
|
+
"false"
|
|
51
|
+
],
|
|
52
|
+
"description": "Set to \"true\" or \"false\" to indicate whether the generator includes numbers."
|
|
53
|
+
},
|
|
54
|
+
"includeSpecialChars": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"enum": [
|
|
57
|
+
"true",
|
|
58
|
+
"false"
|
|
59
|
+
],
|
|
60
|
+
"description": "Set to \"true\" or \"false\" to indicate whether the generator includes special characters."
|
|
61
|
+
},
|
|
62
|
+
"length": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"pattern": "^([1-9][0-9]?|[1-3][0-9]{2}|4[0-4][0-9]|450)$",
|
|
65
|
+
"description": "Required length of the generated string. Docs state maximum allowable value is 450."
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"examples": [
|
|
71
|
+
{
|
|
72
|
+
"type": "rule",
|
|
73
|
+
"name": "Generate Random String Transform",
|
|
74
|
+
"attributes": {
|
|
75
|
+
"name": "Cloud Services Deployment Utility",
|
|
76
|
+
"operation": "generateRandomString",
|
|
77
|
+
"includeNumbers": "true",
|
|
78
|
+
"includeSpecialChars": "true",
|
|
79
|
+
"length": "16"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"type": "rule",
|
|
84
|
+
"name": "Generate Random String Transform",
|
|
85
|
+
"attributes": {
|
|
86
|
+
"name": "Cloud Services Deployment Utility",
|
|
87
|
+
"operation": "generateRandomString",
|
|
88
|
+
"includeNumbers": "true",
|
|
89
|
+
"includeSpecialChars": "false",
|
|
90
|
+
"length": "8"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.getEndOfString.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - Get End of String (rule-backed)",
|
|
5
|
+
"description": "Strict schema for the SailPoint ISC 'Get End of String' operation. Per SailPoint docs, this is implemented as a rule transform: type must be 'rule' and attributes must target the 'Cloud Services Deployment Utility' rule with operation 'getEndOfString'. numChars is required. Optional explicit input may be provided as a nested transform.",
|
|
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 nightly as part of identity refresh. Default false."
|
|
25
|
+
},
|
|
26
|
+
"attributes": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"name",
|
|
31
|
+
"operation",
|
|
32
|
+
"numChars"
|
|
33
|
+
],
|
|
34
|
+
"properties": {
|
|
35
|
+
"name": {
|
|
36
|
+
"const": "Cloud Services Deployment Utility",
|
|
37
|
+
"description": "Referenced rule name must be 'Cloud Services Deployment Utility'."
|
|
38
|
+
},
|
|
39
|
+
"operation": {
|
|
40
|
+
"const": "getEndOfString",
|
|
41
|
+
"description": "Operation must be 'getEndOfString'."
|
|
42
|
+
},
|
|
43
|
+
"numChars": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"pattern": "^[1-9][0-9]*$",
|
|
46
|
+
"description": "Number of characters to take from the right side of the input string. Documented as a string."
|
|
47
|
+
},
|
|
48
|
+
"input": {
|
|
49
|
+
"description": "Optional explicit input to the rule-backed operation (nested transform). If omitted, uses implicit input.",
|
|
50
|
+
"oneOf": [
|
|
51
|
+
{
|
|
52
|
+
"$ref": "#/$defs/NestedTransform"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"$defs": {
|
|
60
|
+
"NestedTransform": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"description": "Nested transform object used for explicit input. Docs examples commonly omit 'name' for nested transforms.",
|
|
63
|
+
"additionalProperties": false,
|
|
64
|
+
"required": [
|
|
65
|
+
"type",
|
|
66
|
+
"attributes"
|
|
67
|
+
],
|
|
68
|
+
"properties": {
|
|
69
|
+
"id": {
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
"name": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"minLength": 1
|
|
75
|
+
},
|
|
76
|
+
"type": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"minLength": 1
|
|
79
|
+
},
|
|
80
|
+
"requiresPeriodicRefresh": {
|
|
81
|
+
"type": "boolean"
|
|
82
|
+
},
|
|
83
|
+
"attributes": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": true,
|
|
86
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"examples": [
|
|
92
|
+
{
|
|
93
|
+
"type": "rule",
|
|
94
|
+
"name": "Get End of String Transform",
|
|
95
|
+
"attributes": {
|
|
96
|
+
"name": "Cloud Services Deployment Utility",
|
|
97
|
+
"operation": "getEndOfString",
|
|
98
|
+
"numChars": "4"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "rule",
|
|
103
|
+
"name": "Get End of String Transform (Explicit Input)",
|
|
104
|
+
"attributes": {
|
|
105
|
+
"name": "Cloud Services Deployment Utility",
|
|
106
|
+
"operation": "getEndOfString",
|
|
107
|
+
"numChars": "4",
|
|
108
|
+
"input": {
|
|
109
|
+
"type": "accountAttribute",
|
|
110
|
+
"attributes": {
|
|
111
|
+
"sourceName": "HR Source",
|
|
112
|
+
"attributeName": "employeeId"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.getReferenceIdentityAttribute.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - Get Reference Identity Attribute (rule-backed)",
|
|
5
|
+
"description": "Strict schema for the SailPoint ISC 'Get Reference Identity Attribute' operation. Per SailPoint docs, this is implemented as a rule transform: type must be 'rule' and attributes must target the 'Cloud Services Deployment Utility' rule with operation 'getReferenceIdentityAttribute'. uid and attributeName are required. uid supports specifying the identity UID directly or the keyword 'manager'.",
|
|
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 nightly as part of identity refresh. Default false."
|
|
25
|
+
},
|
|
26
|
+
"attributes": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"name",
|
|
31
|
+
"operation",
|
|
32
|
+
"uid",
|
|
33
|
+
"attributeName"
|
|
34
|
+
],
|
|
35
|
+
"properties": {
|
|
36
|
+
"name": {
|
|
37
|
+
"const": "Cloud Services Deployment Utility",
|
|
38
|
+
"description": "Referenced rule name must be 'Cloud Services Deployment Utility'."
|
|
39
|
+
},
|
|
40
|
+
"operation": {
|
|
41
|
+
"const": "getReferenceIdentityAttribute",
|
|
42
|
+
"description": "Operation must be 'getReferenceIdentityAttribute'."
|
|
43
|
+
},
|
|
44
|
+
"uid": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1,
|
|
47
|
+
"description": "UID of the reference identity. Docs allow 'manager' to reference the identity's manager."
|
|
48
|
+
},
|
|
49
|
+
"attributeName": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1,
|
|
52
|
+
"description": "Name of the identity attribute to retrieve from the referenced identity."
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"examples": [
|
|
58
|
+
{
|
|
59
|
+
"type": "rule",
|
|
60
|
+
"name": "Get Manager Email Transform",
|
|
61
|
+
"attributes": {
|
|
62
|
+
"name": "Cloud Services Deployment Utility",
|
|
63
|
+
"operation": "getReferenceIdentityAttribute",
|
|
64
|
+
"uid": "manager",
|
|
65
|
+
"attributeName": "email"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "rule",
|
|
70
|
+
"name": "Get Another Identity Attribute Transform",
|
|
71
|
+
"attributes": {
|
|
72
|
+
"name": "Cloud Services Deployment Utility",
|
|
73
|
+
"operation": "getReferenceIdentityAttribute",
|
|
74
|
+
"uid": "jsmith",
|
|
75
|
+
"attributeName": "displayName"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.identityAttribute.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform Schema - identityAttribute",
|
|
5
|
+
"description": "Strict schema derived from SailPoint official Identity Attribute operation documentation. Retrieves the value of a user's identity attribute by its system (camel-cased) name.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"name",
|
|
11
|
+
"attributes"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": {
|
|
15
|
+
"const": "identityAttribute"
|
|
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
|
+
"additionalProperties": false,
|
|
29
|
+
"required": [
|
|
30
|
+
"name"
|
|
31
|
+
],
|
|
32
|
+
"properties": {
|
|
33
|
+
"name": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1,
|
|
36
|
+
"description": "System (camel-cased) name of the identity attribute to retrieve (e.g., 'email', 'uid')."
|
|
37
|
+
},
|
|
38
|
+
"input": {
|
|
39
|
+
"description": "Optional explicit input data. If omitted, the transform uses input from the source+attribute combination configured in the UI. Modeled as a nested transform object.",
|
|
40
|
+
"oneOf": [
|
|
41
|
+
{
|
|
42
|
+
"$ref": "#/$defs/NestedTransform"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"$defs": {
|
|
50
|
+
"NestedTransform": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"description": "Nested transform object used as explicit input (name optional in docs).",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"required": [
|
|
55
|
+
"type",
|
|
56
|
+
"attributes"
|
|
57
|
+
],
|
|
58
|
+
"properties": {
|
|
59
|
+
"id": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
"name": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"minLength": 1
|
|
65
|
+
},
|
|
66
|
+
"type": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"minLength": 1
|
|
69
|
+
},
|
|
70
|
+
"requiresPeriodicRefresh": {
|
|
71
|
+
"type": "boolean"
|
|
72
|
+
},
|
|
73
|
+
"attributes": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"additionalProperties": true,
|
|
76
|
+
"description": "Operation-specific attributes for the nested transform."
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"examples": [
|
|
82
|
+
{
|
|
83
|
+
"attributes": {
|
|
84
|
+
"name": "email"
|
|
85
|
+
},
|
|
86
|
+
"type": "identityAttribute",
|
|
87
|
+
"name": "Identity Attribute Transform"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"attributes": {
|
|
91
|
+
"name": "uid"
|
|
92
|
+
},
|
|
93
|
+
"type": "identityAttribute",
|
|
94
|
+
"name": "Identity Attribute Transform"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"attributes": {
|
|
98
|
+
"name": "identificationNumber"
|
|
99
|
+
},
|
|
100
|
+
"type": "identityAttribute",
|
|
101
|
+
"name": "Identity Attribute Transform"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "sailpoint.isc.transforms.index.schema.json",
|
|
4
|
+
"title": "SailPoint ISC Transform - Index Schema (Overall Shape)",
|
|
5
|
+
"description": "Validates the overall transform object shape (name/type/attributes). Operation-specific validation should be performed by an operation schema (e.g., accountAttribute) or a registry-driven linter.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"name",
|
|
10
|
+
"type"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"name": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"minLength": 1,
|
|
16
|
+
"description": "Root transform name (nested transforms often omit 'name' in docs)."
|
|
17
|
+
},
|
|
18
|
+
"type": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"minLength": 1,
|
|
21
|
+
"description": "Transform operation type (e.g., 'accountAttribute', 'conditional', 'dateCompare')."
|
|
22
|
+
},
|
|
23
|
+
"attributes": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"description": "Operation-specific attributes. Some transforms support explicit 'input' as an attribute to override implicit input.",
|
|
26
|
+
"additionalProperties": true,
|
|
27
|
+
"properties": {
|
|
28
|
+
"input": {
|
|
29
|
+
"description": "Optional explicit input. Allowed shape varies by operation; accept any JSON value at index level.",
|
|
30
|
+
"type": [
|
|
31
|
+
"string",
|
|
32
|
+
"number",
|
|
33
|
+
"integer",
|
|
34
|
+
"boolean",
|
|
35
|
+
"object",
|
|
36
|
+
"array",
|
|
37
|
+
"null"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"requiresPeriodicRefresh": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"description": "Optional flag (where supported) to re-evaluate every evening during identity refresh.",
|
|
45
|
+
"default": false
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|