diff --git a/navbar.js b/navbar.js index b26f4f92d..56ac30c27 100644 --- a/navbar.js +++ b/navbar.js @@ -70,7 +70,7 @@ module.exports = { { position: 'left', label: 'Blog', - to: 'https://medium.com/sailpointengineering', + to: '/blog', }, { position: 'left', diff --git a/package-lock.json b/package-lock.json index 1ab33f327..481d9c765 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,10 @@ "docusaurus-theme-openapi-docs": "^1.5.1", "prism-react-renderer": "^1.3.1", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "react-markdown": "^8.0.7", + "react-spinners": "^0.13.8", + "react-tabs": "^4.3.0" }, "devDependencies": { "@docusaurus/core": "2.2.0", @@ -11024,8 +11027,9 @@ "license": "MIT" }, "node_modules/react-markdown": { - "version": "8.0.5", - "license": "MIT", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", + "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", "dependencies": { "@types/hast": "^2.0.0", "@types/prop-types": "^15.0.0", @@ -11302,6 +11306,27 @@ "react": ">=15" } }, + "node_modules/react-spinners": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", + "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-tabs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-4.3.0.tgz", + "integrity": "sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==", + "dependencies": { + "clsx": "^1.1.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-0 || ^18.0.0" + } + }, "node_modules/react-textarea-autosize": { "version": "8.4.0", "dev": true, @@ -21693,7 +21718,9 @@ "version": "1.0.1" }, "react-markdown": { - "version": "8.0.5", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", + "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", "requires": { "@types/hast": "^2.0.0", "@types/prop-types": "^15.0.0", @@ -21858,6 +21885,21 @@ "tiny-warning": "^1.0.0" } }, + "react-spinners": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", + "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", + "requires": {} + }, + "react-tabs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-4.3.0.tgz", + "integrity": "sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==", + "requires": { + "clsx": "^1.1.0", + "prop-types": "^15.5.0" + } + }, "react-textarea-autosize": { "version": "8.4.0", "dev": true, diff --git a/package.json b/package.json index ee1c3aeaa..2976b33c0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,10 @@ "docusaurus-theme-openapi-docs": "^1.5.1", "prism-react-renderer": "^1.3.1", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "react-markdown": "^8.0.7", + "react-spinners": "^0.13.8", + "react-tabs": "^4.3.0" }, "overrides": { "mermaid": "9.1.7" diff --git a/products/idn/api/authentication.md b/products/idn/api/authentication.md index 4b459f846..921fcb529 100644 --- a/products/idn/api/authentication.md +++ b/products/idn/api/authentication.md @@ -153,7 +153,7 @@ This document covers these three common flows: 3. [**Refresh Token**](https://oauth.net/2/grant-types/refresh-token/) - Clients use this grant type to exchange a refresh token for a new `access_token` when the existing `access_token` has expired. This allows clients to continue using the APIs without having to re-authenticate as frequently. This grant type is commonly used together with `Authorization Code` to prevent a user from having to log in several times per day. One way to determine which authorization flow you need to use is to look at the specification for the endpoint you want to use. -The endpoint will haev the supported OAuth flows listed under the 'Authorization' dropdown, like the [List Access Profiles endpoint](https://developer.sailpoint.com/idn/api/beta/list-access-profiles): +The endpoint will have the supported OAuth flows listed under the 'Authorization' dropdown, like the [List Access Profiles endpoint](https://developer.sailpoint.com/idn/api/beta/list-access-profiles): ![Authorization Dropdown](./img/authorization/authorization-dropdown.png) diff --git a/products/idn/api/postman-collections.md b/products/idn/api/postman-collections.md index ddfdaf247..5e9698d8c 100644 --- a/products/idn/api/postman-collections.md +++ b/products/idn/api/postman-collections.md @@ -36,7 +36,10 @@ If there are no changes, you're up to date. If there are changes, the screen lis ## Configure your environment -The SailPoint workspace provides an environment, a set of variables you can use in your requests, that you can fork and pull changes from to stay up to date the same way you can with collections. +The SailPoint workspace provides an environment, a set of variables you can use in your requests, that you can fork and pull changes from to stay up to date the same way you can with collections. To import the environment into your workspace, select 'Run in Postman'. + +| Environment | [![Run in Postman](./img/button.svg)](https://www.postman.com/sailpoint/workspace/identitynow/environment/23226990-ed571d4f-37a3-4a2c-9105-5d8d8cce1d20/fork) | +|------|----------------------------| To send API requests in Postman, you must authenticate to the APIs. To authenticate to the APIs, you must specify these variables in your Postman environment: diff --git a/products/idn/docs/identity-now/rules/cloud-rules/identity_attribute_rule.md b/products/idn/docs/identity-now/rules/cloud-rules/identity_attribute_rule.md index 2054e5564..ca7cb29d3 100644 --- a/products/idn/docs/identity-now/rules/cloud-rules/identity_attribute_rule.md +++ b/products/idn/docs/identity-now/rules/cloud-rules/identity_attribute_rule.md @@ -93,7 +93,7 @@ if( startDate.before( today ) && endDate.after( today ) ) { return "inactive"; } -// If we haven't calculated a state already; return null. +// If we haven't calculated a state already, return null. return null; ]]> diff --git a/products/idn/docs/identity-now/rules/index.md b/products/idn/docs/identity-now/rules/index.md index 81dc4e926..010d01bbe 100644 --- a/products/idn/docs/identity-now/rules/index.md +++ b/products/idn/docs/identity-now/rules/index.md @@ -15,6 +15,12 @@ tags: ['Rules'] In SailPoint solutions, rules serve as a flexible configuration framework implementers can leverage to preform complex or advanced configurations. Though rules allow some advanced flexibility, you must take special considerations when you are deciding to implement rules. +## Java Beanshell + +Rules in IdentityNow are written in Java Beanshell, a lightweight scripting language that allows you to define custom logic and behavior within the rules. Java Beanshell provides a familiar syntax similar to Java, making it easier for implementers to create and maintain rule configurations. + +For more information about Java Beanshell, you can refer to the [Java Beanshell Documentation](https://github.com/beanshell/beanshell/wiki). + ## Rule Execution IdentityNow (IDN) is a multi-tenant cloud solution, and its architecture varies differently from other SailPoint products like IdentityIQ (IIQ). Therefore, the way rules execute within IDN reflects the architectural design considerations the platform was built on. These considerations determine the rule's limitations. diff --git a/products/idn/docs/identity-now/saas-connectivity/connector-commands/account-list.md b/products/idn/docs/identity-now/saas-connectivity/connector-commands/account-list.md index 3bbc9b0f4..2051d2c94 100644 --- a/products/idn/docs/identity-now/saas-connectivity/connector-commands/account-list.md +++ b/products/idn/docs/identity-now/saas-connectivity/connector-commands/account-list.md @@ -11,9 +11,16 @@ tags: ['Connectivity', 'Connector Command'] | Input/Output | Data Type | | :----------- | :------------------: | -| Input | undefined | +| Input | StdAccountListInput | | Output | StdAccountListOutput | +### Example StdAccountListInput + +```javascript +"state": {"date": "1686341338871"}, +"stateful": true +``` + ### Example StdAccountListOutput ```javascript @@ -70,6 +77,12 @@ IDN will throw a connection timeout error if your connector doesn't respond with ::: +:::caution Important + +IDN supports [delta aggregation](#delta-aggregation-state). If your source has a large number of accounts that will be syncronized with IDN, then it is highly recommended to utilize [delta aggregation](#delta-aggregation-state) for the source. + +::: + The following code snippet from [index.ts](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/src/index.ts) shows how to register the account list command on the connector object: ```javascript @@ -162,3 +175,60 @@ The result of the account list command is not an array of objects but several in } } ``` + +## Delta Aggregation (State) + +If your source can keep track of changes to the data in some way, then delta aggregation can be performed on a source. In order to implement, there are a few things that need to be configured + +1. In your connector-spec.json file, the feature needs to be enabled by adding the following key: ```"supportsStatefulCommands": true,``` and in the sourceConfig section, a checkbox needs to be added to enable state with the key ```spConnEnableStatefulCommands```: + +```javascript +"supportsStatefulCommands": true, +... +{ + "key": "spConnEnableStatefulCommands", + "label": "Stateful", + "required": true, + "type": "checkbox" +} +``` + +2. In the ```stdAccountList``` command, when you are done sending accounts, you need to also send the state to IDN so it knows where to start the next time it sends a list request: + +```javascript +const state = {"data": Date.now().toString()} +... +res.saveState(state) +``` + +In the above example, I am capturing the date, but you can use any value you want to store the state + +:::caution Important + +The state that you send using the ```saveState``` command MUST be a json object, and it is recommend to only save strings to ensure proper serialization/deserialization of the data. You cannot send a simple string or number or it will not properly save the state. + +::: + +3. In the ```stdAccountList``` command, you need to properly handle the state object. Something like below checks the stateful boolean as well as the state object and fetches accounts accordingly: + +```javascript +.stdAccountList(async (context: Context, input: StdAccountListInput, res: Response) => { + let accounts = [] + const state = {"data": Date.now().toString()} + if (!input.state && input.stateful) { + logger.info(input, "No state provided, fetching all accounts") + accounts = await airtable.getAllAccounts() + } else if (input.state && input.stateful) { + logger.info(input ,"Current state provided, only fetching accounts after that state") + accounts = await airtable.getAllStatefulAccounts(new Date(Number(input.state?.data))) + } else { + logger.info(input.state ,"Source is not stateful, getting all acounts") + accounts = await airtable.getAllAccounts() + } + logger.info(accounts, "fetched the following accounts from Airtable") + for (const account of accounts) { + res.send(account.toStdAccountListOutput()) + } + res.saveState(state) +}) +``` \ No newline at end of file diff --git a/products/idn/docs/identity-now/saas-connectivity/connector-commands/entitlement-list.md b/products/idn/docs/identity-now/saas-connectivity/connector-commands/entitlement-list.md index a8b564449..cd1fbf5d2 100644 --- a/products/idn/docs/identity-now/saas-connectivity/connector-commands/entitlement-list.md +++ b/products/idn/docs/identity-now/saas-connectivity/connector-commands/entitlement-list.md @@ -108,4 +108,67 @@ private buildStandardObject(): StdEntitlementReadOutput | StdEntitlementListOutp IDN will throw a connection timeout error if your connector doesn't respond within 3 minutes, and there are memory limitations involved with aggregating data. To prevent large memory utilization or timeout errors, you should set up your connectors to send data to IDN as it's retrieved from your source system. For more details and an example, refer to [Connector Timeouts](../in-depth/connector-timeouts.md). -::: \ No newline at end of file +::: + +:::caution Important + +IDN supports [delta aggregation](#delta-aggregation-state). If your source has a large number of entitlements that will be syncronized with IDN, then it is highly recommended to utilize [delta aggregation](#delta-aggregation-state) for the source. + +::: + +## Delta Aggregation (State) + +If your source can keep track of changes to the data in some way, then delta aggregation can be performed on a source. In order to implement, there are a few things that need to be configured + +1. In your connector-spec.json file, the feature needs to be enabled by adding the following key: ```"supportsStatefulCommands": true,``` and in the sourceConfig section, a checkbox needs to be added to enable state with the key ```spConnEnableStatefulCommands```: + +```javascript +"supportsStatefulCommands": true, +... +{ + "key": "spConnEnableStatefulCommands", + "label": "Stateful", + "required": true, + "type": "checkbox" +} +``` + +2. In the ```stdEntitlementList``` command, when you are done sending entitlments, you need to also send the state to IDN so it knows where to start the next time it sends a list request: + +```javascript +const state = {"data": Date.now().toString()} +... +res.saveState(state) +``` + +In the above example, I am capturing the date, but you can use any value you want to store the state + +:::caution Important + +The state that you send using the ```saveState``` command MUST be a json object, and it is recommend to only save strings to ensure proper serialization/deserialization of the data. You cannot send a simple string or number or it will not properly save the state. + +::: + +3. In the ```stdEntitlementList``` command, you need to properly handle the state object. Something like below checks the stateful boolean as well as the state object and fetches accounts accordingly: + +```javascript +.stdEntitlementList(async (context: Context, input: StdEntitlementListInput, res: Response) => { + let groups = [] + const state = {"data": Date.now().toString()} + if (!input.state && input.stateful) { + logger.info(input, "No state provided, fetching all entitlements") + const groups = await airtable.getAllEntitlements() + } else if (input.state && input.stateful) { + logger.info(input ,"Current state provided, only fetching entitlements after that state") + const groups = await airtable.getAllStatefulEntitlements(new Date(Number(input.state?.data))) + } else { + logger.info(input.state ,"Source is not stateful, getting all entitlements") + const groups = await airtable.getAllEntitlements() + } + logger.info(groups, "fetched the following entitlements in Airtable") + for (const group of groups) { + res.send(group.toStdEntitlementListOutput()) + } + res.saveState(state) +}) +``` \ No newline at end of file diff --git a/products/idn/docs/identity-now/saas-connectivity/connector-spec/index.md b/products/idn/docs/identity-now/saas-connectivity/connector-spec/index.md index 20c194336..5dc05b339 100644 --- a/products/idn/docs/identity-now/saas-connectivity/connector-spec/index.md +++ b/products/idn/docs/identity-now/saas-connectivity/connector-spec/index.md @@ -29,7 +29,7 @@ The following describes in detail the different fields in the connector spec: - For example, the stdAccountRead command input is the StdAccountReadInput. if you select keyType as “simple,” then the StdAccountReadInput.key will be the type SimpleKey. -- **commands:** The list of commands the connector supports. A full list of available commands can be found here. +- **commands:** The list of commands the connector supports. A full list of available commands can be found [here](../connector-commands/index.md). - **sourceConfig** A list of configuration items you must provide when you create a source in IDN. The order of these items is preserved in the UI. - **type:** This is always “menu” - it indicates a new menu for the sidebar. You can have multiple sections defined for complex connector configurations diff --git a/products/idn/docs/identity-now/saas-connectivity/prerequisites.md b/products/idn/docs/identity-now/saas-connectivity/prerequisites.md index d9d2d0f51..de4681051 100644 --- a/products/idn/docs/identity-now/saas-connectivity/prerequisites.md +++ b/products/idn/docs/identity-now/saas-connectivity/prerequisites.md @@ -20,7 +20,7 @@ To build the CLI, the following packages are required: To develop a connector, the following packages are required: -- Node >= 14.17.3 +- Node >= 16.2.0 ## IDE diff --git a/products/idn/docs/identity-now/transforms/index.md b/products/idn/docs/identity-now/transforms/index.md index f756e1877..11e47196e 100644 --- a/products/idn/docs/identity-now/transforms/index.md +++ b/products/idn/docs/identity-now/transforms/index.md @@ -156,8 +156,8 @@ The following variables are available to the Apache Velocity template engine whe | Variable | Type | Description | | --- | --- | --- | | identity | sailpoint.object.Identity | This is the identity the attribute promotion is performed on. | -| oldValue | Object | This is the definition of the attribute being promoted. | -| attributeDefinition | sailpoint.object.ObjectAttribute | This is the attribute's previous value. | +| attributeDefinition | sailpoint.object.ObjectAttribute | This is the definition of the attribute being promoted. | +| oldValue | Object | This is the attribute's previous value. | ### Account Profile Context diff --git a/src/components/ambassador/AmbassadorBanner/index.js b/src/components/ambassador/AmbassadorBanner/index.js new file mode 100644 index 000000000..db3188fad --- /dev/null +++ b/src/components/ambassador/AmbassadorBanner/index.js @@ -0,0 +1,19 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import Link from '@docusaurus/Link'; + +export default function AmbassadorBanner() { + return ( +
+ +
+ +
+ Ambassadors +
+
+
+ ); +} diff --git a/src/components/ambassador/AmbassadorBanner/styles.module.css b/src/components/ambassador/AmbassadorBanner/styles.module.css new file mode 100644 index 000000000..7538f21b0 --- /dev/null +++ b/src/components/ambassador/AmbassadorBanner/styles.module.css @@ -0,0 +1,28 @@ + +.ambassadorHeaderText { + position: relative; + color: #ffffff; + font-size: 48px; + max-width: 396px; + font-weight: bold; + line-height: 133%; + top: -84px; + left: 92px; +} + +.background { + width: 100%; + object-fit: repeat; + height: 100%; +} + +.imageContainer { + width: 100%; + height: 90px; + background: rgb(0,51,161); + background: linear-gradient(90deg, rgba(0,51,161,1) 0%, rgba(84,192,232,1) 100%); +} + +.headerImage { + height: 90px; +} \ No newline at end of file diff --git a/src/components/ambassador/AmbassadorCard/index.js b/src/components/ambassador/AmbassadorCard/index.js new file mode 100644 index 000000000..2998d6869 --- /dev/null +++ b/src/components/ambassador/AmbassadorCard/index.js @@ -0,0 +1,38 @@ +import React from 'react'; +import styles from './styles.module.css'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; +import {addDarkToFileName} from '../../../util/util'; +export default function AmbassadorCard({ + data +}) { + + return ( + + + +
+
+ +
+
{data.name}
+
+
+ +
+ +
+ +
{data.answers} solutions
+
+
+ +
member since {data.member_since}
+
+ +
+ + + ); +} diff --git a/src/components/ambassador/AmbassadorCard/styles.module.css b/src/components/ambassador/AmbassadorCard/styles.module.css new file mode 100644 index 000000000..00b37567d --- /dev/null +++ b/src/components/ambassador/AmbassadorCard/styles.module.css @@ -0,0 +1,136 @@ +/* Getting Started Card */ + +.link:hover { + text-decoration: none; +} + +.card { + position: relative; + margin-top: 20px; + height: 500px; + max-width: 420px; + /* UI Properties */ + background: var(--dev-card-background); + box-shadow: var(--dev-card-shadow); + border: 1px solid var(--dev-card-background); + border-radius: 40px; + opacity: 1; + transition: all 0.3s; + opacity: 1; +} + +.card:hover { + cursor: pointer; + transform: translate(0px, -5px); + box-shadow: var(--dev-card-selected); +} + + + + + +.cardFaceContainer { + display: flex; + margin: 30px; +} + +.cardFace { + border-radius: 99px; + justify-content: center; + display: flex; + height: 100px; + width: 100px; +} + +.cardNameContainer { + margin-left: 15px; + display: flex; + justify-content: center; + align-items: center; +} + +.name { + font-size: 25px; + font-weight: 500; + width: 100%; + top: 124px; + left: 0; + color: var(--dev-text-color-normal); +} + +.titleText { + font-size: 10px; + font-weight: 400; + width: 100%; + letter-spacing: 2px; + top: 150px; + left: 0; + color: var(--dev-text-color-normal); +} + +.location { + font-size: 10px; + font-weight: 500; + width: 100%; + letter-spacing: 2px; + top: 141px; + left: 0; + color: var(--ifm-color-primary); +} + +.cardArrow { + position: absolute; + margin: 20px; + bottom: 5px; + right: 0; + width: 20px; +} + + + +.bio { + position: absolute; + margin: 30px auto; + font-size: 16px; + font-weight: 500; + width: 100%; + top: 100px; + left: 0; + color: var(--ifm-color-primary); + padding: 30px; +} + + +.cardData { + position: absolute; + bottom: 50px; + left: 20px; + display: flex; + align-items: center; +} + +.cardEye { + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + margin-left: 5px; + height: 18px; + width: 18px; +} + +.cardCommentText { + color: #96a9ba; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + margin-left: 5px; + margin-bottom: 5px; + height: 20px; + font-size: 16px; +} + +.cardDataLower { + position: absolute; + bottom: 20px; + left: 22px; + display: flex; + align-items: center; +} diff --git a/src/components/ambassador/AmbassadorCards/index.js b/src/components/ambassador/AmbassadorCards/index.js new file mode 100644 index 000000000..23aa93ab2 --- /dev/null +++ b/src/components/ambassador/AmbassadorCards/index.js @@ -0,0 +1,109 @@ +import React from 'react'; +import styles from './styles.module.css'; +import AmbassadorCard from '../AmbassadorCard'; +import BounceLoader from 'react-spinners/BounceLoader'; + +import {getAmbassadors, getAmbassadorDetails} from '../../../services/DiscourseService'; +export default function AmbassadorCards({ + expert + }) { + const [cardData, setCardData] = React.useState(); + const [loadingCards, setLoadingCards] = React.useState(true); + + const getPosts = async () => { + const data = await getAmbassadors(expert); + + const resultset = [] + if (data.members) { + const memberDetails = await getAmbassadorDetails(data.members.map(item => item.id)) + for (const member of data.members) { + const memberDetail = memberDetails.users.filter(item => item.id === member.id)[0] + if (member.avatar_template.includes("developer.sailpoint.com") && memberDetail.bio_excerpt && memberDetail.bio_excerpt.length > 60 && memberDetail.accepted_answers > 0) { + resultset.push(await getMemberList(member, memberDetail)) + } + } + resultset.sort((a, b) => a.date - b.date) + setCardData(resultset); + + } else { + setCardData(undefined); + } + setLoadingCards(false); + }; + + React.useEffect(() => { + getPosts(); + setCardData(undefined); + setLoadingCards(true); + }, []); + + if (cardData) { + return ( +
+
+ {cardData.map(function(a, index){ + return + })} +
+
+ ); + } else if (loadingCards) { + return ( + + ); + } else { + return ( +
+ {' '} + No Ambassadors Found with the Given Search Criteria +
+ ); + } +} + +async function getMemberList(member, details) { + + return { + name: member.name, + creatorImage: getavatarURL(member.avatar_template), + title: member.title, + bio: details.bio_excerpt, + member_since: new Date(member.added_at).toLocaleString('default', {month: 'long'}) + ' ' + new Date(member.added_at).toISOString().slice(0, 4), + badge_count: details.badge_count, + answers: details.accepted_answers, + location: details.location, + website: details.website_name, + link: + 'https://developer.sailpoint.com/discuss/u/' + + member.username + + '/summary', + }; +} + +function getavatarURL(avatar) { + if (avatar.includes("developer.sailpoint.com")) { + return "https://developer.sailpoint.com" + avatar.replace("{size}", "120") + } else { + return avatar.replace("{size}", "120") + } + +} + +function styleExcerpt(excerpt) { + if (excerpt.length > 150) { + return excerpt.slice(0, 150) + "..." + } else { + return excerpt.replace("…", "") + } +} + diff --git a/src/components/ambassador/AmbassadorCards/styles.module.css b/src/components/ambassador/AmbassadorCards/styles.module.css new file mode 100644 index 000000000..6314ea731 --- /dev/null +++ b/src/components/ambassador/AmbassadorCards/styles.module.css @@ -0,0 +1,35 @@ +/* Getting Started Card container */ +.gridContainer { + display: grid; + place-content: center; + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); + grid-gap: 40px; + margin-left: 40px; + margin-right: 40px; +} + +.center { + margin: 0px auto; + max-width: 1300px; + margin-bottom: 50px; +} + +.space { + height: 200px; +} + +.noFound { + font-size: 28px; + font-weight: 500; + color: var(--dev-secondary-text); + padding: 8px; + margin: 50px; +} + + + +.spinnerCenter { + margin: 100px auto; + max-width: 1300px; + margin-bottom: 50px; +} \ No newline at end of file diff --git a/src/components/blog/BlogBanner/index.js b/src/components/blog/BlogBanner/index.js new file mode 100644 index 000000000..e1ae1b386 --- /dev/null +++ b/src/components/blog/BlogBanner/index.js @@ -0,0 +1,19 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import Link from '@docusaurus/Link'; + +export default function BlogBanner() { + return ( +
+ +
+ +
+ Blog +
+
+
+ ); +} diff --git a/src/components/blog/BlogBanner/styles.module.css b/src/components/blog/BlogBanner/styles.module.css new file mode 100644 index 000000000..6382c3e3b --- /dev/null +++ b/src/components/blog/BlogBanner/styles.module.css @@ -0,0 +1,28 @@ + +.blogHeaderText { + position: relative; + color: #ffffff; + font-size: 48px; + max-width: 396px; + font-weight: bold; + line-height: 133%; + top: -84px; + left: 59px; +} + +.background { + width: 100%; + object-fit: repeat; + height: 100%; +} + +.imageContainer { + width: 100%; + height: 90px; + background: rgb(0,51,161); + background: linear-gradient(90deg, rgba(0,51,161,1) 0%, rgba(84,192,232,1) 100%); +} + +.headerImage { + height: 90px; +} \ No newline at end of file diff --git a/src/components/blog/BlogCard/index.js b/src/components/blog/BlogCard/index.js new file mode 100644 index 000000000..a3af4a5ac --- /dev/null +++ b/src/components/blog/BlogCard/index.js @@ -0,0 +1,59 @@ +import React from 'react'; +import styles from './styles.module.css'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; +import {addDarkToFileName} from '../../../util/util'; +export default function BlogCard({ + link, + title, + tags, + creatorImage, + image, + excerpt, + name, + views, + replies, + readTime +}) { + + return ( + +
+ +
+ +
{views}
+ +
{replies}
+ +
{readTime} minute read
+
+ +
+ +
{name}
+
+ + +
+ +
{title}
+
+ {tags?.map((tag, index) => { + if (index > 2) { + return ''; + } + return
{tag}
; + })} +
+
{excerpt}
+
+ + + + +
+ + ); +} diff --git a/src/components/blog/BlogCard/styles.module.css b/src/components/blog/BlogCard/styles.module.css new file mode 100644 index 000000000..19eaa3be2 --- /dev/null +++ b/src/components/blog/BlogCard/styles.module.css @@ -0,0 +1,127 @@ +/* Getting Started Card */ +.card { + position: relative; + margin-top: 20px; + height: 650px; + /* UI Properties */ + background: var(--dev-card-background); + box-shadow: var(--dev-card-shadow); + border: 1px solid var(--dev-card-background); + border-radius: 40px; + opacity: 1; + transition: all 0.3s; + max-width: 600px; +} + +.card:hover { + cursor: pointer; + transform: translate(0px, -5px); + box-shadow: var(--dev-card-selected); +} + + + + + +.cardText { + position: absolute; + margin: 22px; + min-width: 170px; + top: 10px; + left: 0; +} + + +.cardTitle { + font-size: 22px; + font-weight: 700; +} + +.cardBody { + font-size: 16px; + font-weight: 500; + top: 10px; + left: 0; +} + +.tag { + font-size: 16px; + font-weight: 500; + color: var(--dev-secondary-text); + background-color: var(--dev-tag-highlight); + padding: 0px 8px; + margin-left: 5px; + margin-top: 5px; +} + +.tags { + margin: 0px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + + + + + +.cardUser { + position: absolute; + bottom: 10px; + left: 25px; + display: flex; +} + +.cardFace { + border-radius: 9999px; + margin: auto; + height: 40px; + width: 40px; +} + +.cardName { + min-width: 170px; + margin-top: 7px; + margin-left: 10px; +} + + + + + +.cardData { + position: absolute; + bottom: 50px; + left: 20px; + display: flex; + align-items: center; +} + +.cardEye { + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + margin-left: 5px; + height: 18px; + width: 18px; +} + +.cardComment { + margin-left: 10px; + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + height: 18px; + width: 18px; + margin-bottom: 4px; +} + +.cardCommentText { + color: #96a9ba; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + margin-left: 5px; + margin-bottom: 5px; + height: 20px; + font-size: 16px; +} + diff --git a/src/components/blog/BlogCards/index.js b/src/components/blog/BlogCards/index.js new file mode 100644 index 000000000..530d71dd9 --- /dev/null +++ b/src/components/blog/BlogCards/index.js @@ -0,0 +1,109 @@ +import React from 'react'; +import styles from './styles.module.css'; +import BlogCard from '../BlogCard'; +import BounceLoader from 'react-spinners/BounceLoader'; + +import {getBlogPosts, getTopic} from '../../../services/DiscourseService'; +export default function BlogCards({ + filterCallback + }) { + const [cardData, setCardData] = React.useState(); + const [loadingCards, setLoadingCards] = React.useState(true); + + const getPosts = async () => { + const data = await getBlogPosts(filterCallback.join(',')); + const resultset = [] + if (data.topics) { + for (const topic of data.topics) { + resultset.push(await getPostList(topic)) + } + setCardData(resultset); + } else { + setCardData(undefined); + } + setLoadingCards(false); + }; + + React.useEffect(() => { + getPosts(); + setCardData(undefined); + setLoadingCards(true); + }, [filterCallback]); + + if (cardData) { + return ( +
+
+ {cardData.map(function(a, index){ + return + })} +
+
+ ); + } else if (loadingCards) { + return ( + + ); + } else { + return ( +
+ {' '} + No Blogposts Found with the Given Search Criteria +
+ ); + } +} + +async function getPostList(topic) { + const fullTopic = await getTopic(topic.id); + return { + name: fullTopic.details.created_by.name, + excerpt: styleExcerpt(topic.excerpt), + creatorImage: getavatarURL(fullTopic.details.created_by.avatar_template), + tags: topic.tags, + image: fullTopic.image_url, + link: + 'https://developer.sailpoint.com/discuss/t/' + + topic.slug + + '/' + + topic.id, + title: topic.title, + views: fullTopic.views, + liked: topic.like_count, + replies: fullTopic.posts_count, + solution: topic.has_accepted_answer, + readTime: parseInt(fullTopic.word_count/100), + }; +} + +function getavatarURL(avatar) { + return "https://developer.sailpoint.com" + avatar.replace("{size}", "120") +} + +function styleExcerpt(excerpt) { + if (excerpt.length > 150) { + return excerpt.slice(0, 150) + "..." + } else { + return excerpt.replace("…", "") + } +} + diff --git a/src/components/blog/BlogCards/styles.module.css b/src/components/blog/BlogCards/styles.module.css new file mode 100644 index 000000000..6dea5ccfc --- /dev/null +++ b/src/components/blog/BlogCards/styles.module.css @@ -0,0 +1,35 @@ +/* Getting Started Card container */ +.gridContainer { + display: grid; + place-content: center; + grid-template-columns: repeat(auto-fit, minmax(345px, 1fr)); + grid-gap: 40px; + margin-left: 40px; + margin-right: 40px; +} + +.center { + margin: 0px auto; + max-width: 1300px; + margin-bottom: 50px; +} + +.space { + height: 200px; +} + +.noFound { + font-size: 28px; + font-weight: 500; + color: var(--dev-secondary-text); + padding: 8px; + margin: 50px; +} + + + +.spinnerCenter { + margin: 100px auto; + max-width: 1300px; + margin-bottom: 50px; +} \ No newline at end of file diff --git a/src/components/blog/BlogSidebar/BlogSidebarButton/index.js b/src/components/blog/BlogSidebar/BlogSidebarButton/index.js new file mode 100644 index 000000000..48b9e676a --- /dev/null +++ b/src/components/blog/BlogSidebar/BlogSidebarButton/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import styles from './styles.module.css'; + + +export default function BlogSidebarButton({ + filterCallback, + text + }) { + const [isActive, setIsActive] = React.useState(false); + const activeClass = isActive ? styles.tagSelected : '' + function setFilters(e, f) { + filterCallback(f) + setIsActive(current => !current); + } + return
setFilters(e, text)} className={activeClass + ' ' + styles.tag}>{text}
+ +} diff --git a/src/components/blog/BlogSidebar/BlogSidebarButton/styles.module.css b/src/components/blog/BlogSidebar/BlogSidebarButton/styles.module.css new file mode 100644 index 000000000..7be4bbadc --- /dev/null +++ b/src/components/blog/BlogSidebar/BlogSidebarButton/styles.module.css @@ -0,0 +1,36 @@ + +.tag { + font-size: 16px; + font-weight: 500; + color: var(--dev-secondary-text); + padding: 8px; + margin-right: 5px; + margin-top: 5px; + margin-bottom: 5px; + border-style: solid; + border-width: 1px; + border-color: var(--dev-text-color-normal); + transition: background-color 500ms; +} + +.tagSelected { + font-size: 16px; + font-weight: 500; + background-color: var(--dev-secondary-text); + color: var(--dev-card-background); + padding: 8px; + margin-right: 5px; + margin-bottom: 5px; + margin-top: 5px; + border-style: solid; + border-width: 1px; + border-color: var(--dev-text-color-normal); + transition: background-color 500ms; +} + +.tag:hover { + cursor: pointer; + background-color: var(--dev-text-color-normal); + color: var(--dev-card-background); +} + diff --git a/src/components/blog/BlogSidebar/index.js b/src/components/blog/BlogSidebar/index.js new file mode 100644 index 000000000..155690f9f --- /dev/null +++ b/src/components/blog/BlogSidebar/index.js @@ -0,0 +1,72 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import Link from '@docusaurus/Link'; +import { getTags } from '../../../services/DiscourseService'; +import BlogSidebarButton from './BlogSidebarButton'; + +export default function BlogSidebar({ + filterCallback + }) { + const [tagProductData, setTagProductData] = React.useState(); + const [tagTechnologyData, setTagTechnologyData] = React.useState(); + const [filterTags, setFilterTags] = React.useState(true); + + const getTagData = async () => { + const data = await getTags(); + const tagTechnologyResultset = [] + const tagProductResultset = [] + for (const tagGroup of data.extras.tag_groups) { + if (tagGroup.id === 20) { + for (const tag of tagGroup.tags) { + tagProductResultset.push(tag.text) + } + } + if (tagGroup.id === 17) { + for (const tag of tagGroup.tags) { + tagTechnologyResultset.push(tag.text) + } + } + } + setTagProductData(tagProductResultset) + setTagTechnologyData(tagTechnologyResultset) + }; + + function toggleSeeAll() { + filterTags ? setFilterTags(false) : setFilterTags(true) + } + + + React.useEffect(() => { + getTagData(); + }, []); + + const filterText = filterTags ? 'See All Tags' : 'See Less Tags' + + if (tagProductData && tagTechnologyData) { + return ( +
+
Blogs by Product
+
+ {tagProductData.map(function(a, index){ + return + })} +
+
Blogs by Identity Governance
+
+ {tagTechnologyData.map(function(a, index){ + return
10 && filterTags ? styles.hidden : ''} >
+ })} +
+
toggleSeeAll()}> + {filterText} + {/* */} +
+
+ + ); + } else { + return
; + } +} diff --git a/src/components/blog/BlogSidebar/styles.module.css b/src/components/blog/BlogSidebar/styles.module.css new file mode 100644 index 000000000..563a05fb1 --- /dev/null +++ b/src/components/blog/BlogSidebar/styles.module.css @@ -0,0 +1,40 @@ + +.sidebar { + width: 400px; + height: 100%; + margin-left: 50px; +} + +.tagHeader { + margin-top: 30px; + font-size: 22px; + font-weight: 700; +} + +.tagContainer { + display: flex; + flex-wrap: wrap; +} + + +.hidden { + display: none; +} + +.seeAll { + margin-top: 5px; + margin-bottom: 10px; + color: var(--dev-secondary-text); + border-style: solid; + border-width: 1px; + width: 100%; + transition: background-color 500ms; + text-align: center; + +} + +.seeAll:hover { + cursor: pointer; + background-color: var(--dev-text-color-normal); + color: var(--dev-card-background); +} diff --git a/src/components/homepage/DiscussCard/index.js b/src/components/homepage/DiscussCard/index.js index 769c6087f..f9ed059a6 100644 --- a/src/components/homepage/DiscussCard/index.js +++ b/src/components/homepage/DiscussCard/index.js @@ -64,7 +64,7 @@ export default function DiscussCard({ if (index > 2) { return ''; } - return
{tag}
; + return
{tag}
; })} diff --git a/src/components/homepage/HomepageBasics/styles.module.css b/src/components/homepage/HomepageBasics/styles.module.css index 80cb9a88c..f127091c3 100644 --- a/src/components/homepage/HomepageBasics/styles.module.css +++ b/src/components/homepage/HomepageBasics/styles.module.css @@ -33,8 +33,9 @@ cursor: pointer; top: -2px; box-shadow: 0 4px 5px rgba(0, 0, 0, 0.2); - background-color: #c552ae10; + background-color: var(--dev-button-hover); color: #cc27b0; + text-decoration: none; } .button { @@ -56,6 +57,7 @@ box-shadow: 0px 20px 60px #00000015; border: 2px solid #df61ca; border-radius: 5px; + transition: all 0.3s; } .link { @@ -63,4 +65,5 @@ } .link:hover { color: #df61ca; + text-decoration: none; } diff --git a/src/components/homepage/HomepageGettingStarted/styles.module.css b/src/components/homepage/HomepageGettingStarted/styles.module.css index 3597eabaf..1d89a5045 100644 --- a/src/components/homepage/HomepageGettingStarted/styles.module.css +++ b/src/components/homepage/HomepageGettingStarted/styles.module.css @@ -73,7 +73,7 @@ grid-template-columns: repeat(auto-fit, minmax(520px, 1fr)); /* UI Properties */ background: var(--main-hero-card-background); - box-shadow: var(--dev-card-shadow); + box-shadow: var(--dev-main-card-shadow); border: 1px solid var(--dev-card-background); border-radius: 40px; opacity: 1; diff --git a/src/components/homepage/HomepageTeam/styles.module.css b/src/components/homepage/HomepageTeam/styles.module.css index 46833caf9..1b86a741e 100644 --- a/src/components/homepage/HomepageTeam/styles.module.css +++ b/src/components/homepage/HomepageTeam/styles.module.css @@ -2,13 +2,14 @@ .gridContainer { display: grid; place-content: center; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fit, minmax(195px, 1fr)); grid-gap: 40px; margin-left: 40px; margin-right: 40px; } .center { - margin: 50px auto; - max-width: 1000px; + margin: 0px auto; + max-width: 1300px; + margin-bottom: 50px; } diff --git a/src/components/marketplace/MarketplaceBanner/index.js b/src/components/marketplace/MarketplaceBanner/index.js new file mode 100644 index 000000000..8a3a49cb4 --- /dev/null +++ b/src/components/marketplace/MarketplaceBanner/index.js @@ -0,0 +1,22 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import Link from '@docusaurus/Link'; + +export default function MarketplaceBanner() { + return ( +
+ +
+ +
+ Marketplace +
+
+ + + +
+ ); +} diff --git a/src/components/marketplace/MarketplaceBanner/styles.module.css b/src/components/marketplace/MarketplaceBanner/styles.module.css new file mode 100644 index 000000000..b4570f741 --- /dev/null +++ b/src/components/marketplace/MarketplaceBanner/styles.module.css @@ -0,0 +1,28 @@ + +.blogHeaderText { + position: relative; + color: #ffffff; + font-size: 48px; + max-width: 459px; + font-weight: bold; + line-height: 130%; + top: -84px; + left: 101px; +} + +.background { + width: 100%; + object-fit: repeat; + height: 100%; +} + +.imageContainer { + width: 100%; + height: 90px; + background: rgb(0,51,161); + background: linear-gradient(90deg, rgba(0,51,161,1) 0%, rgba(84,192,232,1) 100%); +} + +.headerImage { + height: 90px; +} \ No newline at end of file diff --git a/src/components/marketplace/MarketplaceCard/index.js b/src/components/marketplace/MarketplaceCard/index.js new file mode 100644 index 000000000..1c40f9af8 --- /dev/null +++ b/src/components/marketplace/MarketplaceCard/index.js @@ -0,0 +1,68 @@ +import React from 'react'; +import styles from './styles.module.css'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; +import {addDarkToFileName} from '../../../util/util'; +import ReactMarkdown from 'react-markdown' +export default function MarketplaceCard({ + post, + openDialogFunc, +}) { + + function setFilters(e) { + openDialogFunc({"title": post.title, "image": post.image, "link": post.link, "id": post.id}); + } + + let badge = ( +
+ ); + if (post.tags.includes("sailpoint-authored")) { + badge = ( + + ); + } + + + return ( +
setFilters(e)}> +
+ +
+ +
{post.views}
+ +
{post.replies}
+
+ +
+ +
{post.name}
+
+ + + {badge} + +
+ +
{post.title}
+
+ {post.tags?.map((tag, index) => { + if (index > 2) { + return ''; + } + return
{tag}
; + })} +
+ {post.excerpt} +
+ + + + +
+
+ ); +} diff --git a/src/components/marketplace/MarketplaceCard/styles.module.css b/src/components/marketplace/MarketplaceCard/styles.module.css new file mode 100644 index 000000000..5dd9f3464 --- /dev/null +++ b/src/components/marketplace/MarketplaceCard/styles.module.css @@ -0,0 +1,138 @@ +/* Getting Started Card */ +.card { + position: relative; + margin-top: 20px; + height: 650px; + /* UI Properties */ + background: var(--dev-card-background); + box-shadow: var(--dev-card-shadow); + border: 1px solid var(--dev-card-background); + border-radius: 40px; + opacity: 1; + transition: all 0.3s; + max-width: 600px; +} + +.card:hover { + cursor: pointer; + transform: translate(0px, -5px); + box-shadow: var(--dev-card-selected); +} + + + + + +.cardText { + position: absolute; + margin: 22px; + min-width: 170px; + top: 10px; + left: 0; +} + + +.cardTitle { + font-size: 22px; + font-weight: 700; +} + +.cardBody { + font-size: 16px; + font-weight: 500; + top: 10px; + left: 0; +} + +.tag { + font-size: 16px; + font-weight: 500; + color: var(--dev-secondary-text); + background-color: var(--dev-tag-highlight); + padding: 0px 8px; + margin-left: 5px; + margin-top: 5px; +} + +.tags { + margin: 0px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + + + + + +.cardUser { + position: absolute; + bottom: 10px; + left: 25px; + display: flex; +} + +.cardFace { + border-radius: 9999px; + margin: auto; + height: 40px; + width: 40px; +} + +.cardName { + min-width: 170px; + margin-top: 7px; + margin-left: 10px; +} + + + + + +.cardData { + position: absolute; + bottom: 50px; + left: 20px; + display: flex; + align-items: center; +} + +.cardEye { + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + margin-left: 5px; + height: 18px; + width: 18px; +} + +.cardComment { + margin-left: 10px; + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + height: 18px; + width: 18px; + margin-bottom: 4px; +} + +.cardCommentText { + color: #96a9ba; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + margin-left: 5px; + margin-bottom: 5px; + height: 20px; + font-size: 16px; +} + + + + +.cardBadge { + position: absolute; + right: 5px; + bottom: 0px; + margin-left: 5px; + height: 120px; + width: 120px; +} \ No newline at end of file diff --git a/src/components/marketplace/MarketplaceCardDetail/index.js b/src/components/marketplace/MarketplaceCardDetail/index.js new file mode 100644 index 000000000..037f8dda9 --- /dev/null +++ b/src/components/marketplace/MarketplaceCardDetail/index.js @@ -0,0 +1,108 @@ +import React from 'react'; +import styles from './styles.module.css'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; +import {addDarkToFileName} from '../../../util/util'; +import {Tab, Tabs, TabList, TabPanel} from 'react-tabs'; +import 'react-tabs/style/react-tabs.css'; +import ReactMarkdown from 'react-markdown'; +import BounceLoader from 'react-spinners/BounceLoader'; +export default function MarketplaceCardDetail({details, rawPost}) { + const getDivText = (data, id) => { + const requirementPosition = data.indexOf('id="' + id + '"'); + const requirementEndPosition = data.indexOf('', requirementPosition); + if (requirementPosition > 0 && requirementEndPosition > 0) { + const validContent = data.substring( + requirementPosition + 6 + id.length, + requirementEndPosition, + ); + const incorrectURLPattern = /upload:\/\/([^"]+)/g; + const correctURLPattern = + 'https://developer.identitysoon.com/discuss/uploads/short-url/$1'; + return validContent.replace(incorrectURLPattern, correctURLPattern); + } else { + return 'No requirements found for this marketplace item'; + } + // https://developer.identitysoon.com/discuss/uploads/short-url/f9rlt0eoj7RnpndvL0CHjcEesV0.png?dl=1\ + // upload://f9rlt0eoj7RnpndvL0CHjcEesV0.png + }; + + const goToLink = (link) => { + window.open(link, '_blank'); + }; + + if (details) { + return ( +
+
+
{details.title}
+ +
+ + + + Details + Requirements + Support + + + + + {getDivText(rawPost, 'details')} + + + + + + + {getDivText(rawPost, 'requirements')} + + + + + {getDivText(rawPost, 'support')} + + + +
+ ); + } else { + return ( + + ); + } +} diff --git a/src/components/marketplace/MarketplaceCardDetail/styles.module.css b/src/components/marketplace/MarketplaceCardDetail/styles.module.css new file mode 100644 index 000000000..cd921b7da --- /dev/null +++ b/src/components/marketplace/MarketplaceCardDetail/styles.module.css @@ -0,0 +1,80 @@ +.detailContainer { + max-width: 937px; +} + +.detailHeader { + display: flex; + justify-content: center; + align-items: center; + margin: 20px; +} + +.detailImage { + border-radius: 40px; + max-width: 400px; + min-width: 180px; +} + +.detailTitle { + margin: 45px; + font-size: 48px; + font-weight: 500; + color: var(--dev-secondary-text); + text-shadow: rgba(17, 61, 158, 0.64) 1px 2px 2px; +} + +.detailTabContent { + margin: 20px; +} + +.detailTabs { + margin: 10px; +} + + +.modalButtonText { + position: relative; + top: -2px; +} + +.modalButton { + border: 1px solid var(--ifm-color-primary); + box-shadow: 1px 4px 10px rgba(0, 0, 0, 0.12); + border-radius: 24px; + color: var(--ifm-color-primary); + margin: 10px; + padding: 10px; + text-align: center; + width: 125px; + background-color: #ffffff31; +} + +.modalButton:hover { + cursor: pointer; + top: -2px; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.4); + background-color: #dae1e9; + color: #005fc4; +} + +.spinnerCenter { + margin: 30vh 20vh; +} + +@media only screen and (max-width: 768px) { + .detailImage { + display: none; + } +} + +.buttonImage { + position: relative; + left: -7px; + top: 4px; + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + margin-left: 5px; + height: 18px; + width: 18px; +} \ No newline at end of file diff --git a/src/components/marketplace/MarketplaceCards/index.js b/src/components/marketplace/MarketplaceCards/index.js new file mode 100644 index 000000000..3dd5ca268 --- /dev/null +++ b/src/components/marketplace/MarketplaceCards/index.js @@ -0,0 +1,154 @@ +import React from 'react'; +import styles from './styles.module.css'; +import MarketplaceCard from '../MarketplaceCard'; +import Modal from 'react-modal'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import BounceLoader from 'react-spinners/BounceLoader'; + +import { + getMarketplacePosts, + getMarketplaceTopic, + getMarketplaceTopicRaw, +} from '../../../services/DiscourseService'; +import MarketplaceCardDetail from '../MarketplaceCardDetail'; +export default function MarketplaceCards({filterCallback}) { + const [cardData, setCardData] = React.useState(); + const [detailsOpen, setDetailsOpen] = React.useState(false); + const [details, setDetails] = React.useState(''); + const [loadingCards, setLoadingCards] = React.useState(true); + + const getPosts = async () => { + const data = await getMarketplacePosts(filterCallback.join(',')); + console.log(data) + const resultset = []; + if (data.topics) { + for (const topic of data.topics) { + if (topic.tags.length > 0) { + resultset.push(await getPostList(topic)); + } + } + setCardData(resultset); + } else { + setCardData(undefined); + } + setLoadingCards(false); + }; + + const getDetails = async (data) => { + const raw = await getMarketplaceTopicRaw(data.id); + setDetails({data: data, raw: raw}); + }; + + // callback that gets called when clicking on a card + const openDialog = (data) => { + setDetails({data: undefined, raw: undefined}); + getDetails(data); + setDetailsOpen(true); + }; + + React.useEffect(() => {}, [detailsOpen, details]); + + Modal.setAppElement('#__docusaurus'); + React.useEffect(() => { + getPosts(); + setCardData(undefined); + setLoadingCards(true); + }, [filterCallback]); + + + const xImage = useBaseUrl('/icons/circle-xmark-regular.svg') + + if (cardData) { + return ( +
+
+ {cardData.map(function (a, index) { + return ( + + ); + })} +
+ +
+
+ +
+ { + setDetailsOpen(false); + }}> +
+
+
+ ); + } else if (loadingCards) { + return ( + + ); + } else { + return ( +
+ {' '} + No Marketplace Item Found with the Given Search Criteria +
+ ); + } +} + +async function getPostList(topic) { + const fullTopic = await getMarketplaceTopic(topic.id); + return { + id: topic.id, + name: fullTopic.details.created_by.name, + excerpt: styleExcerpt(topic.excerpt), + creatorImage: getavatarURL(fullTopic.details.created_by.avatar_template), + tags: topic.tags, + image: fullTopic.image_url, + link: + 'https://developer.sailpoint.com/discuss/t/' + + topic.slug + + '/' + + topic.id, + title: topic.title, + views: fullTopic.views, + liked: topic.like_count, + replies: fullTopic.posts_count, + solution: topic.has_accepted_answer, + readTime: parseInt(fullTopic.word_count / 100), + }; +} + +function getavatarURL(avatar) { + return 'https://developer.sailpoint.com' + avatar.replace('{size}', '120'); +} + +function styleExcerpt(excerpt) { + if (excerpt) { + // remove any strings that have colons between them + excerpt = excerpt.replace(/:[^:]*:/g, ''); + if (excerpt.length > 150) { + return excerpt.slice(0, 100) + '...'; + } else { + return excerpt.replace('…', ''); + } + } else { + return ''; + } +} diff --git a/src/components/marketplace/MarketplaceCards/styles.module.css b/src/components/marketplace/MarketplaceCards/styles.module.css new file mode 100644 index 000000000..549642a08 --- /dev/null +++ b/src/components/marketplace/MarketplaceCards/styles.module.css @@ -0,0 +1,78 @@ +/* Getting Started Card container */ +.gridContainer { + display: grid; + place-content: center; + grid-template-columns: repeat(auto-fit, minmax(345px, 1fr)); + grid-gap: 40px; + margin-left: 40px; + margin-right: 40px; +} + +.center { + margin: 0px auto; + max-width: 1300px; + margin-bottom: 50px; +} + +.space { + height: 200px; +} + +.noFound { + font-size: 28px; + font-weight: 500; + color: var(--dev-secondary-text); + padding: 8px; + margin: 50px; +} + + + + +.modal { + position: absolute; + top: 50%; + left: 50%; + right: auto; + bottom: auto; + margin-right: -50%; + transform: translate(-50%, -50%); + box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.25); + border-radius: 20px; + background-color: var(--dev-card-background); + max-height: 100%; + max-width: 90%; + min-height: 80%; + scroll-behavior: auto; + overflow-y: auto; +} + + + + +.cardExit { + position: absolute; + top: 6px; + right: 6px; + fill: #96a9bb; + /* computed from codepen https://codepen.io/sosuke/pen/Pjoqqp */ + filter: invert(79%) sepia(12%) saturate(484%) hue-rotate(168deg) brightness(84%) contrast(84%); + margin-left: 5px; + height: 24px; + width: 24px; + transition: all 0.2s; +} + +.cardExit:hover { + top: 8px; + cursor: pointer; + height: 23px; + width: 23px; +} + + +.spinnerCenter { + margin: 100px auto; + max-width: 1300px; + margin-bottom: 50px; +} \ No newline at end of file diff --git a/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/index.js b/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/index.js new file mode 100644 index 000000000..d6c84eb81 --- /dev/null +++ b/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import styles from './styles.module.css'; + + +export default function MarketplaceSidebarButton({ + filterCallback, + text + }) { + const [isActive, setIsActive] = React.useState(false); + const activeClass = isActive ? styles.tagSelected : '' + function setFilters(e, f) { + filterCallback(f) + setIsActive(current => !current); + } + return
setFilters(e, text)} className={activeClass + ' ' + styles.tag}>{text}
+ +} diff --git a/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/styles.module.css b/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/styles.module.css new file mode 100644 index 000000000..7be4bbadc --- /dev/null +++ b/src/components/marketplace/MarketplaceSidebar/MarketplaceSidebarButton/styles.module.css @@ -0,0 +1,36 @@ + +.tag { + font-size: 16px; + font-weight: 500; + color: var(--dev-secondary-text); + padding: 8px; + margin-right: 5px; + margin-top: 5px; + margin-bottom: 5px; + border-style: solid; + border-width: 1px; + border-color: var(--dev-text-color-normal); + transition: background-color 500ms; +} + +.tagSelected { + font-size: 16px; + font-weight: 500; + background-color: var(--dev-secondary-text); + color: var(--dev-card-background); + padding: 8px; + margin-right: 5px; + margin-bottom: 5px; + margin-top: 5px; + border-style: solid; + border-width: 1px; + border-color: var(--dev-text-color-normal); + transition: background-color 500ms; +} + +.tag:hover { + cursor: pointer; + background-color: var(--dev-text-color-normal); + color: var(--dev-card-background); +} + diff --git a/src/components/marketplace/MarketplaceSidebar/index.js b/src/components/marketplace/MarketplaceSidebar/index.js new file mode 100644 index 000000000..f62bdaf67 --- /dev/null +++ b/src/components/marketplace/MarketplaceSidebar/index.js @@ -0,0 +1,72 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import Link from '@docusaurus/Link'; +import { getTags } from '../../../services/DiscourseService'; +import MarketplaceSidebarButton from './MarketplaceSidebarButton'; + +export default function MarketplaceSidebar({ + filterCallback + }) { + const [tagProductData, setTagProductData] = React.useState(); + const [tagTechnologyData, setTagTechnologyData] = React.useState(); + const [filterTags, setFilterTags] = React.useState(true); + + const getTagData = async () => { + const data = await getTags(); + const tagTechnologyResultset = [] + const tagProductResultset = [] + for (const tagGroup of data.extras.tag_groups) { + if (tagGroup.id === 20) { + for (const tag of tagGroup.tags) { + tagProductResultset.push(tag.text) + } + } + if (tagGroup.id === 17) { + for (const tag of tagGroup.tags) { + tagTechnologyResultset.push(tag.text) + } + } + } + setTagProductData(tagProductResultset) + setTagTechnologyData(tagTechnologyResultset) + }; + + function toggleSeeAll() { + filterTags ? setFilterTags(false) : setFilterTags(true) + } + + + React.useEffect(() => { + getTagData(); + }, []); + + const filterText = filterTags ? 'See All Tags' : 'See Less Tags' + + if (tagProductData && tagTechnologyData) { + return ( +
+
Items by Product
+
+ {tagProductData.map(function(a, index){ + return + })} +
+
Items by Identity Governance
+
+ {tagTechnologyData.map(function(a, index){ + return
10 && filterTags ? styles.hidden : ''} >
+ })} +
+
toggleSeeAll()}> + {filterText} + {/* */} +
+
+ + ); + } else { + return
; + } +} diff --git a/src/components/marketplace/MarketplaceSidebar/styles.module.css b/src/components/marketplace/MarketplaceSidebar/styles.module.css new file mode 100644 index 000000000..563a05fb1 --- /dev/null +++ b/src/components/marketplace/MarketplaceSidebar/styles.module.css @@ -0,0 +1,40 @@ + +.sidebar { + width: 400px; + height: 100%; + margin-left: 50px; +} + +.tagHeader { + margin-top: 30px; + font-size: 22px; + font-weight: 700; +} + +.tagContainer { + display: flex; + flex-wrap: wrap; +} + + +.hidden { + display: none; +} + +.seeAll { + margin-top: 5px; + margin-bottom: 10px; + color: var(--dev-secondary-text); + border-style: solid; + border-width: 1px; + width: 100%; + transition: background-color 500ms; + text-align: center; + +} + +.seeAll:hover { + cursor: pointer; + background-color: var(--dev-text-color-normal); + color: var(--dev-card-background); +} diff --git a/src/css/custom.css b/src/css/custom.css index d543c0a18..98f7ea3ee 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -244,13 +244,16 @@ --dev-text-color-secondary: #0033a1; --dev-secondary-text: #415364; + --dev-tag-highlight: #eaeef1; --text-on-primary: #ffffff; /*card css*/ - --dev-card-background: #ffffff; - --dev-card-shadow: 0px 20px 60px #00000015; + --dev-card-background: #e9e9e963; + --dev-card-shadow: 0px 0px 0px #6b6b6b15; + --dev-main-card-shadow: 0px 20px 60px #00000015; --dev-card-selected: 0 4px 5px rgba(0, 0, 0, 0.2); + --dev-button-hover: #c552ae10; --ifm-github-logo: url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E"); --ifm-medium-logo: url('data:image/svg+xml;utf8,'); @@ -283,9 +286,12 @@ /*card css*/ --dev-card-background: #2a2b2d; - --dev-card-shadow: 0 4px 5px rgba(0, 0, 0, 0.2); - --dev-card-selected: 0 5px 5px rgba(107, 107, 107, 0.2); + --dev-card-shadow: 0 0px 0px rgba(0, 0, 0, 0.2); + --dev-main-card-shadow: 0 4px 5px rgba(0, 0, 0, 0.2); + --dev-card-selected: 0 5px 5px rgba(151, 151, 151, 0.2); --dev-secondary-text: #dae1e9; + --dev-tag-highlight: #00000075; + --dev-button-hover: #c552ae40; /*main hero card*/ --main-hero-card-background: #202122; diff --git a/src/pages/ambassador-program.js b/src/pages/ambassador-program.js new file mode 100644 index 000000000..3b6047c1b --- /dev/null +++ b/src/pages/ambassador-program.js @@ -0,0 +1,64 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import AmbassadorBanner from '../components/ambassador/AmbassadorBanner'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import styles from './ambassador.module.css'; +import AmbassadorCards from '../components/ambassador/AmbassadorCards'; + +export default function Ambassador() { + const {siteConfig} = useDocusaurusContext(); + + return ( + +
+ {/* */} +
+ +
+ Our Ambassador Program offers not just exclusive benefits but also + an enriching learning experience on SailPoint; it's a journey to + expertise. As an Ambassador, your contributions foster community + growth, enabling knowledge-sharing among experts like you. + +
Become an Ambassador
+ +
+
+
+
Expert Ambassadors
+
+
+
+ +
+
+
+ +
+
+
Ambassadors
+
+
+
+ +
+
+ +
+ +
+
+
+ ); +} diff --git a/src/pages/ambassador.module.css b/src/pages/ambassador.module.css new file mode 100644 index 000000000..6f4ce2d30 --- /dev/null +++ b/src/pages/ambassador.module.css @@ -0,0 +1,142 @@ + +.gridContainer { + display: grid; + place-content: center; + grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); + grid-gap: 40px; + margin-left: 40px; + margin-right: 40px; + } + + .center { + margin: 50px auto; + max-width: 1000px; + } + + .headerText { + text-align: center; + display: flex; + margin: 100px auto 0px auto; + width: calc(100% - 100px); + justify-content: center; + } + + .headerTextOne { + color: var(--ifm-color-primary); + font-size: 30px; + font-weight: bold; + line-height: 100%; + } + + + + + + .spanLeft { + width: 35%; + margin: 14px; + position: relative; + top: -45px; + border-bottom-width:2px; + border-bottom-style:solid; + border-bottom-color:var(--ifm-color-primary); + } + + + + .imageContainer { + text-align: center; + display: flex; + justify-content: center; + } + + .ambassadorImage { + margin-left: 5px; + padding: 20px; + height: 120px; + width: 120px; + } + + + .ambassadorPurposeContainer { + display: flex; + justify-content: center; + width: calc(75% + 75px); + align-items: center; + margin: 0px auto 0px auto; + } + + + .ambassadorPurposeText { + font-size: 21px; + padding: 50px 0px 50px 50px; + font-weight: 500; + color: var(--dev-text-color-normal); + } + + .ambassadorPurposeImage { + width: 40%; + box-shadow: var(--dev-card-selected); + border-radius: 40px; + margin: 50px 50px 50px 0px; + } + + @media only screen and (max-width: 1460px) { + .ambassadorPurposeContainer { + flex-direction: column; + } + .ambassadorPurposeImage { + width: 80%; + margin: 50px 50px 50px 50px; + } + .ambassadorPurposeText { + padding: 50px 50px 50px 50px; + } +} + + + + + + + + + +.button:hover { + cursor: pointer; + top: -2px; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.2); + background-color: #c552ae10; + color: #cc27b0; + background-color: var(--dev-button-hover); +} + +.button { + text-decoration: none; + text-align: center; + margin: 30px auto; + font-size: 20px; + font-weight: bold; + line-height: 100%; + + /* Layout Properties */ + width: 314px; + height: 61px; + line-height: 61px; + /* UI Properties */ + background: transparent 0% 0% no-repeat padding-box; + opacity: 1; + + box-shadow: 0px 20px 60px #00000015; + border: 2px solid #df61ca; + border-radius: 5px; + transition: all 0.3s; +} + +.link { + color: #df61ca; +} +.link:hover { + color: #df61ca; + text-decoration: none; +} diff --git a/src/pages/blog.js b/src/pages/blog.js new file mode 100644 index 000000000..b8e30ec62 --- /dev/null +++ b/src/pages/blog.js @@ -0,0 +1,41 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import BlogBanner from '../components/blog/BlogBanner'; + +import styles from './blog.module.css'; +import BlogCards from '../components/blog/BlogCards'; +import BlogSidebar from '../components/blog/BlogSidebar'; + +export default function Blog() { + const [filteredProduct, setFilteredProduct] = React.useState([]); + + const {siteConfig} = useDocusaurusContext(); + + const handleClick = (data) => { + var tempFilter = filteredProduct.slice() + + const index = tempFilter.indexOf(data); + if (index !== -1) { + tempFilter.splice(index, 1); + } else { + tempFilter.push(data) + } + + setFilteredProduct(tempFilter) + }; + return ( + +
+ +
+
+
+
+ +
+
+ ); +} diff --git a/src/pages/blog.module.css b/src/pages/blog.module.css new file mode 100644 index 000000000..d16546f19 --- /dev/null +++ b/src/pages/blog.module.css @@ -0,0 +1,17 @@ +.blogContainer { + display: flex; +} + +.blogSidbarContainer { + flex: 5%; +} + +@media only screen and (max-width: 870px) { + .blogSidbarContainer { + display: none; + } +} + +.blogCardContainer { + flex: 95%; +} \ No newline at end of file diff --git a/src/pages/marketplace.js b/src/pages/marketplace.js new file mode 100644 index 000000000..0bd99ac98 --- /dev/null +++ b/src/pages/marketplace.js @@ -0,0 +1,41 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import MarketplaceBanner from '../components/marketplace/MarketplaceBanner'; + +import styles from './marketplace.module.css'; +import MarketplaceCards from '../components/marketplace/MarketplaceCards'; +import MarketplaceSidebar from '../components/marketplace/MarketplaceSidebar'; + +export default function Marketplace() { + const [filteredProduct, setFilteredProduct] = React.useState([]); + + const {siteConfig} = useDocusaurusContext(); + + const handleClick = (data) => { + var tempFilter = filteredProduct.slice() + + const index = tempFilter.indexOf(data); + if (index !== -1) { + tempFilter.splice(index, 1); + } else { + tempFilter.push(data) + } + + setFilteredProduct(tempFilter) + }; + return ( + +
+ +
+
+
+
+ +
+
+ ); +} diff --git a/src/pages/marketplace.module.css b/src/pages/marketplace.module.css new file mode 100644 index 000000000..d16546f19 --- /dev/null +++ b/src/pages/marketplace.module.css @@ -0,0 +1,17 @@ +.blogContainer { + display: flex; +} + +.blogSidbarContainer { + flex: 5%; +} + +@media only screen and (max-width: 870px) { + .blogSidbarContainer { + display: none; + } +} + +.blogCardContainer { + flex: 95%; +} \ No newline at end of file diff --git a/src/services/DiscourseService.js b/src/services/DiscourseService.js index 194f97876..feaddd3aa 100644 --- a/src/services/DiscourseService.js +++ b/src/services/DiscourseService.js @@ -8,3 +8,124 @@ export async function getTopPosts() { return []; } } +export async function getAmbassadors(expert) { + try { + if (expert) { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/groups/ambassador_expert/members.json', + ); + return await response.json(); + } else { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/groups/ambassador/members.json', + ); + return await response.json(); + } + + } catch (error) { + return []; + } +} + +export async function getAmbassadorDetails(id) { + try { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/user-cards.json?user_ids=' + id.join(','), + ); + return await response.json(); + } catch (error) { + return []; + } +} + + +export async function checkImage(url) { + try { + const response = await fetch( + url, + ); + console.log(response) + return true + } catch (error) { + return false; + } +} + + +export async function getBlogPosts(tags) { + let url = '' + if (tags) { + url = 'https://developer.sailpoint.com/discuss/search.json?q=category:blog+tags:' + tags + } else { + url = 'https://developer.sailpoint.com/discuss/search.json?q=category:blog' + } + try { + const response = await fetch( + url, + ); + return await response.json(); + } catch (error) { + return []; + } +} + +export async function getMarketplacePosts(tags) { + let url = '' + if (tags) { + url = 'https://developer.sailpoint.com/discuss/search.json?q=category:marketplace+tags:' + tags + } else { + url = 'https://developer.sailpoint.com/discuss/search.json?q=category:marketplace' + } + try { + const response = await fetch( + url, + ); + return await response.json(); + } catch (error) { + return []; + } +} + +export async function getTopic(id) { + try { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/t/' + id + '.json', + ); + return await response.json(); + } catch (error) { + return []; + } +} + +export async function getMarketplaceTopic(id) { + try { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/t/' + id + '.json', + ); + return await response.json(); + } catch (error) { + return []; + } +} + +export async function getMarketplaceTopicRaw(id) { + try { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/raw/' + id + '.json', + ); + return await response.text(); + } catch (error) { + return []; + } +} + +export async function getTags() { + try { + const response = await fetch( + 'https://developer.sailpoint.com/discuss/tags.json', + ); + return await response.json(); + } catch (error) { + return []; + } +} \ No newline at end of file diff --git a/static/ambassador/Ambassador-Program-Banner.png b/static/ambassador/Ambassador-Program-Banner.png new file mode 100644 index 000000000..001dfe720 Binary files /dev/null and b/static/ambassador/Ambassador-Program-Banner.png differ diff --git a/static/ambassador/AmbassadorBadge-Pink-Hex.png b/static/ambassador/AmbassadorBadge-Pink-Hex.png new file mode 100644 index 000000000..9b15738e7 Binary files /dev/null and b/static/ambassador/AmbassadorBadge-Pink-Hex.png differ diff --git a/static/ambassador/AmbassadorBadge-QuadGrad-Squircle.png b/static/ambassador/AmbassadorBadge-QuadGrad-Squircle.png new file mode 100644 index 000000000..9044a5140 Binary files /dev/null and b/static/ambassador/AmbassadorBadge-QuadGrad-Squircle.png differ diff --git a/static/ambassador/ambassador_banner_template.png b/static/ambassador/ambassador_banner_template.png new file mode 100644 index 000000000..230b4f32c Binary files /dev/null and b/static/ambassador/ambassador_banner_template.png differ diff --git a/static/api-specs/idn/beta/paths/accounts.yaml b/static/api-specs/idn/beta/paths/accounts.yaml index df2dc719d..52701356d 100644 --- a/static/api-specs/idn/beta/paths/accounts.yaml +++ b/static/api-specs/idn/beta/paths/accounts.yaml @@ -50,6 +50,18 @@ get: **uncorrelated**: *eq* + - in: query + name: sorters + required: false + schema: + type: string + format: comma-separated + example: id,name + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id**, **name**, **created**, **modified** responses: '200': description: List of account objects @@ -58,7 +70,7 @@ get: schema: type: array items: - oneOf: + anyOf: - $ref: '../schemas/SlimAccount.yaml' - $ref: '../schemas/FullAccount.yaml' examples: @@ -122,6 +134,8 @@ post: description: >- This API submits an account creation task and returns the task ID. + The `sourceId` where this account will be created must be included in the `attributes` object. + A token with ORG_ADMIN authority is required to call this API. security: - oauth2: [idn:accounts:manage] @@ -130,7 +144,7 @@ post: content: application/json: schema: - $ref: '../schemas/AccountAttributes.yaml' + $ref: "../schemas/AccountAttributesCreate.yaml" responses: '202': description: Async task details diff --git a/static/api-specs/idn/beta/paths/connectors.yaml b/static/api-specs/idn/beta/paths/connectors.yaml index 96d38837a..fec7bc98b 100644 --- a/static/api-specs/idn/beta/paths/connectors.yaml +++ b/static/api-specs/idn/beta/paths/connectors.yaml @@ -28,6 +28,9 @@ get: **category**: *eq* + + + **features**: *ca* example: directConnect eq "true" - $ref: '../../v3/parameters/limit.yaml' - $ref: '../../v3/parameters/offset.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-entitlement-children.yaml b/static/api-specs/idn/beta/paths/ears-entitlement-children.yaml index a1ec7c91c..7839f5f16 100644 --- a/static/api-specs/idn/beta/paths/ears-entitlement-children.yaml +++ b/static/api-specs/idn/beta/paths/ears-entitlement-children.yaml @@ -55,6 +55,13 @@ get: "name": "identity 1", "type": "IDENTITY" }, + "segments": [ + "1d126fe0-45e2-4aea-bc64-a07e9344ef26" + ], + "manuallyUpdatedFields": { + "DISPLAY_NAME": true, + "DESCRIPTION": true + }, "id": "2c91808c74ff913f0175097daa9d59cd", "name": "LauncherTest1", "created": "2020-10-08T18:33:52.029Z", diff --git a/static/api-specs/idn/beta/paths/ears-entitlement-parents.yaml b/static/api-specs/idn/beta/paths/ears-entitlement-parents.yaml index be2dc7a3b..d60c48fb9 100644 --- a/static/api-specs/idn/beta/paths/ears-entitlement-parents.yaml +++ b/static/api-specs/idn/beta/paths/ears-entitlement-parents.yaml @@ -55,6 +55,13 @@ get: "name": "identity 1", "type": "IDENTITY" }, + "segments": [ + "1d126fe0-45e2-4aea-bc64-a07e9344ef26" + ], + "manuallyUpdatedFields": { + "DISPLAY_NAME": true, + "DESCRIPTION": true + }, "id": "2c91808c74ff913f0175097daa9d59cd", "name": "LauncherTest1", "created": "2020-10-08T18:33:52.029Z", diff --git a/static/api-specs/idn/beta/paths/ears-entitlement.yaml b/static/api-specs/idn/beta/paths/ears-entitlement.yaml index d7af9e824..c57ce2037 100644 --- a/static/api-specs/idn/beta/paths/ears-entitlement.yaml +++ b/static/api-specs/idn/beta/paths/ears-entitlement.yaml @@ -49,6 +49,13 @@ get: "name": "Addie Smith", "type": "IDENTITY" }, + "segments": [ + "1d126fe0-45e2-4aea-bc64-a07e9344ef26" + ], + "manuallyUpdatedFields": { + "DISPLAY_NAME": true, + "DESCRIPTION": true + }, "id": "2c91808c74ff913f0175097daa9d59cd", "name": "LauncherTest1", "created": "2020-10-08T18:33:52.029Z", @@ -167,6 +174,22 @@ patch: } } ] + Set entitlement manually updated fields: + description: >- + This example shows how to set an entitlement's manually updated fields values with patch request. + Values for all manually updateable fields must be specified in the request. + For now only two entitlement fields support this: DISPLAY_NAME and DESCRIPTION. + value: + [ + { + "op": "replace", + "path": "/manuallyUpdatedFields", + "value": { + "DISPLAY_NAME": true, + "DESCRIPTION": true + } + } + ] responses: '200': description: Responds with the entitlement as updated. diff --git a/static/api-specs/idn/beta/paths/reassignment-configuration-evaluate.yaml b/static/api-specs/idn/beta/paths/reassignment-configuration-evaluate.yaml index 8ed50f4b3..7d20ac5e0 100644 --- a/static/api-specs/idn/beta/paths/reassignment-configuration-evaluate.yaml +++ b/static/api-specs/idn/beta/paths/reassignment-configuration-evaluate.yaml @@ -25,7 +25,7 @@ get: name: configType required: true schema: - $ref: '../schemas/work-reassignment/WorkTypeEnum.yaml' + $ref: '../schemas/work-reassignment/ConfigTypeEnum.yaml' description: Reassignment work type example: accessRequests - in: query diff --git a/static/api-specs/idn/beta/paths/source-accounts-schema.yaml b/static/api-specs/idn/beta/paths/source-accounts-schema.yaml index 69e32f369..339739d84 100644 --- a/static/api-specs/idn/beta/paths/source-accounts-schema.yaml +++ b/static/api-specs/idn/beta/paths/source-accounts-schema.yaml @@ -2,7 +2,7 @@ get: tags: - Sources summary: Downloads source accounts schema template - operationId: downloadSourceAccountsSchema + operationId: getSourceAccountsSchema parameters: - in: path name: id @@ -37,7 +37,7 @@ post: summary: Uploads source accounts schema template description: >- This API uploads a source schema template file to configure a source's account attributes. - operationId: uploadSourceAccountsSchema + operationId: importSourceAccountsSchema parameters: - in: path name: id diff --git a/static/api-specs/idn/beta/paths/source-entitlements-schema.yaml b/static/api-specs/idn/beta/paths/source-entitlements-schema.yaml index f3f549d0e..885a25f0a 100644 --- a/static/api-specs/idn/beta/paths/source-entitlements-schema.yaml +++ b/static/api-specs/idn/beta/paths/source-entitlements-schema.yaml @@ -1,8 +1,9 @@ +#No Beta endpoint found for this operation. get: tags: - Sources summary: Downloads source entitlements schema template - operationId: downloadSourceEntitlementsSchema + operationId: getSourceEntitlementsSchema parameters: - in: path name: id @@ -37,13 +38,14 @@ get: $ref: '../../v3/responses/500.yaml' security: - oauth2: [idn:source-schema:read, idn:source-schema:manage] +#No Beta endpoint found for this operation. post: tags: - Sources summary: Uploads source entitlements schema template description: >- This API uploads a source schema template file to configure a source's entitlement attributes. - operationId: uploadSourceEntitlementsSchema + operationId: importSourceEntitlementsSchema parameters: - in: path name: id diff --git a/static/api-specs/idn/beta/paths/source-upload-connector-file.yaml b/static/api-specs/idn/beta/paths/source-upload-connector-file.yaml index 6e5ed06f5..3f834183e 100644 --- a/static/api-specs/idn/beta/paths/source-upload-connector-file.yaml +++ b/static/api-specs/idn/beta/paths/source-upload-connector-file.yaml @@ -1,5 +1,7 @@ post: - operationId: uploadSourceConnectorFile + operationId: importSourceConnectorFile + security: + - oauth2: [ idn:sources-admin:manage ] tags: - Sources summary: Upload connector file to source diff --git a/static/api-specs/idn/beta/paths/source.yaml b/static/api-specs/idn/beta/paths/source.yaml index 6ea25cb78..6b637aad3 100644 --- a/static/api-specs/idn/beta/paths/source.yaml +++ b/static/api-specs/idn/beta/paths/source.yaml @@ -1,5 +1,7 @@ get: operationId: getSource + security: + - oauth2: [ idn:sources:read ] tags: - Sources summary: Get Source by ID @@ -36,6 +38,8 @@ get: $ref: '../../v3/responses/500.yaml' put: operationId: putSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Update Source (Full) @@ -62,6 +66,7 @@ put: type: string required: true description: The Source id + example: 2c9180835d191a86015d28455b4a2329 requestBody: required: true content: @@ -91,6 +96,8 @@ put: $ref: '../../v3/responses/500.yaml' patch: operationId: updateSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Update Source (Partial) @@ -99,7 +106,6 @@ patch: [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. Some fields are immutable and cannot be changed, such as: - * id * type * authoritative @@ -225,7 +231,9 @@ patch: '500': $ref: '../../v3/responses/500.yaml' delete: - operationId: deleteSource + security: + - oauth2: [ idn:sources:manage ] + operationId: delete tags: - Sources summary: Delete Source by ID @@ -270,13 +278,6 @@ delete: deleteSource: summary: Response returned when deleting a source value: {"type": "TASK_RESULT", "id": "2c91808779ecf55b0179f720942f181a", "name": null} - links: - GetTaskStatusById: - operationId: getTaskStatus - parameters: - id: '$response.body#/id' - description: > - The `id` value returned in the response can be used as the `id` parameter in `GET /task-status/{id}`. '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/beta/paths/sources.yaml b/static/api-specs/idn/beta/paths/sources.yaml index 65218c23e..184c19e42 100644 --- a/static/api-specs/idn/beta/paths/sources.yaml +++ b/static/api-specs/idn/beta/paths/sources.yaml @@ -1,5 +1,7 @@ get: operationId: listSources + security: + - oauth2: [ idn:sources:read ] tags: - Sources summary: Lists all sources in IdentityNow. @@ -18,51 +20,22 @@ get: example: name eq "#Employees" description: >- Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) - - + Filtering is supported for the following fields and operators: - - - **id**: *eq, in* - - - **name**: *co, eq, in, sw* - - - **type**: *eq, in* - - - **owner.id**: *eq, in* - - - **features**: *ca, co* - - - **created**: *eq* - - - **modified**: *eq* - - - **managementWorkgroup.id**: *eq* - - - **description**: *eq* - - - **authoritative**: *eq* - - - **healthy**: *eq* - - - **status**: *eq, in* - - - **connectionType**: *eq* - - - **connectorName**: *eq* + **id**: *eq, in* + **name**: *co, eq, in, sw* + **type**: *eq, in* + **owner.id**: *eq, in* + **features**: *ca, co* + **created**: *eq* + **modified**: *eq* + **managementWorkgroup.id**: *eq* + **description**: *eq* + **authoritative**: *eq* + **healthy**: *eq* + **status**: *eq, in* + **connectionType**: *eq* + **connectorName**: *eq* - in: query name: sorters schema: @@ -72,7 +45,6 @@ get: description: >- Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) - Sorting is supported for the following fields: **type, created, modified, name, owner.name, healthy, status** - in: query name: for-subadmin @@ -109,6 +81,8 @@ get: $ref: '../../v3/responses/500.yaml' post: operationId: createSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Creates a source in IdentityNow. diff --git a/static/api-specs/idn/beta/schemas/AccountAttributesCreate.yaml b/static/api-specs/idn/beta/schemas/AccountAttributesCreate.yaml new file mode 100644 index 000000000..73f045c8c --- /dev/null +++ b/static/api-specs/idn/beta/schemas/AccountAttributesCreate.yaml @@ -0,0 +1,23 @@ +type: object +required: + - attributes +properties: + attributes: + description: The schema attribute values for the account + type: object + required: + - sourceId + properties: + sourceId: + type: string + description: Target source to create an account + example: 34bfcbe116c9407464af37acbaf7a4dc + additionalProperties: + type: string + example: + sourceId: 34bfcbe116c9407464af37acbaf7a4dc + city: Austin + displayName: John Doe + userName: jdoe + sAMAccountName: jDoe + mail: john.doe@sailpoint.com diff --git a/static/api-specs/idn/beta/schemas/Campaign.yaml b/static/api-specs/idn/beta/schemas/Campaign.yaml index 6eb6511a5..df40cfbf1 100644 --- a/static/api-specs/idn/beta/schemas/Campaign.yaml +++ b/static/api-specs/idn/beta/schemas/Campaign.yaml @@ -206,3 +206,13 @@ allOf: type: string description: Name of the source example: Source with orphan entitlements + mandatoryCommentRequirement: + type: string + description: >- + Determines whether comments are required for decisions during certification reviews. You can require comments + for all decisions, revoke-only decisions, or no decisions. By default, comments are not required for decisions. + enum: + - "ALL_DECISIONS" + - "REVOKE_ONLY_DECISIONS" + - "NO_DECISIONS" + example: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/CertificationReference.yaml b/static/api-specs/idn/beta/schemas/CertificationReference.yaml index e6a28b4bd..10f1fd812 100644 --- a/static/api-specs/idn/beta/schemas/CertificationReference.yaml +++ b/static/api-specs/idn/beta/schemas/CertificationReference.yaml @@ -13,11 +13,3 @@ properties: enum: - "CERTIFICATION" example: CERTIFICATION - correlatedStatus: - description: >- - The correlatedStatus of the campaign. Only SOURCE_OWNER campaigns can be Uncorrelated. - An Uncorrelated certification campaign only includes Uncorrelated identities (An identity is uncorrelated if it has no accounts on an authoritative source). - enum: - - "CORRELATED" - - "UNCORRELATED" - example: CORRELATED diff --git a/static/api-specs/idn/beta/schemas/Entitlement.yaml b/static/api-specs/idn/beta/schemas/Entitlement.yaml index b496c30cd..b3bd7165d 100644 --- a/static/api-specs/idn/beta/schemas/Entitlement.yaml +++ b/static/api-specs/idn/beta/schemas/Entitlement.yaml @@ -8,6 +8,16 @@ properties: type: string description: The entitlement name example: "LauncherTest2" + created: + type: string + description: Time when the entitlement was created + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + modified: + type: string + description: Time when the entitlement was last modified + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" attribute: type: string description: The entitlement attribute name @@ -20,28 +30,30 @@ properties: type: string description: The object type of the entitlement from the source schema example: "group" - description: - type: string - description: The description of the entitlement - example: "CN=LauncherTest2,OU=LauncherTestOrg,OU=slpt-automation,DC=TestAutomationAD,DC=local" privileged: type: boolean + default: false description: True if the entitlement is privileged example: true cloudGoverned: type: boolean + default: false description: True if the entitlement is cloud governed example: true - created: + description: type: string - description: Time when the entitlement was created - format: 'date-time' - example: "2020-10-08T18:33:52.029Z" - modified: - type: string - description: Time when the entitlement was last modified - format: 'date-time' - example: "2020-10-08T18:33:52.029Z" + description: The description of the entitlement + example: "CN=LauncherTest2,OU=LauncherTestOrg,OU=slpt-automation,DC=TestAutomationAD,DC=local" + requestable: + type: boolean + default: false + description: True if the entitlement is requestable + example: true + attributes: + type: object + description: A map of free-form key-value pairs from the source system + example: { "fieldName": "fieldValue" } + additionalProperties: true source: type: object properties: @@ -57,11 +69,12 @@ properties: type: string description: The source name example: ODS-AD-Source - attributes: - type: object - description: A map of free-form key-value pairs from the source system - example: { "fieldName": "fieldValue"} - additionalProperties: true + owner: + $ref: '../schemas/gov-entitlement/OwnerReferenceDto.yaml' + directPermissions: + type: array + items: + $ref: './PermissionDto.yaml' segments: type: array items: @@ -72,9 +85,15 @@ properties: "f7b1b8a3-5fed-4fd4-ad29-82014e137e19", "29cb6c06-1da8-43ea-8be4-b3125f248f2a" ] - directPermissions: - type: array - items: - $ref: './PermissionDto.yaml' - owner: - $ref: '../schemas/gov-entitlement/OwnerReferenceDto.yaml' \ No newline at end of file + manuallyUpdatedFields: + description: >- + Object contains entitlement manually updated fields. + Field value is true if is was updated manually via entitlement import csv or patch endpoint. + Field value is false if that property value has not been changed after first entitlement aggregation. + Values for all manually updatable fields must be specified. + For now only two entitlement fields support this: DISPLAY_NAME and DESCRIPTION. + example: { + "DISPLAY_NAME": true, + "DESCRIPTION": true + } + $ref: '../schemas/gov-entitlement/ManuallyUpdatedFieldsDTO.yaml' diff --git a/static/api-specs/idn/beta/schemas/ManagedClientType.yaml b/static/api-specs/idn/beta/schemas/ManagedClientType.yaml index 25da9a632..0763efa2b 100644 --- a/static/api-specs/idn/beta/schemas/ManagedClientType.yaml +++ b/static/api-specs/idn/beta/schemas/ManagedClientType.yaml @@ -6,4 +6,5 @@ enum: - CCG - VA - INTERNAL + - IIQ_HARVESTER - null diff --git a/static/api-specs/idn/beta/schemas/SodPolicy.yaml b/static/api-specs/idn/beta/schemas/SodPolicy.yaml index b0875c11c..79c9c8def 100644 --- a/static/api-specs/idn/beta/schemas/SodPolicy.yaml +++ b/static/api-specs/idn/beta/schemas/SodPolicy.yaml @@ -4,6 +4,7 @@ properties: type: string description: Policy id example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" + readOnly: true name: type: string description: Policy Business Name @@ -13,21 +14,25 @@ properties: format: date-time description: The time when this SOD policy is created. example: "2020-01-01T00:00:00.000000Z" + readOnly: true modified: type: string format: date-time description: The time when this SOD policy is modified. example: "2020-01-01T00:00:00.000000Z" + readOnly: true description: type: string description: Optional description of the SOD policy example: "This policy ensures compliance of xyz" + nullable: true ownerRef: $ref: '../../v3/schemas/BaseReferenceDto.yaml' externalPolicyReference: type: string description: Optional External Policy Reference example: "XYZ policy" + nullable: true policyQuery: type: string description: Search query of the SOD policy @@ -36,10 +41,12 @@ properties: type: string description: Optional compensating controls(Mitigating Controls) example: "Have a manager review the transaction decisions for their \"out of compliance\" employee" + nullable: true correctionAdvice: type: string description: Optional correction advice example: "Based on the role of the employee, managers should remove access that is not required for their job function." + nullable: true state: type: string description: whether the policy is enforced or not @@ -57,11 +64,13 @@ properties: type: string description: Policy's creator ID example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" + readOnly: true modifierId: type: string description: Policy's modifier ID example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" nullable : true + readOnly: true violationOwnerAssignmentConfig: $ref: './ViolationOwnerAssignmentConfig.yaml' nullable: true @@ -69,6 +78,7 @@ properties: type: boolean description: defines whether a policy has been scheduled or not example: true + default: false type: type: string description: whether a policy is query based or conflicting access based @@ -78,5 +88,6 @@ properties: - CONFLICTING_ACCESS_BASED example: GENERAL conflictingAccessCriteria: - $ref: './ConflictingAccessCriteria.yaml' - nullable: true + allOf: + - $ref: './ConflictingAccessCriteria.yaml' + - nullable: true diff --git a/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml b/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml index 6bb1461e8..adbd9114e 100644 --- a/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml +++ b/static/api-specs/idn/beta/schemas/V3ConnectorDto.yaml @@ -12,10 +12,18 @@ properties: type: string description: The connector script name example: "servicenow" + features: + type: array + description: The list of features supported by the connector + nullable: true + items: + type: string + example: ["PROVISIONING", "SYNC_PROVISIONING", "SEARCH", "UNSTRUCTURED_TARGETS"] directConnect: type: boolean description: true if the source is a direct connect source example: true + default: false connectorMetadata: type: object description: Object containing metadata pertinent to the UI to be used diff --git a/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml b/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml index 3fd336360..e9161fc36 100644 --- a/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml +++ b/static/api-specs/idn/beta/schemas/ViolationOwnerAssignmentConfig.yaml @@ -5,6 +5,7 @@ properties: enum: - MANAGER - STATIC + - null description: >- Details about the violations owner. @@ -12,6 +13,9 @@ properties: STATIC - Governance Group or Identity example: MANAGER + nullable: true ownerRef: - $ref: '../../v3/schemas/BaseReferenceDto.yaml' + allOf: + - $ref: '../../v3/schemas/BaseReferenceDto.yaml' + - nullable: true diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateManager.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateManager.yaml index a6be8ed07..1992a0d69 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateManager.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateManager.yaml @@ -36,6 +36,7 @@ value: autoRevokeAllowed: false recommendationsEnabled: false correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateRoleComposition.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateRoleComposition.yaml index 0c7bceea2..01329c5a7 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateRoleComposition.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateRoleComposition.yaml @@ -43,4 +43,5 @@ value: autoRevokeAllowed: false recommendationsEnabled: false correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSearch.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSearch.yaml index 7a6f0c8a9..711e8d86f 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSearch.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSearch.yaml @@ -42,4 +42,5 @@ value: emailNotificationEnabled: true autoRevokeAllowed: false recommendationsEnabled: false - correlatedStatus: CORRELATED \ No newline at end of file + correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSourceOwner.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSourceOwner.yaml index 95b16db9c..24e804f0b 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSourceOwner.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplateSourceOwner.yaml @@ -38,5 +38,6 @@ value: autoRevokeAllowed: false recommendationsEnabled: false correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplates.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplates.yaml index bb0e69889..8e9a11ebb 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplates.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CampaignTemplates.yaml @@ -34,6 +34,7 @@ emailNotificationEnabled: true autoRevokeAllowed: false recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS - id: b7e6459eed5247ac8b98a5fed81fe27f name: Reporting Access Review created: 2022-07-28T19:19:40.035Z @@ -77,6 +78,7 @@ emailNotificationEnabled: true autoRevokeAllowed: false recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS - id: b9f41bc69e7a4291b9de0630396d030d name: Campaign With Admin Role created: 2022-08-02T13:40:36.857Z @@ -120,6 +122,7 @@ emailNotificationEnabled: false autoRevokeAllowed: false recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS - id: b9f41bc69e7a4291b9de0630396d030d name: AD Source Review created: 2022-08-02T13:40:36.857Z @@ -158,4 +161,5 @@ emailNotificationEnabled: true autoRevokeAllowed: false recommendationsEnabled: false - correlatedStatus: CORRELATED \ No newline at end of file + correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignManager.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignManager.yaml index 4a981bf13..db3b56782 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignManager.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignManager.yaml @@ -9,6 +9,7 @@ value: filter: type: CAMPAIGN_FILTER id: 0c46fb26c6b20967a55517ee90d15b93 + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignRoleComposition.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignRoleComposition.yaml index 38b79486a..22af50fb1 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignRoleComposition.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignRoleComposition.yaml @@ -16,4 +16,5 @@ value: name: SailPoint Support roleIds: - b15d609fc5c8434b865fe552315fda8f + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSearch.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSearch.yaml index 1be9aaad2..521dd2603 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSearch.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSearch.yaml @@ -12,4 +12,5 @@ value: searchCampaignInfo: type: ACCESS query: user + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSourceOwner.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSourceOwner.yaml index 43f400512..55dbbf970 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSourceOwner.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignSourceOwner.yaml @@ -13,4 +13,5 @@ value: sourceIds: - 612b31b1a0f04aaf83123bdb80e70db6 correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateManager.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateManager.yaml index e885f67d6..16f1ca5a5 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateManager.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateManager.yaml @@ -15,4 +15,5 @@ value: id: e0adaae69852e8fe8b8a3d48e5ce757c emailNotificationEnabled: true autoRevokeAllowed: false - recommendationsEnabled: false \ No newline at end of file + recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateRoleComposition.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateRoleComposition.yaml index df05a39bc..c56517f98 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateRoleComposition.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateRoleComposition.yaml @@ -16,4 +16,5 @@ value: id: 2c9180876ab2c053016ab6f65dfd5aaa emailNotificationEnabled: true autoRevokeAllowed: false - recommendationsEnabled: false \ No newline at end of file + recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSearch.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSearch.yaml index c85676b4f..472bacfd2 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSearch.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSearch.yaml @@ -18,4 +18,5 @@ value: description: Identities with reporting abilities emailNotificationEnabled: true autoRevokeAllowed: false - recommendationsEnabled: false \ No newline at end of file + recommendationsEnabled: false + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSourceOwner.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSourceOwner.yaml index 9932065fd..151b024e9 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSourceOwner.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/CreateCampaignTemplateSourceOwner.yaml @@ -18,4 +18,5 @@ value: emailNotificationEnabled: true autoRevokeAllowed: false recommendationsEnabled: false - correlatedStatus: CORRELATED \ No newline at end of file + correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignManager.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignManager.yaml index 84a752b33..05679b1ef 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignManager.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignManager.yaml @@ -22,3 +22,4 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignRoleComposition.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignRoleComposition.yaml index 05dd77bd2..49cee71ed 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignRoleComposition.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignRoleComposition.yaml @@ -32,4 +32,5 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSearch.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSearch.yaml index a2f120808..0c86b624d 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSearch.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSearch.yaml @@ -31,3 +31,4 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSourceOwner.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSourceOwner.yaml index aefe3b02c..c7abe7a5e 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSourceOwner.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaignSourceOwner.yaml @@ -25,4 +25,5 @@ value: completedCertifications: 0 sourcesWithOrphanEntitlements: null correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaigns.yaml b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaigns.yaml index 79726104f..6732259e7 100644 --- a/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaigns.yaml +++ b/static/api-specs/idn/beta/schemas/campaign/examples/FullCampaigns.yaml @@ -38,6 +38,7 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS - id: 1be8fc1103914bf0a4e14e316b6a7b7c name: Manager Review description: A review of everyone's access by their manager. @@ -61,6 +62,7 @@ value: totalCertifications: 5 completedCertifications: 0 sourcesWithOrphanEntitlements: [] + mandatoryCommentRequirement: NO_DECISIONS - id: 7e1a731e3fb845cfbe58112ba4673ee4 name: Search Campaign description: Search Campaign for Identities @@ -93,6 +95,7 @@ value: totalCertifications: 6 completedCertifications: 0 sourcesWithOrphanEntitlements: [] + mandatoryCommentRequirement: NO_DECISIONS - id: ad3cf3dd50394b1bad646de4bc51b999 name: Source Owner Campaign description: Example for Source Owner Campaign @@ -118,4 +121,5 @@ value: totalCertifications: 2 completedCertifications: 0 sourcesWithOrphanEntitlements: [] - correlatedStatus: CORRELATED \ No newline at end of file + correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/gov-entitlement/ManuallyUpdatedFieldsDTO.yaml b/static/api-specs/idn/beta/schemas/gov-entitlement/ManuallyUpdatedFieldsDTO.yaml new file mode 100644 index 000000000..f660d7b7e --- /dev/null +++ b/static/api-specs/idn/beta/schemas/gov-entitlement/ManuallyUpdatedFieldsDTO.yaml @@ -0,0 +1,20 @@ +type: object +properties: + DISPLAY_NAME: + type: boolean + default: false + description: >- + True if the entitlements name was updated manually via entitlement import csv or patch endpoint. + False means that property value has not been change after first entitlement aggregation. + + Field refers to [Entitlement response schema](https://developer.sailpoint.com/idn/api/beta/get-entitlement) > `name` property. + example: true + DESCRIPTION: + type: boolean + default: false + description: >- + True if the entitlement description was updated manually via entitlement import csv or patch endpoint. + False means that property value has not been change after first entitlement aggregation. + + Field refers to [Entitlement response schema](https://developer.sailpoint.com/idn/api/beta/get-entitlement) > `description` property. + example: true diff --git a/static/api-specs/idn/beta/schemas/work-reassignment/ConfigTypeEnum.yaml b/static/api-specs/idn/beta/schemas/work-reassignment/ConfigTypeEnum.yaml index b229943d0..3ac8ace74 100644 --- a/static/api-specs/idn/beta/schemas/work-reassignment/ConfigTypeEnum.yaml +++ b/static/api-specs/idn/beta/schemas/work-reassignment/ConfigTypeEnum.yaml @@ -1,7 +1,7 @@ type: string description: Enum list of valid work types that can be selected for a Reassignment Configuration enum: - - accessRequests - - certifications - - manualTasks -example: accessRequests \ No newline at end of file + - ACCESS_REQUESTS + - CERTIFICATIONS + - MANUAL_TASKS +example: ACCESS_REQUESTS \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/work-reassignment/Identity.yaml b/static/api-specs/idn/beta/schemas/work-reassignment/Identity.yaml index a29acaea4..24dcd231f 100644 --- a/static/api-specs/idn/beta/schemas/work-reassignment/Identity.yaml +++ b/static/api-specs/idn/beta/schemas/work-reassignment/Identity.yaml @@ -8,4 +8,4 @@ properties: name: type: string description: Human-readable display name of the object - example: William.Wilson \ No newline at end of file + example: William Wilson \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/work-reassignment/WorkTypeEnum.yaml b/static/api-specs/idn/beta/schemas/work-reassignment/WorkTypeEnum.yaml deleted file mode 100644 index b229943d0..000000000 --- a/static/api-specs/idn/beta/schemas/work-reassignment/WorkTypeEnum.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: string -description: Enum list of valid work types that can be selected for a Reassignment Configuration -enum: - - accessRequests - - certifications - - manualTasks -example: accessRequests \ No newline at end of file diff --git a/static/api-specs/idn/sailpoint-api.beta.yaml b/static/api-specs/idn/sailpoint-api.beta.yaml index bba62f75a..7dab946e0 100644 --- a/static/api-specs/idn/sailpoint-api.beta.yaml +++ b/static/api-specs/idn/sailpoint-api.beta.yaml @@ -1568,7 +1568,7 @@ paths: $ref: './beta/paths/sod-violation-report.yaml' /sod-violations/predict: $ref: './beta/paths/sod/predict-violations.yaml' - /sod-violation-report-status/{reportResultId}: + /sod-policies/sod-violation-report-status/{reportResultId}: $ref: './beta/paths/sod-violation-report-status.yaml' /sod-violation-report/run: $ref: './beta/paths/sod-all-report-run.yaml' diff --git a/static/api-specs/idn/sailpoint-api.v3.yaml b/static/api-specs/idn/sailpoint-api.v3.yaml index bc20b6f3e..94c588820 100644 --- a/static/api-specs/idn/sailpoint-api.v3.yaml +++ b/static/api-specs/idn/sailpoint-api.v3.yaml @@ -927,12 +927,6 @@ paths: $ref: './v3/paths/password-org-config.yaml' /sod-config/public-keys/target: $ref: "./v3/paths/sod-public-key-target.yaml" - /sod-exceptions: - $ref: "./v3/paths/sod-exceptions.yaml" - /sod-exceptions/{id}: - $ref: "./v3/paths/sod-exception.yaml" - /sod-exceptions/bulk-create: - $ref: "./v3/paths/sod-exceptions-bulk-create.yaml" /sod-policies: $ref: './v3/paths/sod-policies.yaml' /sod-policies/{id}: @@ -947,7 +941,7 @@ paths: $ref: './v3/paths/sod-violation-report.yaml' /sod-risks/risks/{id}: $ref: "./v3/paths/sod-arm-risk.yaml" - /sod-violation-report-status/{reportResultId}: + /sod-policies/sod-violation-report-status/{reportResultId}: $ref: './v3/paths/sod-violation-report-status.yaml' /sod-violations/predict: $ref: "./v3/paths/sod-violations-predict.yaml" diff --git a/static/api-specs/idn/v3/paths/accounts.yaml b/static/api-specs/idn/v3/paths/accounts.yaml index a4f112068..5a0130c95 100644 --- a/static/api-specs/idn/v3/paths/accounts.yaml +++ b/static/api-specs/idn/v3/paths/accounts.yaml @@ -44,6 +44,18 @@ get: **uncorrelated**: *eq* required: false + - in: query + name: sorters + required: false + schema: + type: string + format: comma-separated + example: id,name + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id**, **name**, **created**, **modified** responses: "200": description: List of account objects @@ -71,6 +83,8 @@ post: description: >- This API submits an account creation task and returns the task ID. + The `sourceId` where this account will be created must be included in the `attributes` object. + A token with ORG_ADMIN authority is required to call this API. security: - oauth2: [idn:accounts:manage] diff --git a/static/api-specs/idn/v3/paths/sod-exception.yaml b/static/api-specs/idn/v3/paths/sod-exception.yaml deleted file mode 100644 index 37337030c..000000000 --- a/static/api-specs/idn/v3/paths/sod-exception.yaml +++ /dev/null @@ -1,117 +0,0 @@ -get: - security: - - oauth2: [idn:sod-exception:read] - operationId: getSodExceptionById - tags: - - SOD Exception - summary: Get SOD exception by ID - description: >- - This API returns the specified SOD exception. - parameters: - - in: path - name: id - schema: - type: string - required: true - description: The ID of the object reference to retrieve. - example: ef38f94347e94562b5bb8424a56397d8 - responses: - '200': - $ref: '../schemas/sod/responses/200.yaml' - '400': - $ref: '../responses/400.yaml' - '401': - $ref: '../responses/401.yaml' - '403': - $ref: '../responses/403.yaml' - '404': - $ref: '../responses/404.yaml' - '429': - $ref: '../responses/429.yaml' - '500': - $ref: '../responses/500.yaml' -patch: - security: - - oauth2: [idn:sod-exception:write] - operationId: patchExceptionById - tags: - - SOD Exception - summary: Update SOD exception - description: >- - This API allows updating SOD exception fields other than ["id", "created", "origin"] using the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - parameters: - - in: path - name: id - schema: - type: string - required: true - description: The ID of the SOD exception to update. - example: ef38f94347e94562b5bb8424a56397d8 - requestBody: - required: true - description: | - A list of SOD policy update operations according to the [JSON Patch](https://tools.ietf.org/html/rfc6902) standard. - - The following fields are patchable: - * policyId - * identityId - * start - * end - * businessJustification - * mitigatingControl - content: - application/json-patch+json: - schema: - type: array - items: - type: object - examples: - Update exception: - $ref: '../schemas/sod/examples/exception-body-patch.yaml' - responses: - '200': - $ref: '../schemas/sod/responses/200-patch.yaml' - '400': - $ref: '../responses/400.yaml' - '401': - $ref: '../responses/401.yaml' - '403': - $ref: '../responses/403.yaml' - '404': - $ref: '../responses/404.yaml' - '429': - $ref: '../responses/429.yaml' - '500': - $ref: '../responses/500.yaml' -delete: - security: - - oauth2: [idn:sod-exception:write] - operationId: deleteSodExceptionById - tags: - - SOD Exception - summary: Delete SOD exception by ID - description: >- - This API deletes the specified SOD exception. - parameters: - - in: path - name: id - schema: - type: string - required: true - description: The ID of the SOD exception to delete. - example: ef38f94347e94562b5bb8424a56397d8 - responses: - '204': - description: No content. - '400': - $ref: '../responses/400.yaml' - '401': - $ref: '../responses/401.yaml' - '403': - $ref: '../responses/403.yaml' - '404': - $ref: '../responses/404.yaml' - '429': - $ref: '../responses/429.yaml' - '500': - $ref: '../responses/500.yaml' diff --git a/static/api-specs/idn/v3/paths/sod-exceptions-bulk-create.yaml b/static/api-specs/idn/v3/paths/sod-exceptions-bulk-create.yaml deleted file mode 100644 index c0b682a32..000000000 --- a/static/api-specs/idn/v3/paths/sod-exceptions-bulk-create.yaml +++ /dev/null @@ -1,31 +0,0 @@ -post: - security: - - oauth2: [idn:sod-exception:write] - operationId: createBulkSodExceptions - tags: - - SOD Exception - summary: Create SOD exceptions in bulk - description: >- - This API creates SOD exceptions in bulk. - requestBody: - required: true - content: - application/json: - schema: - $ref: '../schemas/sod/models/ExceptionList.yaml' - examples: - Exception list: - $ref: '../schemas/sod/examples/exception-body-bulk.yaml' - responses: - '202': - $ref: '../schemas/sod/responses/202.yaml' - '400': - $ref: '../responses/400.yaml' - '401': - $ref: '../responses/401.yaml' - '403': - $ref: '../responses/403.yaml' - '429': - $ref: '../responses/429.yaml' - '500': - $ref: '../responses/500.yaml' diff --git a/static/api-specs/idn/v3/paths/sod-exceptions.yaml b/static/api-specs/idn/v3/paths/sod-exceptions.yaml deleted file mode 100644 index 908ba9ee3..000000000 --- a/static/api-specs/idn/v3/paths/sod-exceptions.yaml +++ /dev/null @@ -1,114 +0,0 @@ -post: - security: - - oauth2: [idn:sod-exception:write] - operationId: createSodException - tags: - - SOD Exception - summary: Create SOD exception - description: >- - This API creates a SOD exception. - - - A token with API authority is required to call this API. - requestBody: - required: true - content: - application/json: - schema: - $ref: "../schemas/sod/models/Exception.yaml" - examples: - Exception created: - $ref: "../schemas/sod/examples/exception-body.yaml" - responses: - "201": - $ref: "../schemas/sod/responses/201.yaml" - "400": - $ref: "../responses/400.yaml" - "401": - $ref: "../responses/401.yaml" - "403": - $ref: "../responses/403.yaml" - "429": - $ref: "../responses/429.yaml" - "500": - $ref: "../responses/500.yaml" -get: - security: - - oauth2: [idn:sod-exception:read] - operationId: listSodExceptions - tags: - - SOD Exception - summary: List SOD exceptions - description: >- - This API returns a list of all SOD exceptions. - - - A token with API authority is required to call this API. - parameters: - - $ref: "../parameters/limit.yaml" - - $ref: "../parameters/offset.yaml" - - $ref: "../parameters/count.yaml" - - in: query - name: filters - schema: - type: string - description: >- - Filter results using the standard syntax described in [V3 API Standard - Collection - Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) - - - Filtering is supported for the following fields and operators: - - - **id**: *eq, - - - in* **sodPolicy.id**: *eq, - - - in* **identity.id**: *eq, - - - in* - example: identity.id eq "bc693f07e7b645539626c25954c58554" - required: false - - in: query - name: sorters - schema: - type: string - format: comma-separated - description: >- - Sort results using the standard syntax described in [V3 API Standard - Collection - Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) - - - Sorting is supported for the following fields: - - - **sodPolicy.id, - - - identity.id, - - - start, - - - end** - example: identity.id,-start - required: false - responses: - "200": - $ref: "../schemas/sod/responses/200-list.yaml" - "400": - $ref: "../responses/400.yaml" - "401": - $ref: "../responses/401.yaml" - "403": - $ref: "../responses/403.yaml" - "429": - $ref: "../responses/429.yaml" - "500": - $ref: "../responses/500.yaml" diff --git a/static/api-specs/idn/v3/paths/source-accounts-schema.yaml b/static/api-specs/idn/v3/paths/source-accounts-schema.yaml index 09cceed95..3082f975b 100644 --- a/static/api-specs/idn/v3/paths/source-accounts-schema.yaml +++ b/static/api-specs/idn/v3/paths/source-accounts-schema.yaml @@ -6,7 +6,7 @@ get: This API downloads the CSV schema that defines the account attributes on a source. >**NOTE: This API is designated only for Delimited File sources.** - operationId: downloadSourceAccountsSchema + operationId: getAccountsSchema parameters: - in: path name: id @@ -50,7 +50,7 @@ post: >**NOTE: This API is designated only for Delimited File sources.** - operationId: uploadSourceAccountsSchema + operationId: importAccountsSchema parameters: - in: path name: id diff --git a/static/api-specs/idn/v3/paths/source-entitlements-schema.yaml b/static/api-specs/idn/v3/paths/source-entitlements-schema.yaml index 201e32ded..2e6eda610 100644 --- a/static/api-specs/idn/v3/paths/source-entitlements-schema.yaml +++ b/static/api-specs/idn/v3/paths/source-entitlements-schema.yaml @@ -7,7 +7,7 @@ get: >**NOTE: This API is designated only for Delimited File sources.** - operationId: downloadSourceEntitlementsSchema + operationId: getEntitlementsSchema parameters: - in: path name: id @@ -57,7 +57,7 @@ post: >**NOTE: This API is designated only for Delimited File sources.** - operationId: uploadSourceEntitlementsSchema + operationId: importEntitlementsSchema parameters: - in: path name: id diff --git a/static/api-specs/idn/v3/paths/source-health.yaml b/static/api-specs/idn/v3/paths/source-health.yaml index d9a0477f7..6d852e6fc 100644 --- a/static/api-specs/idn/v3/paths/source-health.yaml +++ b/static/api-specs/idn/v3/paths/source-health.yaml @@ -1,8 +1,10 @@ get: operationId: getSourceHealth + security: + - oauth2: [ idn:sources:read ] tags: - Sources - summary: This API fetches source health by source's id + summary: Fetches source health by id description: >- This endpoint fetches source health by source's id diff --git a/static/api-specs/idn/v3/paths/source-upload-connector-file.yaml b/static/api-specs/idn/v3/paths/source-upload-connector-file.yaml index 0227f6e7f..715c7d7db 100644 --- a/static/api-specs/idn/v3/paths/source-upload-connector-file.yaml +++ b/static/api-specs/idn/v3/paths/source-upload-connector-file.yaml @@ -1,5 +1,7 @@ post: - operationId: uploadSourceConnectorFile + operationId: importConnectorFile + security: + - oauth2: [ idn:sources-admin:manage ] tags: - Sources summary: Upload connector file to source diff --git a/static/api-specs/idn/v3/paths/source.yaml b/static/api-specs/idn/v3/paths/source.yaml index 9482053ce..23b553c98 100644 --- a/static/api-specs/idn/v3/paths/source.yaml +++ b/static/api-specs/idn/v3/paths/source.yaml @@ -1,5 +1,7 @@ get: operationId: getSource + security: + - oauth2: [ idn:sources:read ] tags: - Sources summary: Get Source by ID @@ -36,6 +38,8 @@ get: $ref: '../../v3/responses/500.yaml' put: operationId: putSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Update Source (Full) @@ -92,6 +96,8 @@ put: $ref: '../../v3/responses/500.yaml' patch: operationId: updateSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Update Source (Partial) @@ -227,6 +233,8 @@ patch: $ref: '../../v3/responses/500.yaml' delete: operationId: deleteSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Delete Source by ID @@ -271,12 +279,6 @@ delete: deleteSource: summary: Response returned when deleting a source value: {"type": "TASK_RESULT", "id": "2c91808779ecf55b0179f720942f181a", "name": null} - links: - GetTaskStatusById: - parameters: - id: '$response.body#/id' - description: > - The `id` value returned in the response can be used as the `id` parameter in `GET /task-status/{id}`. '400': $ref: '../../v3/responses/400.yaml' '401': diff --git a/static/api-specs/idn/v3/paths/sources.yaml b/static/api-specs/idn/v3/paths/sources.yaml index 982159218..88c242e90 100644 --- a/static/api-specs/idn/v3/paths/sources.yaml +++ b/static/api-specs/idn/v3/paths/sources.yaml @@ -1,5 +1,7 @@ get: operationId: listSources + security: + - oauth2: [ idn:sources:read ] tags: - Sources summary: Lists all sources in IdentityNow. @@ -19,50 +21,21 @@ get: description: >- Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) - Filtering is supported for the following fields and operators: - - - **id**: *eq, in* - - - **name**: *co, eq, in, sw* - - - **type**: *eq, in* - - - **owner.id**: *eq, in* - - - **features**: *ca, co* - - - **created**: *eq* - - - **modified**: *eq* - - - **managementWorkgroup.id**: *eq* - - - **description**: *eq* - - - **authoritative**: *eq* - - - **healthy**: *eq* - - - **status**: *eq, in* - - - **connectionType**: *eq* - - - **connectorName**: *eq* + **id**: *eq, in* + **name**: *co, eq, in, sw* + **type**: *eq, in* + **owner.id**: *eq, in* + **features**: *ca, co* + **created**: *eq* + **modified**: *eq* + **managementWorkgroup.id**: *eq* + **description**: *eq* + **authoritative**: *eq* + **healthy**: *eq* + **status**: *eq, in* + **connectionType**: *eq* + **connectorName**: *eq* - in: query name: sorters schema: @@ -109,6 +82,8 @@ get: $ref: '../../v3/responses/500.yaml' post: operationId: createSource + security: + - oauth2: [ idn:sources:manage ] tags: - Sources summary: Creates a source in IdentityNow. diff --git a/static/api-specs/idn/v3/schemas/Campaign.yaml b/static/api-specs/idn/v3/schemas/Campaign.yaml index 4b6c5b4d4..241881ad6 100644 --- a/static/api-specs/idn/v3/schemas/Campaign.yaml +++ b/static/api-specs/idn/v3/schemas/Campaign.yaml @@ -206,3 +206,13 @@ allOf: type: string description: Name of the source example: Source with orphan entitlements + mandatoryCommentRequirement: + type: string + description: >- + Determines whether comments are required for decisions during certification reviews. You can require comments + for all decisions, revoke-only decisions, or no decisions. By default, comments are not required for decisions. + enum: + - "ALL_DECISIONS" + - "REVOKE_ONLY_DECISIONS" + - "NO_DECISIONS" + example: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/CampaignReference.yaml b/static/api-specs/idn/v3/schemas/CampaignReference.yaml index 5a244dd51..8664ede9f 100644 --- a/static/api-specs/idn/v3/schemas/CampaignReference.yaml +++ b/static/api-specs/idn/v3/schemas/CampaignReference.yaml @@ -5,6 +5,8 @@ required: - type - campaignType - description +- correlatedStatus +- mandatoryCommentRequirement properties: id: type: string @@ -32,4 +34,22 @@ properties: type: string description: The description of the campaign set by the admin who created it. nullable: true - example: 'A description of the campaign' \ No newline at end of file + example: 'A description of the campaign' + correlatedStatus: + description: >- + The correlatedStatus of the campaign. Only SOURCE_OWNER campaigns can be Uncorrelated. + An Uncorrelated certification campaign only includes Uncorrelated identities (An identity is uncorrelated if it has no accounts on an authoritative source). + enum: + - "CORRELATED" + - "UNCORRELATED" + example: CORRELATED + mandatoryCommentRequirement: + type: string + description: >- + Determines whether comments are required for decisions during certification reviews. You can require comments + for all decisions, revoke-only decisions, or no decisions. By default, comments are not required for decisions. + enum: + - "ALL_DECISIONS" + - "REVOKE_ONLY_DECISIONS" + - "NO_DECISIONS" + example: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/SodPolicy.yaml b/static/api-specs/idn/v3/schemas/SodPolicy.yaml index 262ba09bb..eea05b11e 100644 --- a/static/api-specs/idn/v3/schemas/SodPolicy.yaml +++ b/static/api-specs/idn/v3/schemas/SodPolicy.yaml @@ -27,8 +27,7 @@ properties: example: "This policy ensures compliance of xyz" nullable: true ownerRef: - $ref: '../schemas/BaseReferenceDto.yaml' - readOnly: true + $ref: '../../v3/schemas/BaseReferenceDto.yaml' externalPolicyReference: type: string description: Optional External Policy Reference @@ -64,12 +63,12 @@ properties: creatorId: type: string description: Policy's creator ID - example: "0f11f2a47c944bf3a2bd742580fe3bde" + example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" readOnly: true modifierId: type: string description: Policy's modifier ID - example: "0f11f2a47c944bf3a2bd742580fe3bde" + example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" nullable : true readOnly: true violationOwnerAssignmentConfig: @@ -77,9 +76,9 @@ properties: nullable: true scheduled: type: boolean - default: false description: defines whether a policy has been scheduled or not example: true + default: false type: type: string description: whether a policy is query based or conflicting access based @@ -89,5 +88,6 @@ properties: - CONFLICTING_ACCESS_BASED example: GENERAL conflictingAccessCriteria: - $ref: './ConflictingAccessCriteria.yaml' - nullable: true + allOf: + - $ref: './ConflictingAccessCriteria.yaml' + - nullable: true \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml b/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml index 4a6e1174a..8ea234e89 100644 --- a/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml +++ b/static/api-specs/idn/v3/schemas/ViolationOwnerAssignmentConfig.yaml @@ -5,6 +5,7 @@ properties: enum: - MANAGER - STATIC + - null description: >- Details about the violations owner. @@ -12,6 +13,8 @@ properties: STATIC - Governance Group or Identity example: MANAGER + nullable: true ownerRef: - $ref: './BaseReferenceDto.yaml' - + allOf: + - $ref: '../../v3/schemas/BaseReferenceDto.yaml' + - nullable: true diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignManager.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignManager.yaml index 4a981bf13..2d2efdaef 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignManager.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignManager.yaml @@ -9,7 +9,4 @@ value: filter: type: CAMPAIGN_FILTER id: 0c46fb26c6b20967a55517ee90d15b93 - - - - \ No newline at end of file + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignRoleComposition.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignRoleComposition.yaml index 38b79486a..75c51de21 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignRoleComposition.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignRoleComposition.yaml @@ -16,4 +16,5 @@ value: name: SailPoint Support roleIds: - b15d609fc5c8434b865fe552315fda8f + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSearch.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSearch.yaml index 1be9aaad2..521dd2603 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSearch.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSearch.yaml @@ -12,4 +12,5 @@ value: searchCampaignInfo: type: ACCESS query: user + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSourceOwner.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSourceOwner.yaml index 43f400512..55dbbf970 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSourceOwner.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/CreateCampaignSourceOwner.yaml @@ -13,4 +13,5 @@ value: sourceIds: - 612b31b1a0f04aaf83123bdb80e70db6 correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignManager.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignManager.yaml index 84a752b33..05679b1ef 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignManager.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignManager.yaml @@ -22,3 +22,4 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignRoleComposition.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignRoleComposition.yaml index 05dd77bd2..49cee71ed 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignRoleComposition.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignRoleComposition.yaml @@ -32,4 +32,5 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSearch.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSearch.yaml index a2f120808..0c86b624d 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSearch.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSearch.yaml @@ -31,3 +31,4 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSourceOwner.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSourceOwner.yaml index aefe3b02c..c7abe7a5e 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSourceOwner.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaignSourceOwner.yaml @@ -25,4 +25,5 @@ value: completedCertifications: 0 sourcesWithOrphanEntitlements: null correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaigns.yaml b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaigns.yaml index 79726104f..6732259e7 100644 --- a/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaigns.yaml +++ b/static/api-specs/idn/v3/schemas/campaign/examples/FullCampaigns.yaml @@ -38,6 +38,7 @@ value: totalCertifications: 0 completedCertifications: 0 sourcesWithOrphanEntitlements: null + mandatoryCommentRequirement: NO_DECISIONS - id: 1be8fc1103914bf0a4e14e316b6a7b7c name: Manager Review description: A review of everyone's access by their manager. @@ -61,6 +62,7 @@ value: totalCertifications: 5 completedCertifications: 0 sourcesWithOrphanEntitlements: [] + mandatoryCommentRequirement: NO_DECISIONS - id: 7e1a731e3fb845cfbe58112ba4673ee4 name: Search Campaign description: Search Campaign for Identities @@ -93,6 +95,7 @@ value: totalCertifications: 6 completedCertifications: 0 sourcesWithOrphanEntitlements: [] + mandatoryCommentRequirement: NO_DECISIONS - id: ad3cf3dd50394b1bad646de4bc51b999 name: Source Owner Campaign description: Example for Source Owner Campaign @@ -118,4 +121,5 @@ value: totalCertifications: 2 completedCertifications: 0 sourcesWithOrphanEntitlements: [] - correlatedStatus: CORRELATED \ No newline at end of file + correlatedStatus: CORRELATED + mandatoryCommentRequirement: NO_DECISIONS \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/examples/exception-body-bulk.yaml b/static/api-specs/idn/v3/schemas/sod/examples/exception-body-bulk.yaml deleted file mode 100644 index b8788c402..000000000 --- a/static/api-specs/idn/v3/schemas/sod/examples/exception-body-bulk.yaml +++ /dev/null @@ -1,54 +0,0 @@ -summary: Exception List -value: - { - "exceptions": - [ - { - "id": null, - "created": null, - "modified": null, - "sodPolicy": { - "type": "SOD_POLICY", - "id": "00fc6afc-af1d-43af-b350-8d632f4c56ca" - }, - "identity": { - "type": "IDENTITY", - "id": "2c9180867473c1bd01747e8a7d65179b" - }, - "start": "2020-01-01T00:00:00.000Z", - "end": "2020-01-02T00:00:00.000Z", - "businessJustification": "Bob (the accountant) is on vacation, Bill needs access to accounting data this week.", - "mitigatingControl": "The manager will audit Bill's changes this week.", - "accessCriteria": { - "leftCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a66" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a67" - } - ] - }, - "rightCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a68" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a69" - } - ] - } - }, - "origin": { - "type": "ACCOUNT_ACTIVITY", - "id": "2c9180867372a2590173774358eb016d" - } - } - ] - } diff --git a/static/api-specs/idn/v3/schemas/sod/examples/exception-body-patch.yaml b/static/api-specs/idn/v3/schemas/sod/examples/exception-body-patch.yaml deleted file mode 100644 index 7c490902d..000000000 --- a/static/api-specs/idn/v3/schemas/sod/examples/exception-body-patch.yaml +++ /dev/null @@ -1,10 +0,0 @@ -value: - - op: "replace" - path: "/sodPolicy/id" - value: "c61499ae-6912-4fb5-b216-a97eb6781105" - - op: "replace" - path: "/mitigatingControl" - value: "Modified mitigating control" - - op: "replace" - path: "/end" - value: "2020-01-03T00:00:00.000Z" diff --git a/static/api-specs/idn/v3/schemas/sod/examples/exception-body.yaml b/static/api-specs/idn/v3/schemas/sod/examples/exception-body.yaml deleted file mode 100644 index 2429879f9..000000000 --- a/static/api-specs/idn/v3/schemas/sod/examples/exception-body.yaml +++ /dev/null @@ -1,49 +0,0 @@ -summary: Exception -value: - { - "id": null, - "created": null, - "modified": null, - "sodPolicy": { - "type": "SOD_POLICY", - "id": "00fc6afc-af1d-43af-b350-8d632f4c56ca" - }, - "identity": { - "type": "IDENTITY", - "id": "2c9180867473c1bd01747e8a7d65179b" - }, - "start": "2020-01-01T00:00:00.000Z", - "end": "2020-01-02T00:00:00.000Z", - "businessJustification": "Bob (the accountant) is on vacation, Bill needs access to accounting data this week.", - "mitigatingControl": "The manager will audit Bill's changes this week.", - "accessCriteria": { - "leftCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a66" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a67" - } - ] - }, - "rightCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a68" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a69" - } - ] - } - }, - "origin": { - "type": "ACCOUNT_ACTIVITY", - "id": "2c9180867372a2590173774358eb016d" - } - } diff --git a/static/api-specs/idn/v3/schemas/sod/examples/exception-response-bulk.yaml b/static/api-specs/idn/v3/schemas/sod/examples/exception-response-bulk.yaml deleted file mode 100644 index 9aa1e2098..000000000 --- a/static/api-specs/idn/v3/schemas/sod/examples/exception-response-bulk.yaml +++ /dev/null @@ -1,5 +0,0 @@ -summary: Accepted exception list -value: - { - "exceptionCount": "5" - } \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/examples/exception-response.yaml b/static/api-specs/idn/v3/schemas/sod/examples/exception-response.yaml deleted file mode 100644 index d372ca475..000000000 --- a/static/api-specs/idn/v3/schemas/sod/examples/exception-response.yaml +++ /dev/null @@ -1,49 +0,0 @@ -summary: Exception -value: - { - "id": "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde", - "created": "2020-01-01T00:00:00.000000Z", - "modified": "2020-01-01T00:00:00.000000Z", - "sodPolicy": { - "type": "SOD_POLICY", - "id": "00fc6afc-af1d-43af-b350-8d632f4c56ca" - }, - "identity": { - "type": "IDENTITY", - "id": "2c9180867473c1bd01747e8a7d65179b" - }, - "start": "2020-01-01T00:00:00.000Z", - "end": "2020-01-02T00:00:00.000Z", - "businessJustification": "Bob (the accountant) is on vacation, Bill needs access to accounting data this week.", - "mitigatingControl": "The manager will audit Bill's changes this week.", - "accessCriteria": { - "leftCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a66" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a67" - } - ] - }, - "rightCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a68" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a69" - } - ] - } - }, - "origin": { - "type": "ACCOUNT_ACTIVITY", - "id": "2c9180867372a2590173774358eb016d" - } - } diff --git a/static/api-specs/idn/v3/schemas/sod/models/BulkCreate.yaml b/static/api-specs/idn/v3/schemas/sod/models/BulkCreate.yaml deleted file mode 100644 index b6825b089..000000000 --- a/static/api-specs/idn/v3/schemas/sod/models/BulkCreate.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - exceptionCount: - type: string - nullable: false - description: Count of the exceptions - example: "5" diff --git a/static/api-specs/idn/v3/schemas/sod/models/Exception.yaml b/static/api-specs/idn/v3/schemas/sod/models/Exception.yaml deleted file mode 100644 index 6a7e1d4e9..000000000 --- a/static/api-specs/idn/v3/schemas/sod/models/Exception.yaml +++ /dev/null @@ -1,47 +0,0 @@ -type: object -properties: - id: - type: string - nullable: true - description: Id of a SOD exception. - example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde" - created: - type: string - nullable: true - format: date-time - description: The time when this SOD exception is created. - example: "2020-01-01T00:00:00.000Z" - modified: - type: string - nullable: true - format: date-time - description: The time when this SOD exception is modified. - example: "2020-01-01T00:00:00.000Z" - sodPolicy: - $ref: '../../BaseReferenceDto.yaml' - example: "00fc6afc-af1d-43af-b350-8d632f4c56ca" - identity: - $ref: '../../BaseReferenceDto.yaml' - start: - type: string - format: date-time - description: The earliest date-time when this SOD exception is applicable. - example: "2020-01-01T00:00:00.000Z" - end: - type: string - format: date-time - description: The last date-time when this SOD exception is applicable. - example: "2020-01-02T00:00:00.000Z" - businessJustification: - type: string - description: The business justification for the exception. - example: "Bob (the accountant) is on vacation, Bill needs access to accounting data this week." - mitigatingControl: - type: string - description: The mitigating control for the exception. - example: "The manager will audit Bill's changes this week." - accessCriteria: - $ref: './ExceptionAccessCriteria.yaml' - nullable: false - origin: - $ref: '../../BaseReferenceDto.yaml' diff --git a/static/api-specs/idn/v3/schemas/sod/models/ExceptionList.yaml b/static/api-specs/idn/v3/schemas/sod/models/ExceptionList.yaml deleted file mode 100644 index 7bb86251d..000000000 --- a/static/api-specs/idn/v3/schemas/sod/models/ExceptionList.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - exceptions: - type: array - description: List of exceptions. - items: - $ref: './Exception.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/responses/200-list.yaml b/static/api-specs/idn/v3/schemas/sod/responses/200-list.yaml deleted file mode 100644 index 5daa4c789..000000000 --- a/static/api-specs/idn/v3/schemas/sod/responses/200-list.yaml +++ /dev/null @@ -1,57 +0,0 @@ -description: List of all SOD Exceptions. -content: - application/json: - schema: - type: array - items: - $ref: '../models/Exception.yaml' - example: - [ - { - "id": "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde", - "created": "2020-01-01T00:00:00.000000Z", - "modified": "2020-01-01T00:00:00.000000Z", - "sodPolicy": { - "type": "SOD_POLICY", - "id": "00fc6afc-af1d-43af-b350-8d632f4c56ca" - }, - "identity": { - "type": "IDENTITY", - "id": "2c9180867473c1bd01747e8a7d65179b" - }, - "start": "2020-01-01T00:00:00.000Z", - "end": "2020-01-02T00:00:00.000Z", - "businessJustification": "Bob (the accountant) is on vacation, Bill needs access to accounting data this week.", - "mitigatingControl": "The manager will audit Bill's changes this week.", - "accessCriteria": { - "leftCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a66" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a67" - } - ] - }, - "rightCriteria": { - "criteriaList": [ - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a68" - }, - { - "type": "ENTITLEMENT", - "id": "2c9180866166b5b0016167c32ef31a69" - } - ] - } - }, - "origin": { - "type": "ACCOUNT_ACTIVITY", - "id": "2c9180867372a2590173774358eb016d" - } - } - ] \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/responses/200-patch.yaml b/static/api-specs/idn/v3/schemas/sod/responses/200-patch.yaml deleted file mode 100644 index 89b8cbfda..000000000 --- a/static/api-specs/idn/v3/schemas/sod/responses/200-patch.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: Indicates the PATCH operation succeeded, and returns the SOD exception's new representation. -content: - application/json: - schema: - $ref: '../models/Exception.yaml' - examples: - SOD Exception: - $ref: '../examples/exception-response.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/responses/200.yaml b/static/api-specs/idn/v3/schemas/sod/responses/200.yaml deleted file mode 100644 index b907e5a20..000000000 --- a/static/api-specs/idn/v3/schemas/sod/responses/200.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: SOD exception by ID. -content: - application/json: - schema: - $ref: '../models/Exception.yaml' - examples: - SOD Exception: - $ref: '../examples/exception-response.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/responses/201.yaml b/static/api-specs/idn/v3/schemas/sod/responses/201.yaml deleted file mode 100644 index 401319b85..000000000 --- a/static/api-specs/idn/v3/schemas/sod/responses/201.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: SOD exception created -content: - application/json: - schema: - $ref: '../models/Exception.yaml' - examples: - SOD Exception: - $ref: '../examples/exception-response.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/v3/schemas/sod/responses/202.yaml b/static/api-specs/idn/v3/schemas/sod/responses/202.yaml deleted file mode 100644 index 5da927407..000000000 --- a/static/api-specs/idn/v3/schemas/sod/responses/202.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: Bulk create SOD exception accepted -content: - application/json: - schema: - $ref: '../models/BulkCreate.yaml' - examples: - SOD Exception: - $ref: '../examples/exception-response-bulk.yaml' diff --git a/static/blog/Identity-Security-Cloud-Platform.png b/static/blog/Identity-Security-Cloud-Platform.png new file mode 100644 index 000000000..1424af27c Binary files /dev/null and b/static/blog/Identity-Security-Cloud-Platform.png differ diff --git a/static/blog/blog_banner_template.png b/static/blog/blog_banner_template.png new file mode 100644 index 000000000..ed25e8070 Binary files /dev/null and b/static/blog/blog_banner_template.png differ diff --git a/static/blog/caret-down-thin.svg b/static/blog/caret-down-thin.svg new file mode 100644 index 000000000..b97785a6a --- /dev/null +++ b/static/blog/caret-down-thin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/blog/clock-light.svg b/static/blog/clock-light.svg new file mode 100644 index 000000000..e28560de9 --- /dev/null +++ b/static/blog/clock-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/blog/comment-light.svg b/static/blog/comment-light.svg new file mode 100644 index 000000000..41509edf3 --- /dev/null +++ b/static/blog/comment-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/blog/comment-regular.svg b/static/blog/comment-regular.svg new file mode 100644 index 000000000..9ef59bdbd --- /dev/null +++ b/static/blog/comment-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/blog/eye-regular.svg b/static/blog/eye-regular.svg new file mode 100644 index 000000000..7eccb4333 --- /dev/null +++ b/static/blog/eye-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/blog/marketplace_banner_template.png b/static/blog/marketplace_banner_template.png new file mode 100644 index 000000000..230b4f32c Binary files /dev/null and b/static/blog/marketplace_banner_template.png differ diff --git a/static/blog/watch-light.svg b/static/blog/watch-light.svg new file mode 100644 index 000000000..cea5a24d4 --- /dev/null +++ b/static/blog/watch-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/Ambassador.svg b/static/icons/Ambassador.svg new file mode 100644 index 000000000..048e0ac31 --- /dev/null +++ b/static/icons/Ambassador.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/icons/ExpertAmbassador.svg b/static/icons/ExpertAmbassador.svg new file mode 100644 index 000000000..9e1333cc2 --- /dev/null +++ b/static/icons/ExpertAmbassador.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/icons/SailPoint-LogoIcon-RGB-Color.svg b/static/icons/SailPoint-LogoIcon-RGB-Color.svg new file mode 100644 index 000000000..858328dfd --- /dev/null +++ b/static/icons/SailPoint-LogoIcon-RGB-Color.svg @@ -0,0 +1,466 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + 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 +jvyOGtKLkonVP53m+h2CKf2zmWOfowliBw== + + + diff --git a/static/icons/calendar-clock-light.svg b/static/icons/calendar-clock-light.svg new file mode 100644 index 000000000..063a5585e --- /dev/null +++ b/static/icons/calendar-clock-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/circle-xmark-regular.svg b/static/icons/circle-xmark-regular.svg new file mode 100644 index 000000000..ca484b8d3 --- /dev/null +++ b/static/icons/circle-xmark-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/discourse.svg b/static/icons/discourse.svg new file mode 100644 index 000000000..77a6b1de3 --- /dev/null +++ b/static/icons/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/github.svg b/static/icons/github.svg new file mode 100644 index 000000000..40e8178e4 --- /dev/null +++ b/static/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/square-check-regular.svg b/static/icons/square-check-regular.svg new file mode 100644 index 000000000..64c711ee1 --- /dev/null +++ b/static/icons/square-check-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/rule-java-docs/allclasses-frame.html b/static/rule-java-docs/allclasses-frame.html index d4aee99c3..b68d85068 100644 --- a/static/rule-java-docs/allclasses-frame.html +++ b/static/rule-java-docs/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -12,22 +12,47 @@

All Classes

diff --git a/static/rule-java-docs/allclasses-noframe.html b/static/rule-java-docs/allclasses-noframe.html index 7e9e53041..04bcb4094 100644 --- a/static/rule-java-docs/allclasses-noframe.html +++ b/static/rule-java-docs/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -12,22 +12,47 @@

All Classes

diff --git a/static/rule-java-docs/constant-values.html b/static/rule-java-docs/constant-values.html index 3dc638046..ea858993b 100644 --- a/static/rule-java-docs/constant-values.html +++ b/static/rule-java-docs/constant-values.html @@ -2,9 +2,9 @@ - + Constant Field Values - + @@ -73,6 +73,7 @@

Contents

@@ -82,7 +83,7 @@ + + + +

sailpoint.server.*

+
@@ -88,141 +87,10 @@ -sailpoint.object.ProvisioningPlan.ATT_IIQ_PASSWORD - - +sailpoint.object.ProvisioningPlan.ATT_IIQ_PASSWORD  -sailpoint.object.Field.RENDER_USE_SELECT_BOX -
Use displayType, setting value to Field.DISPLAY_TYPE_COMBOBOX
- - - - - - - - - -
-
A C D E F G H I M N O P Q R S T U V W  +
A B C D E F G H I J L M N O P Q R S T V W _ 

A

-
Account - Interface in sailpoint.rule
+
accept(Filter.FilterVisitor) - Method in class sailpoint.object.Filter
+
 
+
accept(Filter.FilterVisitor) - Method in class sailpoint.object.Filter.CompositeFilter
+
 
+
accept(Filter.FilterVisitor) - Method in class sailpoint.object.Filter.LeafFilter
+
 
+
Account - Class in sailpoint.rule
Definition of an Account interface available to Rule implementors.
-
ACCOUNT_GROUP_APPLICATION - Static variable in interface sailpoint.object.ProvisioningPlan
+
Account() - Constructor for class sailpoint.rule.Account
 
-
ACCOUNT_GROUP_DESCRIPTION - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_GROUP_NAME - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_GROUP_NATIVE_IDENTITY - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_GROUP_OWNER - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_GROUP_REFERENCE_ATTRIBUTE - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_GROUP_SCOPE - Static variable in interface sailpoint.object.ProvisioningPlan
-
 
-
ACCOUNT_ID - Static variable in interface sailpoint.object.Field
-
-
The name of a field that when used in account creation templates - will specify the native identity of the new account.
-
-
accountExistsByDisplayName(String, String) - Method in interface sailpoint.server.IdnRuleUtil
+
accountExistsByDisplayName(String, String) - Method in class sailpoint.server.IdnRuleUtil
Determines if an account currently exists on an application using the display name.
-
accountExistsByNativeIdentity(String, String) - Method in interface sailpoint.server.IdnRuleUtil
+
accountExistsByNativeIdentity(String, String) - Method in class sailpoint.server.IdnRuleUtil
Determines if an account currently exists on an application using the native identity.
@@ -112,454 +101,103 @@
 
AccountRequest(ProvisioningPlan.AccountRequest.Operation, String, String, String) - Constructor for class sailpoint.object.ProvisioningPlan.AccountRequest
 
-
add(ProvisioningPlan.AccountRequest) - Method in interface sailpoint.object.ProvisioningPlan
+
add(Filter) - Method in class sailpoint.object.Filter.CompositeFilter
 
-
add(ObjectRequest) - Method in interface sailpoint.object.ProvisioningPlan
+
add(ProvisioningPlan.AccountRequest) - Method in class sailpoint.object.ProvisioningPlan
 
-
add(String, String, ProvisioningPlan.AccountRequest.Operation) - Method in interface sailpoint.object.ProvisioningPlan
+
add(String, String, ProvisioningPlan.AccountRequest.Operation) - Method in class sailpoint.object.ProvisioningPlan
 
-
add(String, String, String, ProvisioningPlan.Operation, Object) - Method in interface sailpoint.object.ProvisioningPlan
+
add(String, String, String, ProvisioningPlan.Operation, Object) - Method in class sailpoint.object.ProvisioningPlan
 
-
add(String, String, ProvisioningPlan.Operation, Object) - Method in interface sailpoint.object.ProvisioningPlan
-
-
Deprecated.
-
-
add(String, String, Object) - Method in interface sailpoint.object.ProvisioningPlan
-
-
Deprecated.
-
-
addError(Message) - Method in interface sailpoint.object.ProvisioningResult
+
add(Filter...) - Method in class sailpoint.object.QueryOptions
 
-
addHeader(String, String) - Method in interface sailpoint.connector.webservices.Endpoint
+
addFilter(Filter) - Method in class sailpoint.object.QueryOptions
+
 
+
addHeader(String, String) - Method in class sailpoint.connector.webservices.Endpoint
Use this method to add a header value to the existing http header map for the request
-
addObjectRequest(ObjectRequest) - Method in interface sailpoint.object.ProvisioningPlan
+
addOrdering(String, boolean) - Method in class sailpoint.object.QueryOptions
 
-
addRequest(AbstractRequest) - Method in interface sailpoint.object.ProvisioningPlan
+
addRequest(sailpoint.object.ProvisioningPlan.AbstractRequest) - Method in class sailpoint.object.ProvisioningPlan
 
-
addRequester(Identity) - Method in interface sailpoint.object.ProvisioningPlan
+
and(Filter, Filter) - Static method in class sailpoint.object.Filter
 
-
addValues(Object, Object, boolean) - Static method in interface sailpoint.object.ProvisioningPlan
-
-
Utility to add values to a multi-valued attribute with - necessary coercion.
-
-
addValues(Object, Object) - Static method in interface sailpoint.object.ProvisioningPlan
-
-
Backward compatibility for the Original signature before - case insensitivity was added.
-
-
addWarning(List<Message>) - Method in interface sailpoint.object.ProvisioningResult
+
and(List<Filter>) - Static method in class sailpoint.object.Filter
 
-
addWarning(Message) - Method in interface sailpoint.object.ProvisioningResult
+
and(Filter...) - Static method in class sailpoint.object.Filter
 
-
APP_IDM - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AccountRequest application that represents - the aggregate identity managed by a provisioning system.
-
-
APP_IIQ - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AccountRequest application that represents - the IdentityIQ identity.
-
-
Application - Interface in sailpoint.object
+
APP_IIQ - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ApplicationDependency() - Constructor for class sailpoint.object.Field.ApplicationDependency
+
Application - Class in sailpoint.object
 
-
ApplicationDependency(String, String) - Constructor for class sailpoint.object.Field.ApplicationDependency
+
Application() - Constructor for class sailpoint.object.Application
 
-
ARG_ADD_DATE - Static variable in interface sailpoint.object.ProvisioningPlan
+
asList(Object) - Static method in class sailpoint.server.IdnRuleUtil
-
The date at which an add or set request is to occur, - the "sunrise" date.
+
Return a List with the given object.
-
ARG_ALLOW_SIMPLIFICATION - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_ASSIGNED_SCOPE - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ARG_ASSIGNMENT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
When added to the arguments and set to true, will - indicate that the AttributeAssignment stored on the identity, - which makes it sticky, should also be created or removed.
-
-
ARG_ASSIGNMENT_NOTE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The role assignment note coming in with the attribute request.
-
-
ARG_CHECK_POLICY - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
When used with ATT_PASSWORD, requests that policy checking - be performed before setting.
-
-
ARG_COMMENTS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The request comments coming in with the request.
-
-
ARG_DESTINATION_IDENTITY - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Argument for "links" request.
-
-
ARG_FORCE_NEW_ACCOUNT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
When logically true, this AccountRequest argument indicates that the - user specifically requested to create an account.
-
-
ARG_LINK_EDIT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
When this is logically true, it means that the link attribute - was manually edited.
-
-
ARG_LOCK_TIMEOUT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Name of a plan argument that contains the timeout to be used - when acquiring locks on the target Identity.
-
-
ARG_PERMITTED_BY - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Holds the name of the role which permits the role being requested - in a permitted role request.
-
-
ARG_PREVIOUS_VALUE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Optional AttributeRequest argument used to convey - the previous values that were assigned.
-
-
ARG_REMOVE_DATE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The date at which a Remove request is to occur, - the "sunset" date.
-
-
ARG_REQUESTER - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Name of a plan argument holding the name of the identity - that is considered to be the requester of the provisioning.
-
-
ARG_REQUIRED - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_ATTRIBUTE_NAME - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ARG_SECRET - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
When true indicates that the AttributeRequest value is secret.
-
-
ARG_SOURCE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Name of a plan argument that contains the "source" type.
-
-
ARG_SOURCE_ID - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Name of a plan argument that contains the database id of - an object associated with the source.
-
-
ARG_SOURCE_IDENTITY - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Argument for "links" request.
-
-
ARG_SOURCE_NAME - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Name of a plan argument that contains the database name of - an object associated with the source.
-
-
ARG_TYPE - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_GROUP_PROVISIONING - Static variable in class sailpoint.object.IntegrationConfig
 
-
ARG_TYPE_DATE - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_HOST - Static variable in class sailpoint.object.IntegrationConfig
 
-
ASSIGNMENT_ID_NEW - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_IIQ_PASSWORD - Static variable in class sailpoint.object.ProvisioningPlan
-
A reserved name that can be set in an AttributeRequest's assignmentId - to indicate that a new assignment is to be created.
+
Deprecated. 
-
ATT_ATTRIBUTE_NAME - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_NAME - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_ATTRIBUTE_VALUE - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_NO_GROUP_PERMISSIONS - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_CURRENT_PASSWORD - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Special attribute used in the arguments map of a password - AttributeRequest that holds the users current password.
-
-
ATT_GENERATED - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Used to notify email template
-
-
ATT_IDM_ROLES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of the attribute in the APP_IDM account that - represents the assigned roles.
-
-
ATT_IGNORED - Static variable in interface sailpoint.object.Field
-
-
A field attribute that controls whether this field will be included - during provisioning policy template expansion.
-
-
ATT_IIQ_ACTIVITY_CONFIG - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AttributeRequest within the IdentityIQ - application to modify the ActivityConfig.
-
-
ATT_IIQ_ARCHIVES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
A pseudo attribute representing the IdentityArchive list - which we display in the UI as "identity history".
-
-
ATT_IIQ_ASSIGNED_ROLES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AttributeRequest within the IdentityIQ - application to modify the assigned role list.
-
-
ATT_IIQ_AUTHORIZED_SCOPES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AttributeRequest within the IdentityIQ - application to modify the authorized scopes list.
-
-
ATT_IIQ_CAPABILITIES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Attribute holding the capabilities list.
-
-
ATT_IIQ_CAPABILITIES_NEW - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Preferred camel case version of the capabilities attribute.
-
-
ATT_IIQ_CONTROLLED_SCOPES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Attribute holding the controlled scopes.
-
-
ATT_IIQ_CONTROLLED_SCOPES_NEW - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Preferred camel case version of the authorizedScopes attribute.
-
-
ATT_IIQ_CONTROLS_ASSIGNED_SCOPE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Attribute holding the flag indicating that the identity - also controls the assigned scope.
-
-
ATT_IIQ_DETECTED_ROLES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AttributeRequest within the IdentityIQ - application to modify the detected role list.
-
-
ATT_IIQ_EVENTS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
A pseudo attribute representing Request objects associated - with this identity which the UI displays as "identity events".
-
-
ATT_IIQ_LINKS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of special AttributeRequest within the IdentityIQ - application to move or delete links
-
-
ATT_IIQ_PASSWORD - Static variable in interface sailpoint.object.ProvisioningPlan
-
- -
-
ATT_IIQ_PROVISIONING_REQUESTS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
An IdentityIQ pseudo attribute targeting the list of - ProvisioningRequests.
-
-
ATT_IIQ_ROLE_CHILD - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a child role from a role in a role composition certification.
-
-
ATT_IIQ_ROLE_GRANTED_CAPABILITY - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a capability grant from a role.
-
-
ATT_IIQ_ROLE_GRANTED_SCOPE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a scope grant from a role.
-
-
ATT_IIQ_ROLE_PERMIT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a permitted role from a role in a role composition certification.
-
-
ATT_IIQ_ROLE_PROFILES - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a profile from a role in a role composition certification.
-
-
ATT_IIQ_ROLE_REQUIREMENT - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Request to remove a required role from a role in a role composition certification.
-
-
ATT_IIQ_SCOPE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Attribute holding the assigned scope.
-
-
ATT_IIQ_SNAPSHOTS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
An IdentityIQ pseudo attribute targeting the list of IdentitySnapshots.
-
-
ATT_IIQ_WORKGROUPS - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
The name of a special AttributeRequest within the IdentityIQ - application to modify the workgroup list.
-
-
ATT_OBJECT_APPLICATION - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_NO_PERMISSIONS - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_OBJECT_ARGUMENTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_NO_PROVISIONING_REQUESTS - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_OBJECT_ATTRIBUTES - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_OBJECT_APPLICATION - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_OBJECT_ID - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_OBJECT_ARGUMENTS - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_OBJECT_INSTANCE - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_OBJECT_ATTRIBUTES - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_OBJECT_PERMISSIONS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_OP - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_OBJECT_TYPE - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_OPERATIONS - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_OBJECT_UUID - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_PASSWORD - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_OP - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_PASSWORD_CONFIRM - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_OPERATION - Static variable in interface sailpoint.object.Field
-
-
The name of an attribute that holds the ProvisioningPlan.ObjectOperation - name if this field was generated from an update policy where - the request was something other than op=Modify, such as op=Enable, - op=Disable, or op=Lock.
-
-
ATT_PASSWORD - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Special attribute name used in AttributeRequests to - set an Identity or account's password.
-
-
ATT_PERMISSION_RIGHTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_PERMISSION_RIGHTS - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_PERMISSION_TARGET - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_PERMISSION_TARGET - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_PLAN_ACCOUNTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_PROVISIONING_REQUEST_EXPIRATION - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PLAN_ARGUMENTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_REQUEST_ARGUMENTS - Static variable in class sailpoint.object.ProvisioningPlan
 
-
ATT_PLAN_IDENTITY - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_ROLE_SYNC_HISTORY - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PLAN_INTEGRATION_DATA - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_SCHEMA_PROVISIONING_MAP - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PLAN_OBJECTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_STATUS_SUCCESS_IS_COMMITTED - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PLAN_PROFILE_ORINDAL - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_UNIVERSAL_MANAGER - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PLAN_REQUESTERS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_URL - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_PRE_EXPIRE - Static variable in interface sailpoint.object.ProvisioningPlan
-
-
Special attribute used in the arguments map of a password - AttributeRequest that indicates that the new password should be - pre-expired (for example - the user has to change it after first login).
-
-
ATT_REQUEST_ARGUMENTS - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATT_USERNAME - Static variable in class sailpoint.object.IntegrationConfig
 
-
ATT_REQUEST_RESULT - Static variable in interface sailpoint.object.ProvisioningPlan
+
ATTACHMENT_CONFIG_LIST - Static variable in class sailpoint.object.ProvisioningPlan.AccountRequest
 
-
ATT_SCRIPT_ARGS - Static variable in interface sailpoint.object.Field
-
-
The name of an attribute used to hold another Map containing - arguments that will be passed into the evaluation of - dynamic scripts in this field.
-
-
ATTR_AFTER_PROVISIONING_RULE - Static variable in interface sailpoint.object.Application
-
-
Key from the config that holds the value in the config that holds the name of the - sever side rules that should be executed before and - after provisioning.
-
-
ATTR_BEFORE_PROVISIONING_RULE - Static variable in interface sailpoint.object.Application
-
-
Key from the config that holds the value in the config - that holds the name of the sever side rules that should - be executed before and after provisioning.
-
-
ATTR_CALL_LIBS - Static variable in interface sailpoint.object.Field
+
ATTACHMENTS - Static variable in class sailpoint.object.ProvisioningPlan.AccountRequest
 
-
ATTR_COMPOSITE_DEFINITION - Static variable in interface sailpoint.object.Application
-
-
Attribute holding the CompositeDefinition.
-
-
ATTR_CUSTOMIZATION_RULE_LOCATION - Static variable in interface sailpoint.object.Application
-
-
Key from the config that says where customization rules are run - when the Connector is being called through a proxy Connector.
-
-
ATTR_DELTA_AGGREGATION - Static variable in interface sailpoint.object.Application
-
-
Key from the config that can be set by the Connector to save state - for delta aggregation.
-
-
ATTR_DISPLAY_NAME - Static variable in interface sailpoint.object.Application
-
-
Attribute for the displayName of the application
-
-
ATTR_EXTRA_RECS - Static variable in interface sailpoint.object.Field
-
-
Used in ComboBox - Records that are not in the Store via the Proxy - This allows IdentityIQ to add certain records to a store that would not normally - be there based on the Proxy Filters
-
-
ATTR_FORM_PATH - Static variable in interface sailpoint.object.Application
-
-
Attribute holding the path to the xhtml page used to render the - configuration attributes for an application.
-
-
ATTR_GROUP_MEMBER_ATTRIBUTE - Static variable in interface sailpoint.object.Application
-
-
The name of the attribute in the group schema containing the list - of members.
-
-
ATTR_HIDDEN - Static variable in interface sailpoint.object.Field
-
-
An attribute that holds a DynamicValue indicating whether this field - is hidden.
-
-
ATTR_MANAGEMENT_WORKGROUP - Static variable in interface sailpoint.object.Application
-
-
Attribute for the management workgroup, if any, for this Application
-
-
ATTR_MANAGER_FILTER - Static variable in interface sailpoint.object.Application
-
-
Attribute holding the manager filter.
-
-
ATTR_NATIVE_CHANGE_ATTRIBUTE_SCOPE - Static variable in interface sailpoint.object.Application
-
-
Option that tells the back end which attributes to detect change against.
-
-
ATTR_NATIVE_CHANGE_ATTRIBUTES - Static variable in interface sailpoint.object.Application
-
-
List of attribute names that should be included when performing native change detection.
-
-
ATTR_NATIVE_CHANGE_DETECTION_ENABLED - Static variable in interface sailpoint.object.Application
-
-
Attribute to indicate that the aggregation process should track - native changes at the application level.
-
-
ATTR_NATIVE_CHANGE_OPERATIONS - Static variable in interface sailpoint.object.Application
-
-
List of operations that should be included when performing native change detection.
-
-
ATTR_NATIVE_RULES - Static variable in interface sailpoint.object.Application
-
-
Key from the config that holds a list of rule names that need to be executed - by the connector as part of the connector interaction.
-
-
ATTR_READ_ONLY - Static variable in interface sailpoint.object.Field
-
-
An attribute that holds a DynamicValue indicating whether this field - is read only.
-
-
ATTR_RULE_LIBS - Static variable in interface sailpoint.object.Field
+
AttributeDefinition - Class in sailpoint.object
 
-
ATTR_TEMPLATE_APPLICATION - Static variable in interface sailpoint.object.Application
-
-
Attribute holding the name of the application "template" that was - used when this application was created.
-
-
ATTR_VALUE_OBJ_COLUMN - Static variable in interface sailpoint.object.Field
-
 
-
ATTR_VALUE_PROPERTY - Static variable in interface sailpoint.object.Field
-
 
-
ATTR_VALUE_PROPERTY_NAME - Static variable in interface sailpoint.object.Field
+
AttributeDefinition() - Constructor for class sailpoint.object.AttributeDefinition
 
AttributeRequest() - Constructor for class sailpoint.object.ProvisioningPlan.AttributeRequest
 
@@ -572,19 +210,21 @@
AttributeRequest(String, ProvisioningPlan.Operation, Object, String) - Constructor for class sailpoint.object.ProvisioningPlan.AttributeRequest
 
AttributeRequest(ProvisioningPlan.AttributeRequest) - Constructor for class sailpoint.object.ProvisioningPlan.AttributeRequest
-
-
Handy constructor for plan transformers.
-
-
attrSearchCountAccounts(List<String>, String, String, List<String>) - Method in interface sailpoint.server.IdnRuleUtil
+
 
+
Attributes<K,V> - Class in sailpoint.object
+
 
+
Attributes() - Constructor for class sailpoint.object.Attributes
+
 
+
attrSearchCountAccounts(List<String>, String, String, List<String>) - Method in class sailpoint.server.IdnRuleUtil
Count the accounts that match the searchable attribute and value.
-
attrSearchGetIdentityName(List<String>, String, String, List<String>) - Method in interface sailpoint.server.IdnRuleUtil
+
attrSearchGetIdentityName(List<String>, String, String, List<String>) - Method in class sailpoint.server.IdnRuleUtil
Get the identity name for the account matching the specified criteria.
-A C D E F G H I M N O P Q R S T U V W 
+A B C D E F G H I J L M N O P Q R S T V W _ 
diff --git a/static/rule-java-docs/index-files/index-10.html b/static/rule-java-docs/index-files/index-10.html index c9efe2acd..d9271c872 100644 --- a/static/rule-java-docs/index-files/index-10.html +++ b/static/rule-java-docs/index-files/index-10.html @@ -2,9 +2,9 @@ - -N-Index - + +J-Index + @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@ @@ -13,6 +13,7 @@

Packages

@@ -92,56 +92,50 @@ var activeTableTab = "activeTableTab";
sailpoint.api
-

Interface SailPointContext

+

Class SailPointContext

+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.api.SailPointContext
    • +
    +
  • +
  • -
    -
    All Superinterfaces:
    -
    PersistenceManager, Resolver, RuleRunner, XMLReferenceResolver
    -


    -
    public interface SailPointContext
    -extends PersistenceManager, RuleRunner, XMLReferenceResolver
    -
    The primary API for accessing the persistent store and performing - core system operations.
    +
    public class SailPointContext
    +extends java.lang.Object
    +
    A context object class used to query for data + This class is for old rules using SailPointContext. Any new rules submitted using the following methods will be blocked and + asked to migrate to the replacement methods available in IDNRuleUtil + + These methods allow you to pass a class name to query on. The two classes supported are `Identity.class` and `Link.class`
@@ -304,275 +209,136 @@ extends
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SailPointContext

        +
        public SailPointContext()
        +
      • +
      +
    • +
    • Method Detail

      - +
      • -

        getContext

        -
        SailPointContext getContext()
        -
        Return a context derived from this one. - - A single prototype context can serve as a factory for - thread-specific contexts, depending on the implementation. - SailPointFactory will always call this when returning contexts.
        -
      • -
      - - - -
        -
      • -

        prepare

        -
        void prepare()
        -
        Method to be called by the SailPointFactory immediately after - creating a context from a prototype. See comments - in InternalContext for the complex and unfortunate reason.
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        isClosed

        -
        boolean isClosed()
        -
        Return true if this context has been closed and can no longer be used.
        -
      • -
      - - - -
        -
      • -

        setUserName

        -
        void setUserName(java.lang.String name)
        -
        Set the name of the current user of this context. This will - be used when generating audit events.
        -
      • -
      - - - -
        -
      • -

        getUserName

        -
        java.lang.String getUserName()
        -
        Return the name of the current user of this context. - This will normally be the name of an Identity but - occasionally it might be an abstract name like "System" - or "Scheduler".
        -
      • -
      - - - -
        -
      • -

        impersonate

        -
        void impersonate(Identity identity)
        -
        This can be used to impersonate the given identity with respect to the - scoping that is applied. When impersonating, the given identity's - controlled scopes are used to scope results rather than the user - specified by setUserName(String). Note that this Identity does not have - to be persistent.
        +

        countObjects

        +
        public int countObjects(java.lang.Class className,
        +                        QueryOptions queryOptions)
        +
        Query the context to get the number of objects for the given query
        Parameters:
        -
        identity - The Identity to impersonate for scoping.
        -
        -
      • -
      - - - -
        -
      • -

        setScopeResults

        -
        void setScopeResults(boolean scopeResults)
        -
        Set whether the results from search and getObjects methods should - have scoping applied to them based on the controlled scopes of the - user set with setUserName(String). This can be - overridden by the QueryOptions that are passed into the searching - methods. Scoping results is disabled by default.
        -
        -
        Parameters:
        -
        scopeResults - Whether results from the search methods should - be scoped.
        -
        -
      • -
      - - - -
        -
      • -

        getScopeResults

        -
        boolean getScopeResults()
        -
        Returns true if query results are being scoped.
        -
      • -
      - - - -
        -
      • -

        getConfiguration

        -
        Configuration getConfiguration()
        -                        throws GeneralException
        -
        Retrieve the system configuration object. - You can also get this just by calling getObject() but - this method will use a static cache.
        -
        -
        Throws:
        -
        GeneralException
        -
        -
      • -
      - - - - - - - -
        -
      • -

        decrypt

        -
        java.lang.String decrypt(java.lang.String src)
        -                  throws GeneralException
        -
        Decrypt an encrypted string. - This can fail if the context does not have privileges - to perform decryption.
        -
        -
        Throws:
        -
        GeneralException
        -
        -
      • -
      - - - - - - - -
        -
      • -

        authenticate

        -
        Identity authenticate(java.lang.String accountId,
        -                      java.lang.String password)
        -               throws GeneralException
        -
        Authenticate a user with the given accountId and password. - - This should have the side-effect of creating a new Identity if - the following criteria are met: -
          -
        1. Authentication is passed-through to another authentication source - and succeeds.
        2. -
        3. The account that was correlated on the pass-through authentication - source does not have a corresponding Identity.
        4. -
        -
        -
        Parameters:
        -
        accountId - A unique identifier for the user/account to - authenticate.
        -
        password - The password to use in the authentication credentials.
        +
        className - Identity or Link class
        +
        queryOptions - options to filter results
        Returns:
        -
        The authenticated or newly created user if authentication - succeeded.
        -
        Throws:
        -
        GeneralException - Can be thrown if authentication fails for some - reason (invalid password, account locked), if - an account/user with the given accountId cannot - was not found, or a problem occurs when - auto-creating a user.
        +
        the number of objects found
      - +
      • -

        setProperty

        -
        void setProperty(java.lang.String name,
        -                 java.lang.Object value)
        -
        Set a context property. This is intended only for diagnostics, - currently there are not any publicly defined properties.
        +

        getObjects

        +
        public <T> java.util.List<T> getObjects(java.lang.Class className,
        +                                        QueryOptions queryOptions)
        +
        Query the context to get a list of objects for the given query
        +
        +
        Parameters:
        +
        className - Identity or Link class
        +
        queryOptions - options to filter results
        +
        Returns:
        +
        the list of objects found
        +
      - + + + +
        +
      • +

        search

        +
        public java.util.Iterator<java.lang.Object[]> search(java.lang.Class className,
        +                                                     QueryOptions queryOptions,
        +                                                     java.lang.String attributes)
        +
        Query the context to get a list of results only including the attributes provided that match the given query
        +
        +
        Parameters:
        +
        className - Identity or Link class
        +
        queryOptions - options to filter results
        +
        attributes - the attributes to return
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        search

        +
        public java.util.Iterator<java.lang.Object[]> search(java.lang.Class className,
        +                                                     QueryOptions queryOptions)
        +
        Query the context to get a list of results that match the given query
        +
        +
        Parameters:
        +
        className - Identity or Link class
        +
        queryOptions - options to filter results
        +
        Returns:
        +
        the results of the query
        +
        +
      • +
      + + + +
        +
      • +

        getObjectByName

        +
        public <T> java.lang.Object getObjectByName(java.lang.Class className,
        +                                            java.lang.String name)
        +
        Query the context to get an object by name
        +
        +
        Parameters:
        +
        className - Identity or Link class
        +
        name - the name of the object to fetch
        +
        Returns:
        +
        the result of the query
        +
        +
      • +
      +
      • -

        getProperty

        -
        java.lang.Object getProperty(java.lang.String name)
        -
        Return the property with the given name.
        +

        getUniqueObject

        +
        public <T> java.lang.Object getUniqueObject(java.lang.Class className,
        +                                            Filter... filters)
        +
        Query the context to get a unique object with filters
        +
        +
        Parameters:
        +
        className - Identity or Link class
        +
        filters - options to filter by
        +
        Returns:
        +
        the result of the query
        +
    • @@ -602,7 +368,7 @@ java.sql.Connection getConnection()
diff --git a/static/rule-java-docs/sailpoint/api/package-frame.html b/static/rule-java-docs/sailpoint/api/package-frame.html index 92ae7e1cf..8fbc38136 100644 --- a/static/rule-java-docs/sailpoint/api/package-frame.html +++ b/static/rule-java-docs/sailpoint/api/package-frame.html @@ -2,27 +2,18 @@ - + sailpoint.api - +

sailpoint.api

diff --git a/static/rule-java-docs/sailpoint/api/package-summary.html b/static/rule-java-docs/sailpoint/api/package-summary.html index 2cd81c4b8..da27a8cf0 100644 --- a/static/rule-java-docs/sailpoint/api/package-summary.html +++ b/static/rule-java-docs/sailpoint/api/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.api - + @@ -74,30 +74,6 @@
  • - - - - - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    PersistenceManager -
    Interface implemented by classes that provide persistence services.
    -
    SailPointContext -
    The primary API for accessing the persistent store and performing - core system operations.
    -
    -
  • -
  • @@ -106,29 +82,15 @@ - +
    Class Summary 
    PersistenceManager.LockParametersSailPointContext -
    Encapsulation of lock parameters.
    +
    A context object class used to query for data + This class is for old rules using SailPointContext.
  • -
  • - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    PersistenceManager.LockPhase 
    -
diff --git a/static/rule-java-docs/sailpoint/api/package-tree.html b/static/rule-java-docs/sailpoint/api/package-tree.html index cdf2537c5..50716b92c 100644 --- a/static/rule-java-docs/sailpoint/api/package-tree.html +++ b/static/rule-java-docs/sailpoint/api/package-tree.html @@ -2,9 +2,9 @@ - + sailpoint.api Class Hierarchy - + @@ -80,41 +80,7 @@ -

Interface Hierarchy

- -

Enum Hierarchy

- diff --git a/static/rule-java-docs/sailpoint/connector/webservices/Endpoint.html b/static/rule-java-docs/sailpoint/connector/webservices/Endpoint.html index b7edbac42..9df37dba9 100644 --- a/static/rule-java-docs/sailpoint/connector/webservices/Endpoint.html +++ b/static/rule-java-docs/sailpoint/connector/webservices/Endpoint.html @@ -2,9 +2,9 @@ - + Endpoint - + @@ -18,8 +18,8 @@ catch(err) { } //--> -var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab"; @@ -92,21 +92,47 @@ var activeTableTab = "activeTableTab";
sailpoint.connector.webservices
-

Interface Endpoint

+

Class Endpoint

+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.connector.webservices.Endpoint
    • +
    +
  • +


  • -
    public interface Endpoint
    +
    public class Endpoint
    +extends java.lang.Object
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        OLD_PERMISSION_ATTRIBUTE

        +
        @Deprecated
        +public static final java.lang.String OLD_PERMISSION_ATTRIBUTE
        +
        Deprecated. 
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_DEFAULT_LANG

        +
        public static final java.lang.String CONFIG_DEFAULT_LANG
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_LANGUAGES

        +
        public static final java.lang.String CONFIG_LANGUAGES
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SYSTEM_ATTRIBUTES

        +
        public static final java.lang.String[] SYSTEM_ATTRIBUTES
        +
      • +
      + + + +
        +
      • +

        PROV_ATTRIBUTE

        +
        public static final java.lang.String PROV_ATTRIBUTE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_DISPLAY_NAME

        +
        public static final java.lang.String PROV_DISPLAY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_DESCRIPTIONS

        +
        public static final java.lang.String PROV_DESCRIPTIONS
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_REQUESTABLE

        +
        public static final java.lang.String PROV_REQUESTABLE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_OWNER

        +
        public static final java.lang.String PROV_OWNER
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_SCOPE

        +
        public static final java.lang.String PROV_SCOPE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_MANAGED_ATTRIBUTE_TYPE

        +
        public static final java.lang.String PROV_MANAGED_ATTRIBUTE_TYPE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_CLASSIFICATIONS

        +
        public static final java.lang.String PROV_CLASSIFICATIONS
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        PROV_ATTRIBUTES

        +
        public static final java.lang.String[] PROV_ATTRIBUTES
        +
      • +
      + + + +
        +
      • +

        SP_ACCOUNTGROUP_BY_NAME

        +
        public static final java.util.Comparator<ManagedAttribute> SP_ACCOUNTGROUP_BY_NAME
        +
      • +
      + + + +
        +
      • +

        SP_ACCOUNTGROUP_BY_NATIVE_IDENTITY

        +
        public static final java.util.Comparator<ManagedAttribute> SP_ACCOUNTGROUP_BY_NATIVE_IDENTITY
        +
      • +
      + + + +
        +
      • +

        SP_ACCOUNTGROUP_BY_OWNER

        +
        public static final java.util.Comparator<ManagedAttribute> SP_ACCOUNTGROUP_BY_OWNER
        +
      • +
      + + + +
        +
      • +

        SP_ACCOUNTGROUP_BY_MODIFIED

        +
        public static final java.util.Comparator<ManagedAttribute> SP_ACCOUNTGROUP_BY_MODIFIED
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ManagedAttribute

        +
        public ManagedAttribute()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getApplication

        +
        public Application getApplication()
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.String getType()
        +
      • +
      + + + +
        +
      • +

        getAttribute

        +
        public java.lang.String getAttribute()
        +
      • +
      + + + +
        +
      • +

        getDisplayName

        +
        public java.lang.String getDisplayName()
        +
      • +
      + + + +
        +
      • +

        getDisplayableName

        +
        public java.lang.String getDisplayableName()
        +
      • +
      + + + +
        +
      • +

        getAttributes

        +
        public Attributes<java.lang.String,java.lang.Object> getAttributes()
        +
      • +
      + + + +
        +
      • +

        getAttribute

        +
        public java.lang.Object getAttribute(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getApplicationId

        +
        public java.lang.String getApplicationId()
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String name,
        +                java.lang.Object value)
        +
      • +
      + + + +
        +
      • +

        getDescriptions

        +
        public java.util.Map<java.lang.String,java.lang.String> getDescriptions()
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        +
      • +
      +
    • +
@@ -145,7 +689,7 @@
diff --git a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.Operation.html b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.Operation.html index fd30e8a05..cd51a0b54 100644 --- a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.Operation.html +++ b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.Operation.html @@ -2,9 +2,9 @@ - + ProvisioningPlan.AccountRequest.Operation - + @@ -123,10 +123,6 @@ var activeTableTab = "activeTableTab";
public static enum ProvisioningPlan.AccountRequest.Operation
 extends java.lang.Enum<ProvisioningPlan.AccountRequest.Operation>
-
Defines the operation to perform on the account. This values are - the same as ObjectRequest.Operation. Either can be used when - building the request. This is for backward compatibility with - pre-6.0 code.
diff --git a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.html b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.html index 9363ca6b7..eeaa93e9c 100644 --- a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.html +++ b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.AccountRequest.html @@ -2,9 +2,9 @@ - + ProvisioningPlan.AccountRequest - + @@ -18,8 +18,8 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":42,"i3":10,"i4":42,"i5":42,"i6":10,"i7":10,"i8":10,"i9":42,"i10":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
@@ -144,9 +139,38 @@ extends AbstractRequest static class  -ProvisioningPlan.AccountRequest.Operation -
Defines the operation to perform on the account.
- +ProvisioningPlan.AccountRequest.Operation  + + + + + +
    +
  • + + +

    Field Summary

    + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeField and Description
    static java.lang.StringATTACHMENT_CONFIG_LIST 
    static java.lang.StringATTACHMENTS 
    static java.lang.StringTYPE_ENTITLEMENT 
    static java.lang.StringTYPE_ROLE 
  • @@ -187,7 +211,7 @@ extends AbstractRequest

    Method Summary

    - + @@ -197,62 +221,14 @@ extends AbstractRequest - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + @@ -272,6 +248,66 @@ extends AbstractRequest
    - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -349,176 +178,8 @@ extends java.io.Serializable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -535,35 +196,8 @@ extends java.io.Serializable - - - - - - - - - - - - - - - - - - - - - - - - @@ -574,74 +208,28 @@ extends java.io.Serializable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +
    All Methods Instance Methods Concrete Methods Deprecated Methods All Methods Instance Methods Concrete Methods 
    Modifier and Type Method and Description clone() 
    voidcloneAccountProperties(ProvisioningPlan.AccountRequest src) 
    <any>getArgs() -
    Deprecated.  -
    Only used for JSON - use ProvisioningPlan.getArguments() instead.
    -
    -
    ProvisioningPlan.AccountRequest.Operation getOperation() 
    java.lang.StringgetRequestID() - -
    sailpoint.object.ProvisioningPlan.AbstractRequestinstantiate() 
    java.lang.StringgetXmlRequestID() - -
    booleanhasNoAttributesOrPermissions() 
    booleanisAccountRequest() -
    Causes object type to be suppressed from the Map representation.
    -
    booleanisRoleExpansion() -
    Temporary transient flag meaning this request came from role expansion.
    -
    voidsetArgs(<any> atts) -
    Deprecated.  -
    Only used for JSON - use #setArguments(Attributes) instead.
    -
    -
    void setOperation(ProvisioningPlan.AccountRequest.Operation op) 
    AttributeRequest(java.util.Map map) 
    AttributeRequest(ProvisioningPlan.AttributeRequest src) -
    Handy constructor for plan transformers.
    -
    AttributeRequest(ProvisioningPlan.AttributeRequest src) 
    AttributeRequest(java.lang.String name, @@ -178,7 +170,7 @@ extends GenericRequest

    Method Summary

    - + @@ -188,44 +180,18 @@ extends GenericRequest - - + + - - + + - - + + - - - - - - - - @@ -309,7 +275,6 @@ extends GenericRequest
  • AttributeRequest

    public AttributeRequest(ProvisioningPlan.AttributeRequest src)
    -
    Handy constructor for plan transformers.
  • @@ -320,65 +285,33 @@ extends GenericRequest

    Method Detail

    - +
    • -

      getNameXml

      -
      @Deprecated
      -public java.lang.String getNameXml()
      -
      Deprecated. use #getName()
      +

      instantiate

      +
      public sailpoint.object.ProvisioningPlan.GenericRequest instantiate()
    - +
    • -

      getValueXmlAttribute

      -
      @Deprecated
      -public java.lang.String getValueXmlAttribute()
      -
      Deprecated. use #getValue()
      +

      isSecret

      +
      public boolean isSecret()
    - - - -
      -
    • -

      getValueXmlElement

      -
      @Deprecated
      -public java.lang.Object getValueXmlElement()
      -
      Deprecated. use #getValue()
      -
    • -
    - - - -
      -
    • -

      getDisplayValueXml

      -
      @Deprecated
      -public java.lang.String getDisplayValueXml()
      -
      Deprecated. use #getDisplayValue()
      -
    • -
    - +
    • getValue

      -
      public java.lang.Object getValue(SailPointContext ctx)
      +
      public java.lang.Object getValue(SailPointContext ctx)
                                 throws GeneralException
      -
      Returns attribute value. If the value is a reference, the referenced - object will be returned.
      -
      Parameters:
      -
      ctx - SailPointContext
      -
      Returns:
      -
      Attribute value or null
      Throws:
      GeneralException
      @@ -430,7 +363,7 @@ public java.lang.String getDisplayValueXml()
      @@ -173,239 +162,95 @@ extends AbstractXmlObject
    - - + + - - + + - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - + - + - - - - - + - + - + - + - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - + - - - + + + - - - - - + - - - - - + - + - + - + - + - + - - - - - - - - - - - - - + - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + @@ -415,7 +260,7 @@ extends AbstractXmlObject

    Methods inherited from class java.lang.Object

    -finalize, getClass, notify, notifyAll, toString, wait, wait, wait +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -473,7 +318,6 @@ extends AbstractXmlObject
  • clone

    public void clone(ProvisioningPlan.GenericRequest src)
    -
    Copy the contents of one request to another.
  • @@ -483,7 +327,6 @@ extends AbstractXmlObject
  • clone

    public ProvisioningPlan.GenericRequest clone()
    -
    Utility to clone a request from another.
  • @@ -504,24 +347,6 @@ extends AbstractXmlObject
    public void setName(java.lang.String s)
    -
    - - -
      -
    • -

      getUnmappedName

      -
      public java.lang.String getUnmappedName()
      -
    • -
    - - - -
      -
    • -

      setUnmappedName

      -
      public void setUnmappedName(java.lang.String s)
      -
    • -
    @@ -531,15 +356,6 @@ extends AbstractXmlObject
    public java.lang.String getDisplayValue()
    - - - -
      -
    • -

      setDisplayValue

      -
      public void setDisplayValue(java.lang.String val)
      -
    • -
    @@ -558,24 +374,6 @@ extends AbstractXmlObject
    public void setValue(java.lang.Object o)
    - - - -
      -
    • -

      getScript

      -
      public Script getScript()
      -
    • -
    - - - -
      -
    • -

      setScript

      -
      public void setScript(Script s)
      -
    • -
    @@ -601,9 +399,6 @@ extends AbstractXmlObject
  • getOperation

    public ProvisioningPlan.Operation getOperation()
    -
    Backward compatibility with the old property name - The standard property is now just "op" for consistency with - ObjectRequest.
  • @@ -613,27 +408,6 @@ extends AbstractXmlObject
  • setOperation

    public void setOperation(ProvisioningPlan.Operation op)
    -
    Backward compatibility with the old property name - The standard property is now just "op" for consistency with - ObjectRequest.
    -
  • - - - - -
      -
    • -

      getTrackingId

      -
      public java.lang.String getTrackingId()
      -
    • -
    - - - -
      -
    • -

      setTrackingId

      -
      public void setTrackingId(java.lang.String id)
    @@ -645,74 +419,22 @@ extends AbstractXmlObject
    public ProvisioningResult getResult()
    - - - - - - - -
      -
    • -

      addValues

      -
      public void addValues(java.lang.Object something,
      -                      boolean nocase)
      -
      Utility to add values to a multi-valued attribute. - This is used by Provisioner during plan compilation to normalize - multiple requests for the same attribute. The given value - is normally a List but it can be an atomic value (usually - a String).
      -
    • -
    - - - -
      -
    • -

      removeValues

      -
      public void removeValues(java.lang.Object something,
      -                         boolean nocase)
      -
      Utility to remove values from a multi-valued attribute. - Like addValues, used by Provisioner during plan normalization.
      -
    • -
    - - - -
      -
    • -

      retainValues

      -
      public void retainValues(java.lang.Object something,
      -                         boolean nocase)
      -
      Utility to reatain only those values in a given list. - This one is used by Aggregator to filter plans in - ProvisioningRequests.
      -
    • -
    - +
    • setArguments

      -
      public void setArguments(<any> atts)
      -
      Attribute and permission requests can have arguments - that influence how they are provisioned. Sunrise/sunset - dates are one example.
      +
      public void setArguments(Attributes<java.lang.String,java.lang.Object> atts)
    - +
    • setArgs

      -
      public void setArgs(<any> atts)
      +
      public void setArgs(Attributes<java.lang.String,java.lang.Object> atts)
    @@ -721,7 +443,7 @@ extends AbstractXmlObject @@ -730,20 +452,7 @@ extends AbstractXmlObject
    • getArguments

      -
      public <any> getArguments()
      -
    • -
    -
    - - -
      -
    • -

      hasArguments

      -
      public boolean hasArguments()
      -
      Used to skip the simplification process since it is unclear - how to combine requests that have different arguments. - Some can probably merge, but others need to be processed - independently.
      +
      public Attributes<java.lang.String,java.lang.Object> getArguments()
    @@ -765,70 +474,6 @@ extends AbstractXmlObject
    public java.lang.Object get(java.lang.String name)
    -
    - - -
      -
    • -

      remove

      -
      public java.lang.Object remove(java.lang.String name)
      -
    • -
    - - - -
      -
    • -

      getBoolean

      -
      public boolean getBoolean(java.lang.String name)
      -
    • -
    - - - -
      -
    • -

      getString

      -
      public java.lang.String getString(java.lang.String name)
      -
    • -
    - - - -
      -
    • -

      setAddDate

      -
      public void setAddDate(java.util.Date d)
      -
      Convenience accessor for the effective dates.
      -
    • -
    - - - -
      -
    • -

      getAddDate

      -
      public java.util.Date getAddDate()
      -
    • -
    - - - -
      -
    • -

      setRemoveDate

      -
      public void setRemoveDate(java.util.Date d)
      -
    • -
    - - - -
      -
    • -

      getRemoveDate

      -
      public java.util.Date getRemoveDate()
      -
    • -
    @@ -847,106 +492,22 @@ extends AbstractXmlObject
    public void setComments(java.lang.String c)
    - +
    • -

      setLinkEdit

      -
      public void setLinkEdit(boolean b)
      +

      setAssignment

      +
      public void setAssignment(boolean b)
    - - - -
      -
    • -

      isLinkEdit

      -
      public boolean isLinkEdit()
      -
    • -
    - - - -
      -
    • -

      setAssignmentId

      -
      public void setAssignmentId(java.lang.String id)
      -
    • -
    - - - -
      -
    • -

      getAssignmentId

      -
      public java.lang.String getAssignmentId()
      -
    • -
    - - - -
      -
    • -

      getExpansionSource

      -
      public java.lang.String getExpansionSource()
      -
    • -
    - - - -
      -
    • -

      setExpansionSource

      -
      public void setExpansionSource(java.lang.String expansionSource)
      -
    • -
    - - - -
      -
    • -

      hashCode

      -
      public int hashCode()
      -
    • -
    - - - -
      -
    • -

      equals

      -
      public boolean equals(java.lang.Object o)
      -
    • -
    - - - -
      -
    • -

      collapse

      -
      public ProvisioningPlan.GenericRequest collapse(boolean includeNullSet)
      -
      Collapse an attribute or permission request if it has become - a noop. Set requests are not collapsed unless the - includeNullSet flag is set since those could represent - "set to null" and are still relevant.
      -
    • -
    - +
    • -

      okToSimplify

      -
      public boolean okToSimplify()
      -
      Arguments are added during role assignment removal - that don't mean we can't simplify and combine - multiple requests. During role assignment, there - are no arguments, so those plans are simplified regardless.
      -
      -
      Returns:
      -
      is it ok to simplify this if allowed.
      -
      +

      isSecret

      +
      public abstract boolean isSecret()
    diff --git a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.ObjectOperation.html b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.ObjectOperation.html index a31dfc587..c77f04645 100644 --- a/static/rule-java-docs/sailpoint/object/ProvisioningPlan.ObjectOperation.html +++ b/static/rule-java-docs/sailpoint/object/ProvisioningPlan.ObjectOperation.html @@ -2,9 +2,9 @@ - +ProvisioningPlan.ObjectOperation - + @@ -48,8 +48,8 @@ var activeTableTab = "activeTableTab"; @@ -392,8 +383,8 @@ not permitted.) @@ -362,8 +347,8 @@ not permitted.) @@ -92,20 +92,29 @@ var activeTableTab = "activeTableTab";
    sailpoint.object
    -

    Interface ProvisioningPlan

    +

    Class ProvisioningPlan

    +
      +
    • java.lang.Object
    • +
    • +
        +
      • AbstractXmlObject
      • +
      • +
          +
        • sailpoint.object.ProvisioningPlan
        • +
        +
      • +
      +
    • +
    • -
      -
      All Superinterfaces:
      -
      java.io.Serializable
      -


      -
      public interface ProvisioningPlan
      -extends java.io.Serializable
      +
      public class ProvisioningPlan
      +extends AbstractXmlObject
    @@ -122,25 +131,23 @@ extends java.io.Serializable
    - + - + - + - + + + + +
    All Methods Instance Methods Concrete Methods Deprecated Methods All Methods Instance Methods Concrete Methods 
    Modifier and Type Method and Description fromMap(java.util.Map map) 
    java.lang.StringgetDisplayValueXml() -
    Deprecated.  -
    use #getDisplayValue()
    -
    -
    java.lang.ObjectgetValue(SailPointContext ctx) 
    java.lang.StringgetNameXml() -
    Deprecated.  -
    use #getName()
    -
    -
    sailpoint.object.ProvisioningPlan.GenericRequestinstantiate() 
    java.lang.ObjectgetValue(SailPointContext ctx) -
    Returns attribute value.
    -
    booleanisSecret() 
    java.lang.StringgetValueXmlAttribute() -
    Deprecated.  -
    use #getValue()
    -
    -
    java.lang.ObjectgetValueXmlElement() -
    Deprecated.  -
    use #getValue()
    -
    -
    java.util.Map toMap() 
    Method and Description
    voidaddValues(java.lang.Object something, - boolean nocase) -
    Utility to add values to a multi-valued attribute.
    -
    ProvisioningPlan.GenericRequestclone() 
    ProvisioningPlan.GenericRequestclone() -
    Utility to clone a request from another.
    -
    voidclone(ProvisioningPlan.GenericRequest src) 
    voidclone(ProvisioningPlan.GenericRequest src) -
    Copy the contents of one request to another.
    -
    ProvisioningPlan.GenericRequestcollapse(boolean includeNullSet) -
    Collapse an attribute or permission request if it has become - a noop.
    -
    booleanequals(java.lang.Object o) 
    java.lang.Object get(java.lang.String name) 
    java.util.DategetAddDate() 
    <any>
    Attributes<java.lang.String,java.lang.Object> getArgs() 
    <any>
    Attributes<java.lang.String,java.lang.Object> getArguments() 
    java.lang.StringgetAssignmentId() 
    booleangetBoolean(java.lang.String name) 
    java.lang.String getComments() 
    java.lang.String getDisplayValue() 
    java.lang.StringgetExpansionSource() 
    java.lang.String getName() 
    ProvisioningPlan.Operation getOp() 
    ProvisioningPlan.OperationgetOperation() -
    Backward compatibility with the old property name - The standard property is now just "op" for consistency with - ObjectRequest.
    -
    getOperation() 
    java.util.DategetRemoveDate() 
    ProvisioningResult getResult() 
    ScriptgetScript() 
    java.lang.StringgetString(java.lang.String name) 
    java.lang.StringgetTrackingId() 
    java.lang.StringgetUnmappedName() 
    java.lang.Object getValue() 
    booleanhasArguments() -
    Used to skip the simplification process since it is unclear - how to combine requests that have different arguments.
    -
    inthashCode() 
    abstract ProvisioningPlan.GenericRequest instantiate() 
    booleanisLinkEdit() 
    abstract booleanisSecret() 
    booleanokToSimplify() -
    Arguments are added during role assignment removal - that don't mean we can't simplify and combine - multiple requests.
    -
    void put(java.lang.String name, java.lang.Object value) 
    java.lang.Objectremove(java.lang.String name) 
    voidremoveValues(java.lang.Object something, - boolean nocase) -
    Utility to remove values from a multi-valued attribute.
    -
    setArgs(Attributes<java.lang.String,java.lang.Object> atts) 
    voidretainValues(java.lang.Object something, - boolean nocase) -
    Utility to reatain only those values in a given list.
    -
    setArguments(Attributes<java.lang.String,java.lang.Object> atts) 
    voidsetAddDate(java.util.Date d) -
    Convenience accessor for the effective dates.
    -
    setAssignment(boolean b) 
    voidsetArgs(<any> atts) 
    voidsetArguments(<any> atts) -
    Attribute and permission requests can have arguments - that influence how they are provisioned.
    -
    voidsetAssignmentId(java.lang.String id) 
    void setComments(java.lang.String c) 
    voidsetDisplayValue(java.lang.String val) 
    voidsetExpansionSource(java.lang.String expansionSource) 
    voidsetLinkEdit(boolean b) 
    void setName(java.lang.String s) 
    void setOp(ProvisioningPlan.Operation op) 
    voidsetOperation(ProvisioningPlan.Operation op) -
    Backward compatibility with the old property name - The standard property is now just "op" for consistency with - ObjectRequest.
    -
    setOperation(ProvisioningPlan.Operation op) 
    voidsetRemoveDate(java.util.Date d) 
    voidsetResult(ProvisioningResult r) 
    voidsetScript(Script s) 
    voidsetTrackingId(java.lang.String id) 
    voidsetUnmappedName(java.lang.String s) 
    void setValue(java.lang.Object o) 
    Nested Classes 
    Modifier and TypeInterface and DescriptionClass and Description
    static class ProvisioningPlan.AccountRequest -
    Represents a request for one application account.
    -
    ProvisioningPlan.AccountRequest 
    static class ProvisioningPlan.AttributeRequest -
    Represents an operation on a single account attribute.
    -
    ProvisioningPlan.AttributeRequest 
    static class ProvisioningPlan.Operation -
    Operation codes for attributes and permissions.
    -
    ProvisioningPlan.ObjectOperation 
    static class ProvisioningPlan.Operation 
    @@ -159,189 +166,11 @@ extends java.io.Serializable
    static java.lang.StringACCOUNT_GROUP_APPLICATION APP_IIQ 
    static java.lang.StringACCOUNT_GROUP_DESCRIPTION 
    static java.lang.StringACCOUNT_GROUP_NAME 
    static java.lang.StringACCOUNT_GROUP_NATIVE_IDENTITY 
    static java.lang.StringACCOUNT_GROUP_OWNER 
    static java.lang.StringACCOUNT_GROUP_REFERENCE_ATTRIBUTE 
    static java.lang.StringACCOUNT_GROUP_SCOPE 
    static java.lang.StringAPP_IDM -
    The name of a special AccountRequest application that represents - the aggregate identity managed by a provisioning system.
    -
    static java.lang.StringAPP_IIQ -
    The name of a special AccountRequest application that represents - the IdentityIQ identity.
    -
    static java.lang.StringARG_ADD_DATE -
    The date at which an add or set request is to occur, - the "sunrise" date.
    -
    static java.lang.StringARG_ALLOW_SIMPLIFICATION 
    static java.lang.StringARG_ASSIGNMENT -
    When added to the arguments and set to true, will - indicate that the AttributeAssignment stored on the identity, - which makes it sticky, should also be created or removed.
    -
    static java.lang.StringARG_ASSIGNMENT_NOTE -
    The role assignment note coming in with the attribute request.
    -
    static java.lang.StringARG_CHECK_POLICY -
    When used with ATT_PASSWORD, requests that policy checking - be performed before setting.
    -
    static java.lang.StringARG_COMMENTS -
    The request comments coming in with the request.
    -
    static java.lang.StringARG_DESTINATION_IDENTITY -
    Argument for "links" request.
    -
    static java.lang.StringARG_FORCE_NEW_ACCOUNT -
    When logically true, this AccountRequest argument indicates that the - user specifically requested to create an account.
    -
    static java.lang.StringARG_LINK_EDIT -
    When this is logically true, it means that the link attribute - was manually edited.
    -
    static java.lang.StringARG_LOCK_TIMEOUT -
    Name of a plan argument that contains the timeout to be used - when acquiring locks on the target Identity.
    -
    static java.lang.StringARG_PERMITTED_BY -
    Holds the name of the role which permits the role being requested - in a permitted role request.
    -
    static java.lang.StringARG_PREVIOUS_VALUE -
    Optional AttributeRequest argument used to convey - the previous values that were assigned.
    -
    static java.lang.StringARG_REMOVE_DATE -
    The date at which a Remove request is to occur, - the "sunset" date.
    -
    static java.lang.StringARG_REQUESTER -
    Name of a plan argument holding the name of the identity - that is considered to be the requester of the provisioning.
    -
    static java.lang.StringARG_REQUIRED 
    static java.lang.StringARG_SECRET -
    When true indicates that the AttributeRequest value is secret.
    -
    static java.lang.StringARG_SOURCE -
    Name of a plan argument that contains the "source" type.
    -
    static java.lang.StringARG_SOURCE_ID -
    Name of a plan argument that contains the database id of - an object associated with the source.
    -
    static java.lang.StringARG_SOURCE_IDENTITY -
    Argument for "links" request.
    -
    static java.lang.StringARG_SOURCE_NAME -
    Name of a plan argument that contains the database name of - an object associated with the source.
    -
    static java.lang.StringARG_TYPE 
    static java.lang.StringARG_TYPE_DATE 
    static java.lang.StringASSIGNMENT_ID_NEW -
    A reserved name that can be set in an AttributeRequest's assignmentId - to indicate that a new assignment is to be created.
    -
    static java.lang.ObjectATT_ASSIGNED_SCOPE 
    static java.lang.String
    static java.lang.StringATT_ATTRIBUTE_VALUE 
    static java.lang.StringATT_CURRENT_PASSWORD -
    Special attribute used in the arguments map of a password - AttributeRequest that holds the users current password.
    -
    static java.lang.StringATT_GENERATED -
    Used to notify email template
    -
    static java.lang.StringATT_IDM_ROLES -
    The name of the attribute in the APP_IDM account that - represents the assigned roles.
    -
    static java.lang.StringATT_IIQ_ACTIVITY_CONFIG -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the ActivityConfig.
    -
    static java.lang.StringATT_IIQ_ARCHIVES -
    A pseudo attribute representing the IdentityArchive list - which we display in the UI as "identity history".
    -
    static java.lang.StringATT_IIQ_ASSIGNED_ROLES -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the assigned role list.
    -
    static java.lang.StringATT_IIQ_AUTHORIZED_SCOPES -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the authorized scopes list.
    -
    static java.lang.StringATT_IIQ_CAPABILITIES -
    Attribute holding the capabilities list.
    -
    static java.lang.StringATT_IIQ_CAPABILITIES_NEW -
    Preferred camel case version of the capabilities attribute.
    -
    static java.lang.StringATT_IIQ_CONTROLLED_SCOPES -
    Attribute holding the controlled scopes.
    -
    static java.lang.StringATT_IIQ_CONTROLLED_SCOPES_NEW -
    Preferred camel case version of the authorizedScopes attribute.
    -
    static java.lang.StringATT_IIQ_CONTROLS_ASSIGNED_SCOPE -
    Attribute holding the flag indicating that the identity - also controls the assigned scope.
    -
    static java.lang.StringATT_IIQ_DETECTED_ROLES -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the detected role list.
    -
    static java.lang.StringATT_IIQ_EVENTS -
    A pseudo attribute representing Request objects associated - with this identity which the UI displays as "identity events".
    -
    static java.lang.StringATT_IIQ_LINKS -
    The name of special AttributeRequest within the IdentityIQ - application to move or delete links
    -
    static java.lang.String ATT_IIQ_PASSWORD -
    Deprecated.  - -
    -
    static java.lang.StringATT_IIQ_PROVISIONING_REQUESTS -
    An IdentityIQ pseudo attribute targeting the list of - ProvisioningRequests.
    -
    static java.lang.StringATT_IIQ_ROLE_CHILD -
    Request to remove a child role from a role in a role composition certification.
    -
    static java.lang.StringATT_IIQ_ROLE_GRANTED_CAPABILITY -
    Request to remove a capability grant from a role.
    -
    static java.lang.StringATT_IIQ_ROLE_GRANTED_SCOPE -
    Request to remove a scope grant from a role.
    -
    static java.lang.StringATT_IIQ_ROLE_PERMIT -
    Request to remove a permitted role from a role in a role composition certification.
    -
    static java.lang.StringATT_IIQ_ROLE_PROFILES -
    Request to remove a profile from a role in a role composition certification.
    -
    static java.lang.StringATT_IIQ_ROLE_REQUIREMENT -
    Request to remove a required role from a role in a role composition certification.
    -
    static java.lang.StringATT_IIQ_SCOPE -
    Attribute holding the assigned scope.
    -
    static java.lang.StringATT_IIQ_SNAPSHOTS -
    An IdentityIQ pseudo attribute targeting the list of IdentitySnapshots.
    -
    static java.lang.StringATT_IIQ_WORKGROUPS -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the workgroup list.
    +
    Deprecated.  
    static java.lang.StringATT_OBJECT_ID 
    static java.lang.StringATT_OBJECT_INSTANCE 
    static java.lang.StringATT_OBJECT_PERMISSIONS 
    static java.lang.StringATT_OBJECT_TYPE 
    static java.lang.StringATT_OBJECT_UUID 
    static java.lang.String ATT_OP 
    static java.lang.StringATT_PASSWORD -
    Special attribute name used in AttributeRequests to - set an Identity or account's password.
    -
    static java.lang.String ATT_PERMISSION_RIGHTS 
    static java.lang.StringATT_PLAN_ACCOUNTS 
    static java.lang.StringATT_PLAN_ARGUMENTS 
    static java.lang.StringATT_PLAN_IDENTITY 
    static java.lang.StringATT_PLAN_INTEGRATION_DATA 
    static java.lang.StringATT_PLAN_OBJECTS 
    static java.lang.StringATT_PLAN_PROFILE_ORINDAL 
    static java.lang.StringATT_PLAN_REQUESTERS 
    static java.lang.StringATT_PRE_EXPIRE -
    Special attribute used in the arguments map of a password - AttributeRequest that indicates that the new password should be - pre-expired (for example - the user has to change it after first login).
    -
    static java.lang.String ATT_REQUEST_ARGUMENTS 
    static java.lang.StringATT_REQUEST_RESULT IIQ_APPLICATION_NAME 
    + +
+ + @@ -1088,99 +384,13 @@ extends java.io.Serializable

Field Detail

- - - -
    -
  • -

    ARG_REQUESTER

    -
    static final java.lang.String ARG_REQUESTER
    -
    Name of a plan argument holding the name of the identity - that is considered to be the requester of the provisioning. - This is intended as an replacement for the _requesters property - that is easier to pass through the machinery in maps.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_SOURCE

    -
    static final java.lang.String ARG_SOURCE
    -
    Name of a plan argument that contains the "source" type. - The value should be one of the sailpoint.object.Source enumerations - but it is allowed to be a custom source.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_SOURCE_ID

    -
    static final java.lang.String ARG_SOURCE_ID
    -
    Name of a plan argument that contains the database id of - an object associated with the source. This is used only - for Certification and PolicyViolation sources.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_SOURCE_NAME

    -
    static final java.lang.String ARG_SOURCE_NAME
    -
    Name of a plan argument that contains the database name of - an object associated with the source. This is used only - for Certification and PolicyViolation sources.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_LOCK_TIMEOUT

    -
    static final java.lang.String ARG_LOCK_TIMEOUT
    -
    Name of a plan argument that contains the timeout to be used - when acquiring locks on the target Identity. Also used - when locking the source or destination identity when moving - links. This is intended for use in plans that are being - synchronously executed in a UI thread so you do not have to wait - the default 1 minute for a lock timeout.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
  • APP_IIQ

    -
    static final java.lang.String APP_IIQ
    -
    The name of a special AccountRequest application that represents - the IdentityIQ identity.
    +
    public static final java.lang.String APP_IIQ
    See Also:
    Constant Field Values
    @@ -1193,123 +403,13 @@ extends java.io.Serializable
    • IIQ_APPLICATION_NAME

      -
      static final java.lang.String IIQ_APPLICATION_NAME
      -
      This is the name of the application "IIQ" that goes out in email.
      +
      public static final java.lang.String IIQ_APPLICATION_NAME
      See Also:
      Constant Field Values
    - - - -
      -
    • -

      ATT_IIQ_ASSIGNED_ROLES

      -
      static final java.lang.String ATT_IIQ_ASSIGNED_ROLES
      -
      The name of a special AttributeRequest within the IdentityIQ - application to modify the assigned role list.
      -
      -
      See Also:
      -
      Constant Field Values
      -
      -
    • -
    - - - -
      -
    • -

      ATT_IIQ_DETECTED_ROLES

      -
      static final java.lang.String ATT_IIQ_DETECTED_ROLES
      -
      The name of a special AttributeRequest within the IdentityIQ - application to modify the detected role list.
      -
      -
      See Also:
      -
      Constant Field Values
      -
      -
    • -
    - - - -
      -
    • -

      ATT_IIQ_LINKS

      -
      static final java.lang.String ATT_IIQ_LINKS
      -
      The name of special AttributeRequest within the IdentityIQ - application to move or delete links
      -
      -
      See Also:
      -
      Constant Field Values
      -
      -
    • -
    - - - -
      -
    • -

      ATT_IIQ_WORKGROUPS

      -
      static final java.lang.String ATT_IIQ_WORKGROUPS
      -
      The name of a special AttributeRequest within the IdentityIQ - application to modify the workgroup list.
      -
      -
      See Also:
      -
      Constant Field Values
      -
      -
    • -
    - - - -
      -
    • -

      ATT_PASSWORD

      -
      static final java.lang.String ATT_PASSWORD
      -
      Special attribute name used in AttributeRequests to - set an Identity or account's password.
      -
    • -
    - - - -
      -
    • -

      ATT_CURRENT_PASSWORD

      -
      static final java.lang.String ATT_CURRENT_PASSWORD
      -
      Special attribute used in the arguments map of a password - AttributeRequest that holds the users current password. If not - specified, the password will be "reset" rather than "changed".
      -
    • -
    - - - -
      -
    • -

      ATT_PRE_EXPIRE

      -
      static final java.lang.String ATT_PRE_EXPIRE
      -
      Special attribute used in the arguments map of a password - AttributeRequest that indicates that the new password should be - pre-expired (for example - the user has to change it after first login).
      -
    • -
    - - - -
      -
    • -

      ATT_GENERATED

      -
      static final java.lang.String ATT_GENERATED
      -
      Used to notify email template
      -
      -
      See Also:
      -
      Constant Field Values
      -
      -
    • -
    @@ -1317,746 +417,21 @@ extends java.io.Serializable
  • ATT_IIQ_PASSWORD

    @Deprecated
    -static final java.lang.String ATT_IIQ_PASSWORD
    -
    Deprecated. use ATT_PASSWORD
    -
    Constant for the password attribute found in AttributeRequests - for IdentityIQ.
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_CAPABILITIES

    -
    static final java.lang.String ATT_IIQ_CAPABILITIES
    -
    Attribute holding the capabilities list. - Certification has one of these too.
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_CAPABILITIES_NEW

    -
    static final java.lang.String ATT_IIQ_CAPABILITIES_NEW
    -
    Preferred camel case version of the capabilities attribute. IIQEvaluator - will accept either ATT_IIQ_CAPABILITIES or this attribute, but the IdentityMap - will be using this name.
    +public static final java.lang.String ATT_IIQ_PASSWORD +
    Deprecated. 
    See Also:
    -
    Constant Field Values
    +
    Constant Field Values
- +
  • -

    ATT_IIQ_CONTROLLED_SCOPES

    -
    static final java.lang.String ATT_IIQ_CONTROLLED_SCOPES
    -
    Attribute holding the controlled scopes.
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_CONTROLLED_SCOPES_NEW

    -
    static final java.lang.String ATT_IIQ_CONTROLLED_SCOPES_NEW
    -
    Preferred camel case version of the authorizedScopes attribute. IIQEvaluator - will accept either ATT_IIQ_CONTROLLED_SCOPES or this attribute, but the - IdentityMap will be using this name.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_AUTHORIZED_SCOPES

    -
    static final java.lang.String ATT_IIQ_AUTHORIZED_SCOPES
    -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the authorized scopes list.
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_SCOPE

    -
    static final java.lang.String ATT_IIQ_SCOPE
    -
    Attribute holding the assigned scope.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_CONTROLS_ASSIGNED_SCOPE

    -
    static final java.lang.String ATT_IIQ_CONTROLS_ASSIGNED_SCOPE
    -
    Attribute holding the flag indicating that the identity - also controls the assigned scope.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ACTIVITY_CONFIG

    -
    static final java.lang.String ATT_IIQ_ACTIVITY_CONFIG
    -
    The name of a special AttributeRequest within the IdentityIQ - application to modify the ActivityConfig. The value - is normally a String or List of application ids. - If the value is Boolean true/false it sets the "enableAll" - flag.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ARCHIVES

    -
    static final java.lang.String ATT_IIQ_ARCHIVES
    -
    A pseudo attribute representing the IdentityArchive list - which we display in the UI as "identity history". - You can only make Remove requests for this list, adding - IdentityArchive objects is only done as a side effect - of an identity refresh you cannot make one from a provisioning plan. - The value must be a id or list of ids of IdentityArchive objects.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_SNAPSHOTS

    -
    static final java.lang.String ATT_IIQ_SNAPSHOTS
    -
    An IdentityIQ pseudo attribute targeting the list of IdentitySnapshots.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_EVENTS

    -
    static final java.lang.String ATT_IIQ_EVENTS
    -
    A pseudo attribute representing Request objects associated - with this identity which the UI displays as "identity events". - You can only make Remove requests for this list, adding - Request objects is only done as a side effect of other things - like role sunrise/sunset. You cannot make one from a plan. - The value must be a id or list of ids of Request objects.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_PROVISIONING_REQUESTS

    -
    static final java.lang.String ATT_IIQ_PROVISIONING_REQUESTS
    -
    An IdentityIQ pseudo attribute targeting the list of - ProvisioningRequests.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    APP_IDM

    -
    static final java.lang.String APP_IDM
    -
    The name of a special AccountRequest application that represents - the aggregate identity managed by a provisioning system. - This account may have additional attributes not represented - in resource accounts, notably a list of provisioning system - role assignments.
    -
  • -
- - - -
    -
  • -

    ATT_IDM_ROLES

    -
    static final java.lang.String ATT_IDM_ROLES
    -
    The name of the attribute in the APP_IDM account that - represents the assigned roles. The value must - be a List.
    -
  • -
- - - -
    -
  • -

    ARG_FORCE_NEW_ACCOUNT

    -
    static final java.lang.String ARG_FORCE_NEW_ACCOUNT
    -
    When logically true, this AccountRequest argument indicates that the - user specifically requested to create an account.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_ADD_DATE

    -
    static final java.lang.String ARG_ADD_DATE
    -
    The date at which an add or set request is to occur, - the "sunrise" date.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_REMOVE_DATE

    -
    static final java.lang.String ARG_REMOVE_DATE
    -
    The date at which a Remove request is to occur, - the "sunset" date. - This can be combined with addDate in a Set or Add request which - is why it needs a different name.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_COMMENTS

    -
    static final java.lang.String ARG_COMMENTS
    -
    The request comments coming in with the request. Need to be shown - on the approval.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_ASSIGNMENT_NOTE

    -
    static final java.lang.String ARG_ASSIGNMENT_NOTE
    -
    The role assignment note coming in with the attribute request.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_LINK_EDIT

    -
    static final java.lang.String ARG_LINK_EDIT
    -
    When this is logically true, it means that the link attribute - was manually edited. It should be stored in the link similar - to the "optimistic provisioning" option, but it should NOT be - sent to a provisioning system.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_CHECK_POLICY

    -
    static final java.lang.String ARG_CHECK_POLICY
    -
    When used with ATT_PASSWORD, requests that policy checking - be performed before setting.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_ASSIGNMENT

    -
    static final java.lang.String ARG_ASSIGNMENT
    -
    When added to the arguments and set to true, will - indicate that the AttributeAssignment stored on the identity, - which makes it sticky, should also be created or removed.
    -
    -
    See Also:
    -
    AttributeAssignment, -Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_SECRET

    -
    static final java.lang.String ARG_SECRET
    -
    When true indicates that the AttributeRequest value is secret.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_PERMITTED_BY

    -
    static final java.lang.String ARG_PERMITTED_BY
    -
    Holds the name of the role which permits the role being requested - in a permitted role request.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_PROFILES

    -
    static final java.lang.String ATT_IIQ_ROLE_PROFILES
    -
    Request to remove a profile from a role in a role composition certification.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_CHILD

    -
    static final java.lang.String ATT_IIQ_ROLE_CHILD
    -
    Request to remove a child role from a role in a role composition certification.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_REQUIREMENT

    -
    static final java.lang.String ATT_IIQ_ROLE_REQUIREMENT
    -
    Request to remove a required role from a role in a role composition certification.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_PERMIT

    -
    static final java.lang.String ATT_IIQ_ROLE_PERMIT
    -
    Request to remove a permitted role from a role in a role composition certification.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_GRANTED_SCOPE

    -
    static final java.lang.String ATT_IIQ_ROLE_GRANTED_SCOPE
    -
    Request to remove a scope grant from a role.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_IIQ_ROLE_GRANTED_CAPABILITY

    -
    static final java.lang.String ATT_IIQ_ROLE_GRANTED_CAPABILITY
    -
    Request to remove a capability grant from a role.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_PREVIOUS_VALUE

    -
    static final java.lang.String ARG_PREVIOUS_VALUE
    -
    Optional AttributeRequest argument used to convey - the previous values that were assigned.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - - - - - - - - - -
    -
  • -

    ARG_TYPE_DATE

    -
    static final java.lang.String ARG_TYPE_DATE
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_ALLOW_SIMPLIFICATION

    -
    static final java.lang.String ARG_ALLOW_SIMPLIFICATION
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_DESTINATION_IDENTITY

    -
    static final java.lang.String ARG_DESTINATION_IDENTITY
    -
    Argument for "links" request. To which identity the link - should be moved to.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ARG_SOURCE_IDENTITY

    -
    static final java.lang.String ARG_SOURCE_IDENTITY
    -
    Argument for "links" request. From which identity the link - should be moved.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    OBJECT_TYPE_MANAGED_ATTRIBUTE

    -
    static final java.lang.String OBJECT_TYPE_MANAGED_ATTRIBUTE
    -
    A type name used in ObjectRequest to indicate that the request - will create or update an IdentityIQ ManagedAttribute object but will - not provisioning anything through a Connector. This is necessary - to distinguish between ObjectRequests of type "group" that - will provision groups, and ORs for other managed attributes.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    OBJECT_TYPE_GROUP

    -
    static final java.lang.String OBJECT_TYPE_GROUP
    -
    A type name used in ObjectRequest to indicate that the request - will create or update a group. Use of this constant is not required, - any Schema name in the target Application will do, but this - is common and consistent with OBJECT_type_MANAGED_ATTRIBUTE.
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_NAME

    -
    static final java.lang.String ACCOUNT_GROUP_NAME
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_DESCRIPTION

    -
    static final java.lang.String ACCOUNT_GROUP_DESCRIPTION
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_OWNER

    -
    static final java.lang.String ACCOUNT_GROUP_OWNER
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_SCOPE

    -
    static final java.lang.String ACCOUNT_GROUP_SCOPE
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_APPLICATION

    -
    static final java.lang.String ACCOUNT_GROUP_APPLICATION
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_NATIVE_IDENTITY

    -
    static final java.lang.String ACCOUNT_GROUP_NATIVE_IDENTITY
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ACCOUNT_GROUP_REFERENCE_ATTRIBUTE

    -
    static final java.lang.String ACCOUNT_GROUP_REFERENCE_ATTRIBUTE
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_IDENTITY

    -
    static final java.lang.String ATT_PLAN_IDENTITY
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_ACCOUNTS

    -
    static final java.lang.String ATT_PLAN_ACCOUNTS
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_OBJECTS

    -
    static final java.lang.String ATT_PLAN_OBJECTS
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_REQUESTERS

    -
    static final java.lang.String ATT_PLAN_REQUESTERS
    -
    -
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_ARGUMENTS

    -
    static final java.lang.String ATT_PLAN_ARGUMENTS
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_INTEGRATION_DATA

    -
    static final java.lang.String ATT_PLAN_INTEGRATION_DATA
    -
  • -
- - - -
    -
  • -

    ATT_PLAN_PROFILE_ORINDAL

    -
    static final java.lang.String ATT_PLAN_PROFILE_ORINDAL
    -
    -
    See Also:
    -
    Constant Field Values
    -
    +

    ATT_ASSIGNED_SCOPE

    +
    public static java.lang.Object ATT_ASSIGNED_SCOPE
@@ -2065,7 +440,11 @@ static final java.lang.String ATT_IIQ_PASSWORD @@ -2074,50 +453,10 @@ static final java.lang.String ATT_IIQ_PASSWORD
  • ATT_OBJECT_APPLICATION

    -
    static final java.lang.String ATT_OBJECT_APPLICATION
    -
  • -
-
- - -
    -
  • -

    ATT_OBJECT_INSTANCE

    -
    static final java.lang.String ATT_OBJECT_INSTANCE
    -
  • -
- - - -
    -
  • -

    ATT_OBJECT_TYPE

    -
    static final java.lang.String ATT_OBJECT_TYPE
    +
    public static final java.lang.String ATT_OBJECT_APPLICATION
    See Also:
    -
    Constant Field Values
    -
    -
  • -
- - - -
    -
  • -

    ATT_OBJECT_ID

    -
    static final java.lang.String ATT_OBJECT_ID
    -
  • -
- - - - @@ -2127,16 +466,11 @@ static final java.lang.String ATT_IIQ_PASSWORD
  • ATT_OBJECT_ATTRIBUTES

    -
    static final java.lang.String ATT_OBJECT_ATTRIBUTES
    -
  • -
- - - -
    -
  • -

    ATT_OBJECT_PERMISSIONS

    -
    static final java.lang.String ATT_OBJECT_PERMISSIONS
    +
    public static final java.lang.String ATT_OBJECT_ATTRIBUTES
    +
    +
    See Also:
    +
    Constant Field Values
    +
@@ -2145,7 +479,11 @@ static final java.lang.String ATT_IIQ_PASSWORD @@ -2154,16 +492,11 @@ static final java.lang.String ATT_IIQ_PASSWORD
  • ATT_ATTRIBUTE_NAME

    -
    static final java.lang.String ATT_ATTRIBUTE_NAME
    -
  • -
-
- - -
    -
  • -

    ATT_ATTRIBUTE_VALUE

    -
    static final java.lang.String ATT_ATTRIBUTE_VALUE
    +
    public static final java.lang.String ATT_ATTRIBUTE_NAME
    +
    +
    See Also:
    +
    Constant Field Values
    +
@@ -2172,7 +505,11 @@ static final java.lang.String ATT_IIQ_PASSWORD @@ -2181,51 +518,41 @@ static final java.lang.String ATT_IIQ_PASSWORD -
    +
    • ATT_REQUEST_ARGUMENTS

      -
      static final java.lang.String ATT_REQUEST_ARGUMENTS
      -
    • -
    - - - -
      -
    • -

      ATT_REQUEST_RESULT

      -
      static final java.lang.String ATT_REQUEST_RESULT
      -
    • -
    - - - -
      -
    • -

      ASSIGNMENT_ID_NEW

      -
      static final java.lang.String ASSIGNMENT_ID_NEW
      -
      A reserved name that can be set in an AttributeRequest's assignmentId - to indicate that a new assignment is to be created. This is an alternative - to having the application generate a uuid.
      +
      public static final java.lang.String ATT_REQUEST_ARGUMENTS
      See Also:
      -
      Constant Field Values
      +
      Constant Field Values
    - + +
+ + + + @@ -274,15 +224,7 @@ extends java.io.Serializable
  • STATUS_QUEUED

    -
    static final java.lang.String STATUS_QUEUED
    -
    Indicates that the request was accepted and passed validation, - but it was given to another system and we do not know - when it will be committed. If possible the connector - should also set a request id for tracking. -

    - This is the default status, if no result object is returned or - if the result object is missing a status, it can be assumed - to have been queued.

    +
    public static final java.lang.String STATUS_QUEUED
    See Also:
    Constant Field Values
    @@ -295,11 +237,7 @@ extends java.io.Serializable
    • STATUS_COMMITTED

      -
      static final java.lang.String STATUS_COMMITTED
      -
      Indicates that the request was fully processed and the changes - are known to have been made. The plan evaluator can use this - to immediately update the identity to reflect the changes rather - than waiting for the next aggregation.
      +
      public static final java.lang.String STATUS_COMMITTED
      See Also:
      Constant Field Values
      @@ -312,10 +250,7 @@ extends java.io.Serializable
      • STATUS_FAILED

        -
        static final java.lang.String STATUS_FAILED
        -
        Indicates that the request was not processed due to a - fatal error. The connector should save one or more - messages on the error list.
        +
        public static final java.lang.String STATUS_FAILED
        See Also:
        Constant Field Values
        @@ -328,11 +263,7 @@ extends java.io.Serializable
        • STATUS_RETRY

          -
          static final java.lang.String STATUS_RETRY
          -
          Indicates that the request was not processed due to a - non fatal error and that it should be retried at a later - time. The connector may also set the retryInterval property - to indicate the preferred wait time.
          +
          public static final java.lang.String STATUS_RETRY
          See Also:
          Constant Field Values
          @@ -341,6 +272,23 @@ extends java.io.Serializable
      + +
        +
      • + + +

        Constructor Detail

        + + + +
          +
        • +

          ProvisioningResult

          +
          public ProvisioningResult()
          +
        • +
        +
      • +
      • @@ -353,7 +301,16 @@ extends java.io.Serializable
        • getTargetIntegration

          -
          java.lang.String getTargetIntegration()
          +
          public java.lang.String getTargetIntegration()
          +
        • +
        +
        + + +
          +
        • +

          setTargetIntegration

          +
          public void setTargetIntegration(java.lang.String s)
        @@ -362,178 +319,25 @@ extends java.io.Serializable
        • getStatus

          -
          java.lang.String getStatus()
          +
          public java.lang.String getStatus()
        -
        +
        • setStatus

          -
          java.lang.String setStatus()
          -
        • -
        - - - -
          -
        • -

          getRequestID

          -
          java.lang.String getRequestID()
          -
        • -
        - - - -
          -
        • -

          getWarnings

          -
          java.util.List<Message> getWarnings()
          -
        • -
        - - - -
          -
        • -

          getErrors

          -
          java.util.List<Message> getErrors()
          -
        • -
        - - - -
          -
        • -

          getRetryInterval

          -
          int getRetryInterval()
          +
          public void setStatus(java.lang.String s)
        -
          -
        • -

          getObject

          -
          ResourceObject getObject()
          -
        • -
        - - - -
          -
        • -

          addError

          -
          void addError(Message m)
          -
        • -
        - - - -
          -
        • -

          addWarning

          -
          void addWarning(java.util.List<Message> m)
          -
        • -
        - - - -
          -
        • -

          addWarning

          -
          void addWarning(Message m)
          -
        • -
        - - - -
          -
        • -

          isCommitted

          -
          boolean isCommitted()
          -
        • -
        - - - -
          -
        • -

          isQueued

          -
          boolean isQueued()
          -
        • -
        - - - -
          -
        • -

          isFailed

          -
          boolean isFailed()
          -
        • -
        - - - -
          -
        • -

          isRetry

          -
          boolean isRetry()
          -
        • -
        - - - -
          -
        • -

          isSubmitted

          -
          boolean isSubmitted()
          -
        • -
        - - - -
          -
        • -

          isFailure

          -
          boolean isFailure()
          -
        • -
        - - - -
          -
        • -

          hasMessages

          -
          boolean hasMessages()
          -
        • -
        - - - -
          -
        • -

          toMap

          -
          java.util.Map<java.lang.String,java.lang.Object> toMap()
          -
        • -
        - - - -
          -
        • -

          fromMap

          -
          void fromMap(java.util.Map map)
          -
        • -
        - - -
        • -

          isQueuedWithId

          -
          boolean isQueuedWithId()
          +

          getObject

          +
          public ResourceObject getObject()
      • @@ -564,7 +368,7 @@ extends java.io.Serializable diff --git a/static/rule-java-docs/sailpoint/object/QueryOptions.Ordering.html b/static/rule-java-docs/sailpoint/object/QueryOptions.Ordering.html index f6e2e6260..e054fcfac 100644 --- a/static/rule-java-docs/sailpoint/object/QueryOptions.Ordering.html +++ b/static/rule-java-docs/sailpoint/object/QueryOptions.Ordering.html @@ -2,9 +2,9 @@ - + QueryOptions.Ordering - + @@ -18,7 +18,7 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -48,8 +48,8 @@ var activeTableTab = "activeTableTab";
      - - - -
        -
      • -

        setIgnoreCase

        -
        public void setIgnoreCase(boolean ignoreCase)
        -
      • -
      -
        +
        • toString

          public java.lang.String toString()
          @@ -309,32 +288,6 @@ extends java.lang.Object
    - - - -
      -
    • -

      equals

      -
      public boolean equals(java.lang.Object o)
      -
      -
      Overrides:
      -
      equals in class java.lang.Object
      -
      -
    • -
    - - - -
      -
    • -

      hashCode

      -
      public int hashCode()
      -
      -
      Overrides:
      -
      hashCode in class java.lang.Object
      -
      -
    • -
@@ -362,8 +315,8 @@ extends java.lang.Object @@ -92,20 +92,24 @@ var activeTableTab = "activeTableTab";
sailpoint.object
-

Interface QueryOptions

+

Class QueryOptions

+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.object.QueryOptions
    • +
    +
  • +
  • -
    -
    All Superinterfaces:
    -
    java.io.Serializable
    -


    -
    public interface QueryOptions
    -extends java.io.Serializable
    +
    public class QueryOptions
    +extends java.lang.Object
@@ -122,7 +126,7 @@ extends java.io.Serializable Nested Classes  Modifier and Type -Interface and Description +Class and Description static class  @@ -131,6 +135,23 @@ extends java.io.Serializable + +
    +
  • + + +

    Constructor Summary

    + + + + + + + + +
    Constructors 
    Constructor and Description
    QueryOptions() 
    +
  • +
@@ -350,165 +225,36 @@ extends java.io.Serializable
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        QueryOptions

        +
        public QueryOptions()
        +
      • +
      +
    • +
    • Method Detail

      - +
      • -

        getResultLimit

        -
        int getResultLimit()
        -
        Return a filter for default owner filtering. This filter - includes all direct ownership AND ownership held by - any workgroups assigned to the Identity.
        -
      • -
      - - - -
        -
      • -

        setResultLimit

        -
        QueryOptions setResultLimit(int limit)
        -
      • -
      - - - - - - - -
        -
      • -

        getFirstRow

        -
        int getFirstRow()
        -
      • -
      - - - -
        -
      • -

        setOrderBy

        -
        QueryOptions setOrderBy(java.lang.String name)
        -
      • -
      - - - -
        -
      • -

        setOrderAscending

        -
        QueryOptions setOrderAscending(boolean b)
        -
      • -
      - - - -
        -
      • -

        addOrdering

        -
        QueryOptions addOrdering(java.lang.String name,
        -                         boolean ascending)
        -
      • -
      - - - -
        -
      • -

        addOrdering

        -
        QueryOptions addOrdering(java.lang.String name,
        -                         boolean ascending,
        -                         boolean ignoreCase)
        -
      • -
      - - - -
        -
      • -

        addOrdering

        -
        QueryOptions addOrdering(java.lang.Integer index,
        -                         java.lang.String name,
        -                         boolean ascending)
        -
      • -
      - - - -
        -
      • -

        addOrdering

        -
        QueryOptions addOrdering(java.lang.Integer index,
        -                         java.lang.String name,
        -                         boolean ascending,
        -                         boolean ignoreCase)
        -
      • -
      - - - -
        -
      • -

        getOrderingIndex

        -
        int getOrderingIndex(java.lang.String name)
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        getGroupBys

        -
        java.util.List<java.lang.String> getGroupBys()
        -
      • -
      - - - -
        -
      • -

        setGroupBys

        -
        void setGroupBys(java.util.List<java.lang.String> groupBys)
        -
      • -
      - - - -
        -
      • -

        addGroupBy

        -
        void addGroupBy(java.lang.String property)
        +

        addFilter

        +
        public QueryOptions addFilter(Filter f)
      @@ -517,61 +263,25 @@ extends java.io.Serializable - + - +
      • -

        getFilters

        -
        java.util.List<Filter> getFilters()
        -
      • -
      - - - -
        -
      • -

        setFilters

        -
        void setFilters(java.util.List<Filter> filters)
        -
      • -
      - - - -
        -
      • -

        setRestrictions

        -
        void setRestrictions(java.util.List<Filter> filters)
        -
      • -
      - - - -
        -
      • -

        getRestrictions

        -
        java.util.List<Filter> getRestrictions()
        -
      • -
      - - - -
        -
      • -

        isIdentitySearch

        -
        java.lang.String isIdentitySearch()
        +

        setOrderAscending

        +
        public QueryOptions setOrderAscending(boolean b)
      @@ -580,228 +290,68 @@ extends java.io.Serializable
      • setDistinct

        -
        void setDistinct(boolean b)
        +
        public void setDistinct(boolean b)
      -
      +
      • -

        isDistinct

        -
        boolean isDistinct()
        +

        setResultLimit

        +
        public QueryOptions setResultLimit(int limit)
      - +
      • -

        setIgnoreCase

        -
        void setIgnoreCase(boolean b)
        +

        getFirstRow

        +
        public int getFirstRow()
      - +
      • -

        isIgnoreCase

        -
        boolean isIgnoreCase()
        +

        addOrdering

        +
        public QueryOptions addOrdering(java.lang.String name,
        +                                boolean ascending)
      - +
      • -

        getScopeResults

        -
        java.lang.Boolean getScopeResults()
        +

        getFilters

        +
        public java.util.List<Filter> getFilters()
      - +
      • -

        setScopeResults

        -
        void setScopeResults(java.lang.Boolean scopeResults)
        -
      • -
      - - - -
        -
      • -

        getUnscopedGloballyAccessible

        -
        java.lang.Boolean getUnscopedGloballyAccessible()
        -
      • -
      - - - -
        -
      • -

        setUnscopedGloballyAccessible

        -
        void setUnscopedGloballyAccessible(java.lang.Boolean b)
        -
      • -
      - - - -
        -
      • -

        extendScope

        -
        void extendScope(Filter... filters)
        -
      • -
      - - - -
        -
      • -

        addOwnerScope

        -
        void addOwnerScope(Identity user)
        -
      • -
      - - - -
        -
      • -

        getScopeExtensions

        -
        java.util.List<Filter> getScopeExtensions()
        -
      • -
      - - - -
        -
      • -

        setTransactionLock

        -
        void setTransactionLock(boolean b)
        -
      • -
      - - - -
        -
      • -

        isTransactionLock

        -
        boolean isTransactionLock()
        -
      • -
      - - - -
        -
      • -

        setQuery

        -
        void setQuery(java.lang.String q)
        -
      • -
      - - - -
        -
      • -

        getQuery

        -
        java.lang.String getQuery()
        -
      • -
      - - - -
        -
      • -

        setCacheResults

        -
        void setCacheResults(boolean cache)
        -
      • -
      - - - -
        -
      • -

        isCacheResults

        -
        boolean isCacheResults()
        -
      • -
      - - - -
        -
      • -

        setFlushBeforeQuery

        -
        void setFlushBeforeQuery(boolean flush)
        -
      • -
      - - - -
        -
      • -

        isFlushBeforeQuery

        -
        boolean isFlushBeforeQuery()
        -
      • -
      - - - -
        -
      • -

        equals

        -
        boolean equals(java.lang.Object o)
        -
        -
        Overrides:
        -
        equals in class java.lang.Object
        -
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class java.lang.Object
        -
        +

        setFilters

        +
        public void setFilters(java.util.List<Filter> filters)
      -
        +
        • toString

          -
          java.lang.String toString()
          +
          public java.lang.String toString()
          Overrides:
          toString in class java.lang.Object
        - - - -
          -
        • -

          isDirtyRead

          -
          boolean isDirtyRead()
          -
        • -
        - - - -
          -
        • -

          setDirtyRead

          -
          void setDirtyRead(boolean dirtyRead)
          -
        • -
    • @@ -829,7 +379,7 @@ extends java.io.Serializable
diff --git a/static/rule-java-docs/sailpoint/object/ResourceObject.html b/static/rule-java-docs/sailpoint/object/ResourceObject.html new file mode 100644 index 000000000..ae08df1fd --- /dev/null +++ b/static/rule-java-docs/sailpoint/object/ResourceObject.html @@ -0,0 +1,317 @@ + + + + + +ResourceObject + + + + + + + + + + + + +
+
sailpoint.object
+

Class ResourceObject

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.object.ResourceObject
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ResourceObject
    +extends java.lang.Object
    +
    Read-only representation of account data that has been aggregated. Use this as a basis to determine correlation linkages with a specific identity.
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ResourceObject() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetIdentity() 
      java.lang.StringgetString(java.lang.String name) +
      Get the attribute value provided as a string
      +
      java.lang.StringgetStringAttribute(java.lang.String name) +
      Get the attribute value provided as a string
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ResourceObject

        +
        public ResourceObject()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getIdentity

        +
        public java.lang.String getIdentity()
        +
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        getStringAttribute

        +
        public java.lang.String getStringAttribute(java.lang.String name)
        +
        Get the attribute value provided as a string
        +
        +
        Parameters:
        +
        name - The name of the attribute to retrieve
        +
        Returns:
        +
        the string value of the given attribute name
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String name)
        +
        Get the attribute value provided as a string
        +
        +
        Parameters:
        +
        name - The name of the attribute
        +
        Returns:
        +
        the string value of the given attribute name
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/static/rule-java-docs/sailpoint/object/RoleAssignment.html b/static/rule-java-docs/sailpoint/object/RoleAssignment.html new file mode 100644 index 000000000..0ec0b3eb3 --- /dev/null +++ b/static/rule-java-docs/sailpoint/object/RoleAssignment.html @@ -0,0 +1,282 @@ + + + + + +RoleAssignment + + + + + + + + + + + + +
+
sailpoint.object
+

Class RoleAssignment

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.object.RoleAssignment
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class RoleAssignment
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      RoleAssignment() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetRoleId() 
      java.lang.StringgetRoleName() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RoleAssignment

        +
        public RoleAssignment()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getRoleId

        +
        public java.lang.String getRoleId()
        +
      • +
      + + + +
        +
      • +

        getRoleName

        +
        public java.lang.String getRoleName()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/static/rule-java-docs/sailpoint/object/Schema.html b/static/rule-java-docs/sailpoint/object/Schema.html new file mode 100644 index 000000000..c39041e05 --- /dev/null +++ b/static/rule-java-docs/sailpoint/object/Schema.html @@ -0,0 +1,347 @@ + + + + + +Schema + + + + + + + + + + + + +
+
sailpoint.object
+

Class Schema

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.object.Schema
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Schema
    +extends java.lang.Object
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Schema

        +
        public Schema()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getObjectType

        +
        public java.lang.String getObjectType()
        +
      • +
      + + + +
        +
      • +

        getNativeObjectType

        +
        public java.lang.String getNativeObjectType()
        +
      • +
      + + + + + + + +
        +
      • +

        getDisplayAttribute

        +
        public java.lang.String getDisplayAttribute()
        +
      • +
      + + + +
        +
      • +

        getIdentityAttribute

        +
        public java.lang.String getIdentityAttribute()
        +
      • +
      + + + +
        +
      • +

        getAttributeDefinition

        +
        public AttributeDefinition getAttributeDefinition(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getEntitlementAttributeNames

        +
        public java.util.List<java.lang.String> getEntitlementAttributeNames()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/static/rule-java-docs/sailpoint/object/package-frame.html b/static/rule-java-docs/sailpoint/object/package-frame.html index f0b82e9b4..d6dcab1b9 100644 --- a/static/rule-java-docs/sailpoint/object/package-frame.html +++ b/static/rule-java-docs/sailpoint/object/package-frame.html @@ -2,9 +2,9 @@ - + sailpoint.object - + @@ -13,21 +13,45 @@ diff --git a/static/rule-java-docs/sailpoint/object/package-summary.html b/static/rule-java-docs/sailpoint/object/package-summary.html index 1719f9483..e82c3205c 100644 --- a/static/rule-java-docs/sailpoint/object/package-summary.html +++ b/static/rule-java-docs/sailpoint/object/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.object - + @@ -82,19 +82,7 @@ -Application -  - - -Field -  - - -ProvisioningPlan -  - - -ProvisioningResult +Filter.FilterVisitor   @@ -109,7 +97,55 @@ -Field.ApplicationDependency +Application +  + + +AttributeDefinition +  + + +Attributes<K,V> +  + + +BaseAttributeDefinition +  + + +Bundle +  + + +Entitlement +  + + +Field +  + + +Filter +  + + +Filter.BaseFilterVisitor +  + + +Filter.CompositeFilter +  + + +Filter.FilterCompiler +  + + +Filter.FilterCompiler.IdentitiferLookAhead +  + + +Filter.LeafFilter   @@ -117,17 +153,59 @@   -ProvisioningPlan.AccountRequest +IntegrationConfig -
Represents a request for one application account.
+
The target integration application object that references this before/after rule.
-ProvisioningPlan.AttributeRequest +Link -
Represents an operation on a single account attribute.
+
The Link class is a reference to a single account within an application (Source)
+ +ManagedAttribute +  + + +ProvisioningPlan +  + + +ProvisioningPlan.AccountRequest +  + + +ProvisioningPlan.AttributeRequest +  + + +ProvisioningResult +  + + +QueryOptions +  + + +QueryOptions.Ordering +  + + +ResourceObject + +
Read-only representation of account data that has been aggregated.
+ + + +RoleAssignment +  + + +Schema +  + @@ -140,16 +218,32 @@ -ProvisioningPlan.AccountRequest.Operation - -
Defines the operation to perform on the account.
- +Filter.BooleanOperation +  +Filter.LogicalOperation +  + + +Filter.MatchMode +  + + +ManagedAttribute.Type +  + + +ProvisioningPlan.AccountRequest.Operation +  + + +ProvisioningPlan.ObjectOperation +  + + ProvisioningPlan.Operation - -
Operation codes for attributes and permissions.
- +  diff --git a/static/rule-java-docs/sailpoint/object/package-tree.html b/static/rule-java-docs/sailpoint/object/package-tree.html index 8e0f008d8..85d7e47e6 100644 --- a/static/rule-java-docs/sailpoint/object/package-tree.html +++ b/static/rule-java-docs/sailpoint/object/package-tree.html @@ -2,9 +2,9 @@ - + sailpoint.object Class Hierarchy - + @@ -80,36 +80,68 @@

Interface Hierarchy

Enum Hierarchy

    @@ -117,8 +149,13 @@ diff --git a/static/rule-java-docs/sailpoint/rule/Account.html b/static/rule-java-docs/sailpoint/rule/Account.html index 2902cc30a..f5fd48ac0 100644 --- a/static/rule-java-docs/sailpoint/rule/Account.html +++ b/static/rule-java-docs/sailpoint/rule/Account.html @@ -2,9 +2,9 @@ - + Account - + @@ -18,8 +18,8 @@ catch(err) { } //--> -var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -75,13 +75,13 @@ var activeTableTab = "activeTableTab";
  • Summary: 
  • Nested | 
  • Field | 
  • -
  • Constr | 
  • +
  • Constr | 
  • Method
@@ -92,15 +92,24 @@ var activeTableTab = "activeTableTab";
sailpoint.rule
-

Interface Account

+

Class Account

+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.rule.Account
    • +
    +
  • +


  • -
    public interface Account
    +
    public class Account
    +extends java.lang.Object
    Definition of an Account interface available to Rule implementors.
@@ -108,6 +117,23 @@ var activeTableTab = "activeTableTab";
diff --git a/static/rule-java-docs/sailpoint/server/IdnRuleUtil.html b/static/rule-java-docs/sailpoint/server/IdnRuleUtil.html index 0b025bbad..4581d66f0 100644 --- a/static/rule-java-docs/sailpoint/server/IdnRuleUtil.html +++ b/static/rule-java-docs/sailpoint/server/IdnRuleUtil.html @@ -2,9 +2,9 @@ - + IdnRuleUtil - + @@ -18,8 +18,8 @@ catch(err) { } //--> -var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]}; +var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":9,"i34":9,"i35":9,"i36":9,"i37":10,"i38":9}; +var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -74,13 +74,13 @@ var activeTableTab = "activeTableTab"; @@ -92,18 +92,26 @@ var activeTableTab = "activeTableTab";
sailpoint.server
-

Interface IdnRuleUtil

+

Class IdnRuleUtil

+
    +
  • java.lang.Object
  • +
  • +
      +
    • sailpoint.server.IdnRuleUtil
    • +
    +
  • +


  • -
    public interface IdnRuleUtil
    -
    Utility class containing methods customers can use within a rules to perform common tasks. - sailpoint.server.IdnRuleUtil is available in rules as "idn" variable, e.g. "idn.countAccounts("someAppId")". - This utility class allows us to abstract out the use of SailPointContext in rules so that we can one day not pass a +
    public class IdnRuleUtil
    +extends java.lang.Object
    +
    Utility class containing methods customers can use within a rules to perform common tasks. This utility + class allows us to abstract out the use of SailPointContext in rules so that we can one day not pass a context to the rule at all.
@@ -111,6 +119,29 @@ var activeTableTab = "activeTableTab";
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringEQUALS_FILTER 
      static java.lang.StringSTARTS_WITH_FILTER 
      +
    • +
    • @@ -118,7 +149,7 @@ var activeTableTab = "activeTableTab";

      Method Summary

      - + @@ -138,6 +169,12 @@ var activeTableTab = "activeTableTab"; + + + + - + - + - + - - + + + + + + + + + + + + + + - + - - + - + - - + - + - - + - - + + - - + + - + + + + + + + + + + + + + - - + + - + + + + + - - + - - + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      static java.util.ListasList(java.lang.Object object) +
      Return a List with the given object.
      +
      int attrSearchCountAccounts(java.util.List<java.lang.String> sourceIds, java.lang.String attributeName, @@ -146,7 +183,7 @@ var activeTableTab = "activeTableTab";
      Count the accounts that match the searchable attribute and value.
      java.lang.String attrSearchGetIdentityName(java.util.List<java.lang.String> sourceIds, java.lang.String attributeName, @@ -155,13 +192,13 @@ var activeTableTab = "activeTableTab";
      Get the identity name for the account matching the specified criteria.
      int countAccounts(java.lang.String applicationName)
      Counts the number of accounts on an application.
      int countIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName, java.lang.String operation, @@ -169,8 +206,33 @@ var activeTableTab = "activeTableTab";
      Count and return the number of users that match the incoming attributeName, operation and value.
      java.util.List<Identity>
      protected QueryOptionscreateIdentityAttributeQueryOptions(java.lang.String attributeName, + java.lang.String operation, + java.lang.String value) +
      Create the QueryOptions for the given parameters.
      +
      static java.lang.StringdateToString(java.util.Date src, + java.lang.String format) +
      Format a Date value as a String, using the JVMs default + timezone.
      +
      static java.lang.StringdateToString(java.util.Date src, + java.lang.String format, + java.util.TimeZone tz) +
      Format a Date value as a String, using the JVMs default + timezone.
      +
      java.util.List<Identity> findIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName, java.lang.String operation, java.lang.String value, @@ -179,14 +241,14 @@ var activeTableTab = "activeTableTab"; the specified sortAttribute
      java.lang.StringgetAccountAttribute(Account account, +getAccountAttribute(Account account, java.lang.String attribute)
      Gets the String value of an attribute from an account on an application.
      java.lang.String getAccountAttribute(java.lang.String applicationName, java.lang.String nativeIdentity, @@ -194,14 +256,14 @@ var activeTableTab = "activeTableTab";
      Gets the String value of an attribute from an account on an application.
      booleangetAccountAttributeBool(Account account, +getAccountAttributeBool(Account account, java.lang.String attribute)
      Gets the boolean value of an attribute from an account on an application.
      boolean getAccountAttributeBool(java.lang.String applicationName, java.lang.String nativeIdentity, @@ -209,14 +271,14 @@ var activeTableTab = "activeTableTab";
      Gets the boolean value of an attribute from an account on an application.
      intgetAccountAttributeInt(Account account, +getAccountAttributeInt(Account account, java.lang.String attribute)
      Gets the int value of an attribute from an account on an application.
      int getAccountAttributeInt(java.lang.String applicationName, java.lang.String nativeIdentity, @@ -224,59 +286,88 @@ var activeTableTab = "activeTableTab";
      Gets the int value of an attribute from an account on an application.
      Account
      Account getAccountByDisplayName(java.lang.String applicationName, java.lang.String displayName)
      Gets an account on an application using the display name.
      Account
      Account getAccountByNativeIdentity(java.lang.String applicationName, java.lang.String nativeIdentity)
      Gets an account on an application using the native identity.
      java.util.List<Account>getAllAccounts(java.lang.String applicationName, + java.lang.String identityName) +
      Given the name of the application and the identity name return the list of + Account objects found for the identity.
      +
      protected ConnectorServiceResolvergetConnectorService() +
      Method is separate from main code to allow me to mock out the connector interaction as part of + an integration test.
      +
      AccountgetFirstAccount(java.lang.String applicationName, + java.lang.String identityName) +
      Get the first account found for the application and identityName.
      +
      java.lang.String getFirstAccountNativeIdentity(java.lang.String applicationName, java.lang.String identityName) -
      Get the first account for the application and identityName and return the first accounts native sailpoint.object.Identity.
      +
      Get the first account for the application and identityName and return the first accounts native Identity.
      Identity
      Identity getIdentityById(java.lang.String id)
      Fetch an identity by the internal id.
      protected LDAPConnectorServiceResolvergetLDAPConnectorService() +
      Method is separate from main code to allow me to mock out the connector interaction as part of + an integration test.
      +
      java.lang.StringgetManagedAttributeDescription(java.lang.String sourceId, +getManagedAttributeDescription(java.lang.String sourceId, java.lang.String name, java.lang.String value, - ManagedAttribute.Type type) + ManagedAttribute.Type type)
      Finds ManagedAttribute description by provided sourceId/name/value/type.
      ManagedAttributeDetailsgetManagedAttributeDetails(java.lang.String sourceId, +getManagedAttributeDetails(java.lang.String sourceId, java.lang.String name, java.lang.String value, - ManagedAttribute.Type type) + ManagedAttribute.Type type)
      Finds ManagedAttribute by sourceId/name/value/type and returns its details in ManagedAttributeDetails model.
      java.lang.ObjectgetRawAccountAttribute(Account account, +getRawAccountAttribute(Account account, java.lang.String attribute)
      Gets the value of an attribute from an account on an application.
      java.lang.Object getRawAccountAttribute(java.lang.String applicationName, java.lang.String nativeIdentity, @@ -284,7 +375,30 @@ var activeTableTab = "activeTableTab";
      Gets the value of an attribute from an account on an application.
      java.lang.StringgetSourceAttributeBySourceId(java.lang.String sourceId, + java.lang.String attributeName) +
      Get a single Source string attribute from an Application using the applicationId
      +
      java.lang.StringgetSourceAttributeBySourceName(java.lang.String sourceName, + java.lang.String attributeName) +
      Get a single Source string attribute from an Application using the applicationId
      +
      booleanisUniqueAccountId(java.lang.String identityNameOrId, + java.lang.String applicationNameOrId, + java.lang.String accountId) +
      A method that will call getObject() on the connector for the Account type + and test if an account with the given accountId exists.
      +
      boolean isUniqueLDAPValue(java.lang.String identityNameOrId, java.lang.String applicationNameOrId, @@ -294,7 +408,57 @@ var activeTableTab = "activeTableTab"; unique values.
      static booleannullSafeCaseInsensitiveEq(java.lang.String o1, + java.lang.String o2) +
      This method performs a null-safe equality comparison between the two strings.
      +
      static <T extends java.lang.Comparable>
      int
      nullSafeCompareTo(T o1, + T o2) +
      Return the compareTo() value for two objects that may be null.
      +
      static booleannullSafeEq(java.lang.Object o1, + java.lang.Object o2) +
      This method performs a null-safe equality comparison between the two + given objects.
      +
      static booleannullSafeEq(java.lang.Object o1, + java.lang.Object o2, + boolean nullsEq) +
      This method performs a null-safe equality comparison between the two + given objects.
      +
      java.lang.Stringotoa(java.lang.Object object) +
      Convert object to a string.
      +
      static booleanotob(java.lang.Object object) +
      Convert object to a boolean.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
  • @@ -303,6 +467,40 @@ var activeTableTab = "activeTableTab";
    • + +
        +
      • + + +

        Field Detail

        + + + +
          +
        • +

          STARTS_WITH_FILTER

          +
          public static final java.lang.String STARTS_WITH_FILTER
          +
          +
          See Also:
          +
          Constant Field Values
          +
          +
        • +
        + + + +
          +
        • +

          EQUALS_FILTER

          +
          public static final java.lang.String EQUALS_FILTER
          +
          +
          See Also:
          +
          Constant Field Values
          +
          +
        • +
        +
      • +
      • @@ -315,9 +513,9 @@ var activeTableTab = "activeTableTab";
        • accountExistsByNativeIdentity

          -
          boolean accountExistsByNativeIdentity(java.lang.String applicationName,
          -                                      java.lang.String nativeIdentity)
          -                               throws GeneralException
          +
          public boolean accountExistsByNativeIdentity(java.lang.String applicationName,
          +                                             java.lang.String nativeIdentity)
          +                                      throws GeneralException
          Determines if an account currently exists on an application using the native identity.
          Parameters:
          @@ -326,7 +524,7 @@ var activeTableTab = "activeTableTab";
          Returns:
          True if the account exists, false otherwise.
          Throws:
          -
          GeneralException - wrapping underlying DB related errors
          +
          GeneralException
        @@ -336,9 +534,9 @@ var activeTableTab = "activeTableTab";
        • accountExistsByDisplayName

          -
          boolean accountExistsByDisplayName(java.lang.String applicationName,
          -                                   java.lang.String displayName)
          -                            throws GeneralException
          +
          public boolean accountExistsByDisplayName(java.lang.String applicationName,
          +                                          java.lang.String displayName)
          +                                   throws GeneralException
          Determines if an account currently exists on an application using the display name.
          Parameters:
          @@ -347,7 +545,7 @@ var activeTableTab = "activeTableTab";
          Returns:
          True if the account exists, false otherwise.
          Throws:
          -
          GeneralException - wrapping underlying DB related errors
          +
          GeneralException
        @@ -357,9 +555,9 @@ var activeTableTab = "activeTableTab";
        • getAccountByNativeIdentity

          -
          Account getAccountByNativeIdentity(java.lang.String applicationName,
          -                                   java.lang.String nativeIdentity)
          -                            throws GeneralException
          +
          public Account getAccountByNativeIdentity(java.lang.String applicationName,
          +                                          java.lang.String nativeIdentity)
          +                                   throws GeneralException
          Gets an account on an application using the native identity.
          Parameters:
          @@ -369,7 +567,7 @@ var activeTableTab = "activeTableTab";
          The Account representing the account or null if not found. If more than one found then the first Account in the exists is returned.
          Throws:
          -
          GeneralException - wrapping underlying DB related errors
          +
          GeneralException
        @@ -379,9 +577,9 @@ var activeTableTab = "activeTableTab";
        • getAccountByDisplayName

          -
          Account getAccountByDisplayName(java.lang.String applicationName,
          -                                java.lang.String displayName)
          -                         throws GeneralException
          +
          public Account getAccountByDisplayName(java.lang.String applicationName,
          +                                       java.lang.String displayName)
          +                                throws GeneralException
          Gets an account on an application using the display name.
          Parameters:
          @@ -391,6 +589,50 @@ var activeTableTab = "activeTableTab";
          The Account representing the account or null if not found. If more than one found then the first Account in the exists is returned.
          Throws:
          +
          GeneralException
          +
          +
        • +
        + + + +
          +
        • +

          getAllAccounts

          +
          public java.util.List<Account> getAllAccounts(java.lang.String applicationName,
          +                                              java.lang.String identityName)
          +                                       throws GeneralException
          +
          Given the name of the application and the identity name return the list of + Account objects found for the identity.
          +
          +
          Parameters:
          +
          applicationName - The name of the application
          +
          identityName - The name of the identity
          +
          Returns:
          +
          List of AccountObjects required
          +
          Throws:
          +
          GeneralException - wrapping underlying DB related errors
          +
          +
        • +
        + + + +
          +
        • +

          getFirstAccount

          +
          public Account getFirstAccount(java.lang.String applicationName,
          +                               java.lang.String identityName)
          +                        throws GeneralException
          +
          Get the first account found for the application and identityName. + IF there is more then on e account the first account will be returned.
          +
          +
          Parameters:
          +
          applicationName - The name of the application
          +
          identityName - The name of the Identity
          +
          Returns:
          +
          The account object
          +
          Throws:
          GeneralException - wrapping underlying DB related errors
        • @@ -401,10 +643,10 @@ var activeTableTab = "activeTableTab";
          • getFirstAccountNativeIdentity

            -
            java.lang.String getFirstAccountNativeIdentity(java.lang.String applicationName,
            -                                               java.lang.String identityName)
            -                                        throws GeneralException
            -
            Get the first account for the application and identityName and return the first accounts native sailpoint.object.Identity.
            +
            public java.lang.String getFirstAccountNativeIdentity(java.lang.String applicationName,
            +                                                      java.lang.String identityName)
            +                                               throws GeneralException
            +
            Get the first account for the application and identityName and return the first accounts native Identity.
            Parameters:
            applicationName - The name of the application
            @@ -422,8 +664,8 @@ var activeTableTab = "activeTableTab";
            • countAccounts

              -
              int countAccounts(java.lang.String applicationName)
              -           throws GeneralException
              +
              public int countAccounts(java.lang.String applicationName)
              +                  throws GeneralException
              Counts the number of accounts on an application.
              Parameters:
              @@ -431,7 +673,7 @@ var activeTableTab = "activeTableTab";
              Returns:
              The total number of accounts.
              Throws:
              -
              GeneralException - wrapping underlying DB related errors
              +
              GeneralException
            @@ -441,10 +683,10 @@ var activeTableTab = "activeTableTab";
            • getRawAccountAttribute

              -
              java.lang.Object getRawAccountAttribute(java.lang.String applicationName,
              -                                        java.lang.String nativeIdentity,
              -                                        java.lang.String attribute)
              -                                 throws GeneralException
              +
              public java.lang.Object getRawAccountAttribute(java.lang.String applicationName,
              +                                               java.lang.String nativeIdentity,
              +                                               java.lang.String attribute)
              +                                        throws GeneralException
              Gets the value of an attribute from an account on an application.
              Parameters:
              @@ -454,7 +696,7 @@ var activeTableTab = "activeTableTab";
              Returns:
              The attribute value or null if the attribute does not exist.
              Throws:
              -
              GeneralException - wrapping underlying DB related errors
              +
              GeneralException
            @@ -464,9 +706,8 @@ var activeTableTab = "activeTableTab";
            • getRawAccountAttribute

              -
              java.lang.Object getRawAccountAttribute(Account account,
              -                                        java.lang.String attribute)
              -                                 throws GeneralException
              +
              public java.lang.Object getRawAccountAttribute(Account account,
              +                                               java.lang.String attribute)
              Gets the value of an attribute from an account on an application.
              Parameters:
              @@ -474,8 +715,6 @@ var activeTableTab = "activeTableTab";
              attribute - The name of the attribute to retrieve.
              Returns:
              The attribute value or null if the attribute does not exist.
              -
              Throws:
              -
              GeneralException
            @@ -485,10 +724,10 @@ var activeTableTab = "activeTableTab";
            • getAccountAttribute

              -
              java.lang.String getAccountAttribute(java.lang.String applicationName,
              -                                     java.lang.String nativeIdentity,
              -                                     java.lang.String attribute)
              -                              throws GeneralException
              +
              public java.lang.String getAccountAttribute(java.lang.String applicationName,
              +                                            java.lang.String nativeIdentity,
              +                                            java.lang.String attribute)
              +                                     throws GeneralException
              Gets the String value of an attribute from an account on an application.
              Parameters:
              @@ -498,7 +737,7 @@ var activeTableTab = "activeTableTab";
              Returns:
              The attribute value or null if the attribute does not exist.
              Throws:
              -
              GeneralException - wrapping underlying DB related errors
              +
              GeneralException
            @@ -508,8 +747,8 @@ var activeTableTab = "activeTableTab";
            • getAccountAttribute

              -
              java.lang.String getAccountAttribute(Account account,
              -                                     java.lang.String attribute)
              +
              public java.lang.String getAccountAttribute(Account account,
              +                                            java.lang.String attribute)
              Gets the String value of an attribute from an account on an application.
              Parameters:
              @@ -526,10 +765,10 @@ var activeTableTab = "activeTableTab";
              • getAccountAttributeBool

                -
                boolean getAccountAttributeBool(java.lang.String applicationName,
                -                                java.lang.String nativeIdentity,
                -                                java.lang.String attribute)
                -                         throws GeneralException
                +
                public boolean getAccountAttributeBool(java.lang.String applicationName,
                +                                       java.lang.String nativeIdentity,
                +                                       java.lang.String attribute)
                +                                throws GeneralException
                Gets the boolean value of an attribute from an account on an application.
                Parameters:
                @@ -539,7 +778,7 @@ var activeTableTab = "activeTableTab";
                Returns:
                The attribute value or false if the attribute does not exist.
                Throws:
                -
                GeneralException - wrapping underlying DB related errors
                +
                GeneralException
              @@ -549,8 +788,8 @@ var activeTableTab = "activeTableTab";
              • getAccountAttributeBool

                -
                boolean getAccountAttributeBool(Account account,
                -                                java.lang.String attribute)
                +
                public boolean getAccountAttributeBool(Account account,
                +                                       java.lang.String attribute)
                Gets the boolean value of an attribute from an account on an application.
                Parameters:
                @@ -567,22 +806,19 @@ var activeTableTab = "activeTableTab";
                • attrSearchCountAccounts

                  -
                  int attrSearchCountAccounts(java.util.List<java.lang.String> sourceIds,
                  -                            java.lang.String attributeName,
                  -                            java.lang.String operation,
                  -                            java.util.List<java.lang.String> values)
                  -                     throws java.lang.IllegalStateException
                  +
                  public int attrSearchCountAccounts(java.util.List<java.lang.String> sourceIds,
                  +                                   java.lang.String attributeName,
                  +                                   java.lang.String operation,
                  +                                   java.util.List<java.lang.String> values)
                  Count the accounts that match the searchable attribute and value.
                  Parameters:
                  sourceIds - The list of Application ids that represent the sources of the data.
                  attributeName - The name of the searchable account attribute. The name parameter is required.
                  -
                  operation - The operation to use when matching, it'll either be Equals or StartsWith.
                  -
                  values - The list of values of that searchable attribute to match. The values parameter is required.
                  +
                  operation - The operation to use when matching, it'll either be Operation.Equal OR Operation.StartsWith
                  +
                  values - The value of that searchable attribute to math. The value parameter is required.
                  Returns:
                  The number of accounts that match the parameters provided.
                  -
                  Throws:
                  -
                  java.lang.IllegalStateException - wrapping underlying errors
                @@ -592,22 +828,116 @@ var activeTableTab = "activeTableTab";
                • attrSearchGetIdentityName

                  -
                  java.lang.String attrSearchGetIdentityName(java.util.List<java.lang.String> sourceIds,
                  -                                           java.lang.String attributeName,
                  -                                           java.lang.String operation,
                  -                                           java.util.List<java.lang.String> values)
                  -                                    throws java.lang.IllegalStateException
                  +
                  public java.lang.String attrSearchGetIdentityName(java.util.List<java.lang.String> sourceIds,
                  +                                                  java.lang.String attributeName,
                  +                                                  java.lang.String operation,
                  +                                                  java.util.List<java.lang.String> values)
                  Get the identity name for the account matching the specified criteria.
                  Parameters:
                  sourceIds - The list of Application ids that represent the sources of the data
                  attributeName - The name of the searchable account attribute. The name parameter is required.
                  -
                  operation - The operation to use when matching, it'll either be Equals or StartsWith.
                  -
                  values - The list of values of that searchable attribute to match. The values parameter is required.
                  +
                  operation - The operation to use when matching, it'll either be Operation.Equal OR Operation.StartsWith
                  +
                  values - The value of that searchable attribute to math. The value parameter is required.
                  Returns:
                  -
                  The name of the sailpoint.object.Identity that matched the account that match the parameters provided.
                  +
                  The name of the Identity that matched the account that match the parameters provided.
                  +
                  +
                • +
                + + + +
                  +
                • +

                  getIdentityById

                  +
                  public Identity getIdentityById(java.lang.String id)
                  +
                  Fetch an identity by the internal id.
                  +
                  +
                  Parameters:
                  +
                  id - The id to use when fetching
                  +
                  Returns:
                  +
                  A DTO representing the Identity, will throw if identity was not found.
                  +
                  +
                • +
                + + + +
                  +
                • +

                  findIdentitiesBySearchableIdentityAttribute

                  +
                  public java.util.List<Identity> findIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName,
                  +                                                                            java.lang.String operation,
                  +                                                                            java.lang.String value,
                  +                                                                            java.lang.String sortAttribute)
                  +
                  Find and return the users that match the incoming attributeName, operation, value ordered by + the specified sortAttribute
                  +
                  +
                  Parameters:
                  +
                  attributeName - The attribute that should be searched, must be searchable and non-null.
                  +
                  operation - The operation to be used when searching and only allowed equals and starts with
                  +
                  value - The value that should match and must be non-null
                  +
                  sortAttribute - The attribute that should be used while sorting. + Default ordering will be on uid if not specified and this also must be searchable. + Sort will always be in ascending order
                  +
                  Returns:
                  +
                  The List of users that match the passed in parameters. The max number returned values will be + 50 refine search to reduce results.
                  Throws:
                  -
                  java.lang.IllegalStateException - wrapping underlying errors
                  +
                  java.lang.IllegalStateException - when attribute provided is not searchable, + when operation is not StartsWith or Equals, + the sortAttribute is not searahable, + or if there are issues during the search
                  +
                  See Also:
                  +
                  EQUALS_FILTER, +STARTS_WITH_FILTER
                  +
                  +
                • +
                + + + +
                  +
                • +

                  countIdentitiesBySearchableIdentityAttribute

                  +
                  public int countIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName,
                  +                                                        java.lang.String operation,
                  +                                                        java.lang.String value)
                  +
                  Count and return the number of users that match the incoming attributeName, operation and value.
                  +
                  +
                  Parameters:
                  +
                  attributeName - The attribute that should be searched, must be searchable and non-null.
                  +
                  operation - The operation to be used when searching and only allowed equals and starts with
                  +
                  value - The value that should match and must be non-null
                  +
                  Returns:
                  +
                  The number of identities that match the parameters
                  +
                  Throws:
                  +
                  java.lang.IllegalStateException - when attribute provided is not searchable, + when operation is not StartsWith or Equals, + or if there are issues during the count operation
                  +
                  See Also:
                  +
                  EQUALS_FILTER, +STARTS_WITH_FILTER
                  +
                  +
                • +
                + + + +
                  +
                • +

                  createIdentityAttributeQueryOptions

                  +
                  protected QueryOptions createIdentityAttributeQueryOptions(java.lang.String attributeName,
                  +                                                           java.lang.String operation,
                  +                                                           java.lang.String value)
                  +
                  Create the QueryOptions for the given parameters. Used for both searching and counting Identities.
                  +
                  +
                  Parameters:
                  +
                  attributeName - The attribute that should be searched, must be searchable and non-null.
                  +
                  operation - The operation to be used when searching and only allowed equals and starts with
                  +
                  value - The value that should match and must be non-null
                  +
                  Returns:
                  +
                  The QueryOptions of Identity search and counting:w
                @@ -617,10 +947,10 @@ var activeTableTab = "activeTableTab";
                • getAccountAttributeInt

                  -
                  int getAccountAttributeInt(java.lang.String applicationName,
                  -                           java.lang.String nativeIdentity,
                  -                           java.lang.String attribute)
                  -                    throws GeneralException
                  +
                  public int getAccountAttributeInt(java.lang.String applicationName,
                  +                                  java.lang.String nativeIdentity,
                  +                                  java.lang.String attribute)
                  +                           throws GeneralException
                  Gets the int value of an attribute from an account on an application.
                  Parameters:
                  @@ -630,7 +960,7 @@ var activeTableTab = "activeTableTab";
                  Returns:
                  The attribute value or zero if the attribute does not exist.
                  Throws:
                  -
                  GeneralException - wrapping underlying DB related errors
                  +
                  GeneralException
                @@ -640,8 +970,8 @@ var activeTableTab = "activeTableTab";
                • getAccountAttributeInt

                  -
                  int getAccountAttributeInt(Account account,
                  -                           java.lang.String attribute)
                  +
                  public int getAccountAttributeInt(Account account,
                  +                                  java.lang.String attribute)
                  Gets the int value of an attribute from an account on an application.
                  Parameters:
                  @@ -652,17 +982,17 @@ var activeTableTab = "activeTableTab";
                - +
                • getManagedAttributeDescription

                  -
                  java.lang.String getManagedAttributeDescription(java.lang.String sourceId,
                  -                                                java.lang.String name,
                  -                                                java.lang.String value,
                  -                                                ManagedAttribute.Type type)
                  -                                         throws GeneralException
                  +
                  public java.lang.String getManagedAttributeDescription(java.lang.String sourceId,
                  +                                                       java.lang.String name,
                  +                                                       java.lang.String value,
                  +                                                       ManagedAttribute.Type type)
                  +                                                throws GeneralException
                  Finds ManagedAttribute description by provided sourceId/name/value/type.
                  Parameters:
                  @@ -678,17 +1008,17 @@ var activeTableTab = "activeTableTab";
                - +
                • getManagedAttributeDetails

                  -
                  ManagedAttributeDetails getManagedAttributeDetails(java.lang.String sourceId,
                  -                                                   java.lang.String name,
                  -                                                   java.lang.String value,
                  -                                                   ManagedAttribute.Type type)
                  -                                            throws GeneralException
                  +
                  public ManagedAttributeDetails getManagedAttributeDetails(java.lang.String sourceId,
                  +                                                          java.lang.String name,
                  +                                                          java.lang.String value,
                  +                                                          ManagedAttribute.Type type)
                  +                                                   throws GeneralException
                  Finds ManagedAttribute by sourceId/name/value/type and returns its details in ManagedAttributeDetails model.
                  Parameters:
                  @@ -696,7 +1026,7 @@ var activeTableTab = "activeTableTab";
                  name - The name of the attribute used to query the ManagedAttribute.
                  value - The value of the attribute used to query the ManagedAttribute.
                  type - The type of the attribute used to query the ManagedAttribute (see enum ManagedAttribute.Type). - Defaults to Entitlement (if null provided).
                  + Defaults to Entitlement (if null provided).
                  Returns:
                  ManagedAttributeDetails if found or else null.
                  Throws:
                  @@ -704,90 +1034,60 @@ var activeTableTab = "activeTableTab";
                - +
                • -

                  getIdentityById

                  -
                  Identity getIdentityById(java.lang.String id)
                  -
                  Fetch an identity by the internal id.
                  +

                  getSourceAttributeBySourceId

                  +
                  public java.lang.String getSourceAttributeBySourceId(java.lang.String sourceId,
                  +                                                     java.lang.String attributeName)
                  +                                              throws GeneralException
                  +
                  Get a single Source string attribute from an Application using the applicationId
                  Parameters:
                  -
                  id - The id to use when fetching an identity object
                  +
                  sourceId - The id of the source
                  +
                  attributeName - The name/key of the attribute to return
                  Returns:
                  -
                  A DTO representing the sailpoint.object.Identity, will throw if identity was not found
                  +
                  The value if found in the attributes
                  +
                  Throws:
                  +
                  GeneralException - wrapping underlying DB related errors
                - +
                • -

                  findIdentitiesBySearchableIdentityAttribute

                  -
                  java.util.List<Identity> findIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName,
                  -                                                                     java.lang.String operation,
                  -                                                                     java.lang.String value,
                  -                                                                     java.lang.String sortAttribute)
                  -                                                              throws java.lang.IllegalStateException
                  -
                  Find and return the users that match the incoming attributeName, operation, value ordered by - the specified sortAttribute
                  +

                  getSourceAttributeBySourceName

                  +
                  public java.lang.String getSourceAttributeBySourceName(java.lang.String sourceName,
                  +                                                       java.lang.String attributeName)
                  +                                                throws GeneralException
                  +
                  Get a single Source string attribute from an Application using the applicationId
                  Parameters:
                  -
                  attributeName - The attribute that should be searched, must be searchable and non-null
                  -
                  operation - The operation to be used when searching; only Equals and StartsWith are supported
                  -
                  value - The value that should match and must be non-null
                  -
                  sortAttribute - The attribute that should be used while sorting - Default ordering will be on uid if not specified and this also must be searchable - Sort will always be in ascending order
                  +
                  sourceName - (internal name i.e. application.getName() vs displayName of the application
                  +
                  attributeName - The name/key of the attribute to return
                  Returns:
                  -
                  The List of users that match the passed in parameters. The max number returned values will be limited to 50.
                  +
                  The value if found in the attributes
                  Throws:
                  -
                  java.lang.IllegalStateException - when attribute provided is not searchable, - when operation is not StartsWith or Equals, - the sortAttribute is not searahable, - or if there are issues during the search
                  -
                  -
                • -
                - - - -
                  -
                • -

                  countIdentitiesBySearchableIdentityAttribute

                  -
                  int countIdentitiesBySearchableIdentityAttribute(java.lang.String attributeName,
                  -                                                 java.lang.String operation,
                  -                                                 java.lang.String value)
                  -                                          throws java.lang.IllegalStateException
                  -
                  Count and return the number of users that match the incoming attributeName, operation and value.
                  -
                  -
                  Parameters:
                  -
                  attributeName - The attribute that should be searched, must be searchable and non-null
                  -
                  operation - The operation to be used when searching; only Equals and StartsWith are supported
                  -
                  value - The value that should match and must be non-null
                  -
                  Returns:
                  -
                  The number of identities that match the parameters
                  -
                  Throws:
                  -
                  java.lang.IllegalStateException - when attribute provided is not searchable, - when operation is not StartsWith or Equals, - or if there are issues during the count operation
                  +
                  GeneralException - wrapping underlying DB related errors
                -
                  +
                  • isUniqueLDAPValue

                    -
                    boolean isUniqueLDAPValue(java.lang.String identityNameOrId,
                    -                          java.lang.String applicationNameOrId,
                    -                          java.lang.String attributeName,
                    -                          java.lang.String attributeValue)
                    +
                    public boolean isUniqueLDAPValue(java.lang.String identityNameOrId,
                    +                                 java.lang.String applicationNameOrId,
                    +                                 java.lang.String attributeName,
                    +                                 java.lang.String attributeValue)
                    A method that can be used to call LDAP type connectors to look for - unique values. The connector is called with a specific search filter + unique values. The connector is called with a specific search filter based on the attributeName and value that is passed into this method. If there is a value returned the values is considered to be non-unique.
                    @@ -802,6 +1102,211 @@ var activeTableTab = "activeTableTab";
                  + + + +
                    +
                  • +

                    getLDAPConnectorService

                    +
                    protected LDAPConnectorServiceResolver getLDAPConnectorService()
                    +
                    Method is separate from main code to allow me to mock out the connector interaction as part of + an integration test.
                    +
                    +
                    Returns:
                    +
                    An instance of the LDAPConnectorServiceResolver which will be plugged into the system on the + mantis platform size.
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    isUniqueAccountId

                    +
                    public boolean isUniqueAccountId(java.lang.String identityNameOrId,
                    +                                 java.lang.String applicationNameOrId,
                    +                                 java.lang.String accountId)
                    +
                    A method that will call getObject() on the connector for the Account type + and test if an account with the given accountId exists. If the account exists the method + will return false, otherwise true.
                    +
                    +
                    Parameters:
                    +
                    identityNameOrId - The name or ID of the identity we are using
                    +
                    applicationNameOrId - The name or ID of the source we are targeting
                    +
                    accountId - The accountId we are trying to validate
                    +
                    Returns:
                    +
                    true if the account is unique, false otherwise
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    getConnectorService

                    +
                    protected ConnectorServiceResolver getConnectorService()
                    +
                    Method is separate from main code to allow me to mock out the connector interaction as part of + an integration test.
                    +
                    +
                    Returns:
                    +
                    An instance of the ConnectorServiceResolver which will be plugged into the system on the + mantis platform size.
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    otoa

                    +
                    public java.lang.String otoa(java.lang.Object object)
                    +
                    Convert object to a string.
                    +
                    +
                    Parameters:
                    +
                    object - object to convert
                    +
                    Returns:
                    +
                    String value for non null objects, null otherwise
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    otob

                    +
                    public static boolean otob(java.lang.Object object)
                    +
                    Convert object to a boolean.
                    +
                    +
                    Parameters:
                    +
                    object - object to convert
                    +
                    Returns:
                    +
                    Returns true if object is found true value or the String value "true" (ignoring case).
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    asList

                    +
                    public static java.util.List asList(java.lang.Object object)
                    +
                    Return a List with the given object. If the object is a List, it is + returned. If the object is a collection, a List with all of the elements + of the collection is returned. If the object is a non-collection, a new + List containing the given object is returned. If the object is null, + null is returned.
                    +
                    +
                    Parameters:
                    +
                    object - The object to return as a list.
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    nullSafeEq

                    +
                    public static boolean nullSafeEq(java.lang.Object o1,
                    +                                 java.lang.Object o2)
                    +
                    This method performs a null-safe equality comparison between the two + given objects. If both objects are null, this returns false.
                    +
                    +
                    Parameters:
                    +
                    o1 - The first object to compare.
                    +
                    o2 - The second object to compare.
                    +
                    Returns:
                    +
                    True if both objects are non-null and equal.
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    nullSafeEq

                    +
                    public static boolean nullSafeEq(java.lang.Object o1,
                    +                                 java.lang.Object o2,
                    +                                 boolean nullsEq)
                    +
                    This method performs a null-safe equality comparison between the two + given objects. This will return true if both objects are null and + nullsEq is true. Empty or "null" strings will be converted to null + before checking if emptyStringToNull is true.
                    +
                  • +
                  + + + +
                    +
                  • +

                    nullSafeCaseInsensitiveEq

                    +
                    public static boolean nullSafeCaseInsensitiveEq(java.lang.String o1,
                    +                                                java.lang.String o2)
                    +
                    This method performs a null-safe equality comparison between the two strings. + This will return true if both objects are null and nullsEq is true. + Empty or "null" strings will be converted to null before checking if emptyStringToNull is true.
                    +
                  • +
                  + + + + + +
                    +
                  • +

                    nullSafeCompareTo

                    +
                    public static <T extends java.lang.Comparable> int nullSafeCompareTo(T o1,
                    +                                                                     T o2)
                    +
                    Return the compareTo() value for two objects that may be null. Nulls + are considered equal, and null is greater than non-null.
                    +
                  • +
                  + + + +
                    +
                  • +

                    dateToString

                    +
                    public static java.lang.String dateToString(java.util.Date src,
                    +                                            java.lang.String format)
                    +
                    Format a Date value as a String, using the JVMs default + timezone.
                    +
                    +
                    Parameters:
                    +
                    src - The source String
                    +
                    format - The date format to apply
                    +
                    Returns:
                    +
                    The formatted date in String format specified
                    +
                    +
                  • +
                  + + + +
                    +
                  • +

                    dateToString

                    +
                    public static java.lang.String dateToString(java.util.Date src,
                    +                                            java.lang.String format,
                    +                                            java.util.TimeZone tz)
                    +
                    Format a Date value as a String, using the JVMs default + timezone.
                    +
                    +
                    Parameters:
                    +
                    src - The source String
                    +
                    format - The date format to apply
                    +
                    tz -
                    +
                    Returns:
                    +
                    The formatted date in String format specified
                    +
                    +
                  • +
              • @@ -855,13 +1360,13 @@ var activeTableTab = "activeTableTab"; diff --git a/static/rule-java-docs/sailpoint/server/package-frame.html b/static/rule-java-docs/sailpoint/server/package-frame.html index b8c4e91b7..bb8a120bd 100644 --- a/static/rule-java-docs/sailpoint/server/package-frame.html +++ b/static/rule-java-docs/sailpoint/server/package-frame.html @@ -2,18 +2,18 @@ - + sailpoint.server - +

                sailpoint.server

                -

                Interfaces

                -
                diff --git a/static/rule-java-docs/sailpoint/server/package-summary.html b/static/rule-java-docs/sailpoint/server/package-summary.html index 1f1cdb787..93f3cd12f 100644 --- a/static/rule-java-docs/sailpoint/server/package-summary.html +++ b/static/rule-java-docs/sailpoint/server/package-summary.html @@ -2,9 +2,9 @@ - + sailpoint.server - + @@ -74,15 +74,15 @@
                • - - +
                  Interface Summary 
                  + - + - + diff --git a/static/rule-java-docs/sailpoint/server/package-tree.html b/static/rule-java-docs/sailpoint/server/package-tree.html index 0bf477c04..aff20aedf 100644 --- a/static/rule-java-docs/sailpoint/server/package-tree.html +++ b/static/rule-java-docs/sailpoint/server/package-tree.html @@ -2,9 +2,9 @@ - +sailpoint.server Class Hierarchy - + @@ -76,9 +76,13 @@
                  -

                  Interface Hierarchy

                  +

                  Class Hierarchy

                  diff --git a/static/rule-java-docs/serialized-form.html b/static/rule-java-docs/serialized-form.html index 16f6c0ba4..16ee6e78f 100644 --- a/static/rule-java-docs/serialized-form.html +++ b/static/rule-java-docs/serialized-form.html @@ -2,9 +2,9 @@ - +Serialized Form - + @@ -75,6 +75,102 @@ diff --git a/static/rule-java-docs/src/sailpoint/api/SailPointContext.java b/static/rule-java-docs/src/sailpoint/api/SailPointContext.java new file mode 100644 index 000000000..85e49f1fa --- /dev/null +++ b/static/rule-java-docs/src/sailpoint/api/SailPointContext.java @@ -0,0 +1,79 @@ +package sailpoint.api; + +import sailpoint.object.Filter; +import sailpoint.object.QueryOptions; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * A context object class used to query for data + * This class is for old rules using SailPointContext. Any new rules submitted using the following methods will be blocked and + * asked to migrate to the replacement methods available in IDNRuleUtil + * + * These methods allow you to pass a class name to query on. The two classes supported are `Identity.class` and `Link.class` + */ +public class SailPointContext { + + /** + * Query the context to get the number of objects for the given query + * @param className Identity or Link class + * @param queryOptions options to filter results + * @return the number of objects found + */ + public int countObjects(Class className, QueryOptions queryOptions) { + return 5; + } + + /** + * Query the context to get a list of objects for the given query + * @param className Identity or Link class + * @param queryOptions options to filter results + * @return the list of objects found + */ + public List getObjects(Class className, QueryOptions queryOptions) { + return new ArrayList(); + } + + /** + * Query the context to get a list of results only including the attributes provided that match the given query + * @param className Identity or Link class + * @param queryOptions options to filter results + * @param attributes the attributes to return + * @return + */ + public Iterator search(Class className, QueryOptions queryOptions, String attributes) { + return null; + } + + /** + * Query the context to get a list of results that match the given query + * @param className Identity or Link class + * @param queryOptions options to filter results + * @return the results of the query + */ + public Iterator search(Class className, QueryOptions queryOptions) { + return null; + } + + /** + * Query the context to get an object by name + * @param className Identity or Link class + * @param name the name of the object to fetch + * @return the result of the query + */ + public Object getObjectByName(Class className, String name) { + return new Object(); + } + + /** + * Query the context to get a unique object with filters + * @param className Identity or Link class + * @param filters options to filter by + * @return the result of the query + */ + public Object getUniqueObject(Class className, Filter... filters) { + return new Object(); + } +} diff --git a/static/rule-java-docs/src/sailpoint/connector/webservices/Endpoint.java b/static/rule-java-docs/src/sailpoint/connector/webservices/Endpoint.java index 26ed40a68..3b066adb2 100644 --- a/static/rule-java-docs/src/sailpoint/connector/webservices/Endpoint.java +++ b/static/rule-java-docs/src/sailpoint/connector/webservices/Endpoint.java @@ -1,51 +1,84 @@ package sailpoint.connector.webservices; +import sailpoint.object.Attributes; + +import java.util.HashMap; +import java.util.List; import java.util.Map; -public interface Endpoint { +public class Endpoint { + private String _contextUrl; + private String _httpMethodType; + private String _operationType; + private String _rootPath; + private String _fullUrl; + private String _baseUrl; + private int _sequenceNumberForEndpoint; + private String _uniqueNameForEndPoint; + private Map _resMappingObj; + private Map _header; + private Map _body; + private List _responseCode; + private Attributes _attributes; /** * Use this method to get the name of the rule to run after the webservice request completes. */ - void getAfterRule(); + public String getAfterRule() { + return "afterRule"; + } /** * Use this method to get the name of the rule to run before the webservice request completes */ - void getBeforeRule(); + public String getBeforeRule() { + return "beforeRule"; + } /** * Use this method to set the context url for the particular operation (create user, update user, account aggregation, etc...) * @param value the name of the context url */ - void setContextUrl(java.lang.String value); + public void setContextUrl(java.lang.String value) { + this._contextUrl = value; + } /** * Use this method to get the context url for the particular operation (create user, update user, account aggregation, etc...) */ - void getContextUrl(); + public String getContextUrl() { + return this._contextUrl; + } /** * Use this method to set the http method type (put, post, get, patch, delete) for the particular operation (create user, update user, account aggregation, etc...) * @param value the name of the http method type [get, post, put, patch, delete] */ - void setHttpMethodType(java.lang.String value); + public void setHttpMethodType(java.lang.String value) { + this._httpMethodType = value; + } /** * Use this method to get the http method type (put, post, get, patch, delete) for the particular operation (create user, update user, account aggregation, etc...) */ - void getHttpMethodType(); + public String getHttpMethodType() { + return this._httpMethodType; + } /** * Use this method to set the operation type (Account Aggregation, Group Aggregation, Create Account, etc...) for the particular operation record (create user, update user, account aggregation, etc...) * @param value the name of the operation type */ - void setOperationType(java.lang.String value); + public void setOperationType(java.lang.String value) { + this._operationType = value; + } /** * Use this method to get the operation type (Account Aggregation, Group Aggregation, Create Account, etc...) for the particular operation record (create user, update user, account aggregation, etc...) */ - void getOperationType(); + public String getOperationType() { + return this._operationType; + } /** * Use this method to set the root of the JSON response returned from the managed source for the particular operation (create user, update user, account aggregation, etc...) @@ -69,7 +102,9 @@ public interface Endpoint { * * @param value the name of the root of the JSON response results */ - void setRootPath(java.lang.String value); + public void setRootPath(java.lang.String value) { + this._rootPath = value; + } /** * Use this method to get the root of the JSON response returned from the managed source for the particular operation (create user, update user, account aggregation, etc...) @@ -92,7 +127,9 @@ public interface Endpoint { * } * */ - void getRootPath(); + public String getRootPath() { + return this._rootPath; + } /** * Use this method to set the complete url (endpoint) of the operation that is to be performed for the particular operation @@ -102,7 +139,9 @@ public interface Endpoint { * * @param value the full url as a string */ - void setFullUrl(java.lang.String value); + public void setFullUrl(java.lang.String value) { + this._fullUrl = value; + } /** * Use this method to get the complete url (endpoint) of the operation that is to be performed for the particular operation @@ -111,7 +150,9 @@ public interface Endpoint { * ex: https://api.airtable.com/v0/appe0bVnLjyV97hyg/Users * */ - void getFullUrl(); + public String getFullUrl() { + return this._fullUrl; + } /** * Use this method to set the base url (endpoint) of the operation that is to be performed for the particular operation @@ -121,7 +162,9 @@ public interface Endpoint { * * @param value the base url as a string */ - void setBaseUrl(java.lang.String value); + public void setBaseUrl(java.lang.String value){ + this._baseUrl = value; + } /** * Use this method to get the base url (endpoint) of the operation that is to be performed for the particular operation @@ -130,17 +173,23 @@ public interface Endpoint { * ex: https://api.airtable.com/v0/appe0bVnLjyV97hyg * */ - void getBaseUrl(); + public String getBaseUrl() { + return this._baseUrl; + } /** * Use this method to get the sequence number for the particular operation (create user, update user, account aggregation, etc...) */ - void getSequenceNumberForEndpoint(); + public int getSequenceNumberForEndpoint() { + return this._sequenceNumberForEndpoint; + } /** * Use this method to get the unique operation name for the particular operation (create user, update user, account aggregation, etc...) */ - void getUniqueNameForEndPoint(); + public String getUniqueNameForEndPoint() { + return this._uniqueNameForEndPoint; + } /** * Use this method to set the response mapping for the response attributes returned from the JSON response of the managed source. @@ -179,7 +228,9 @@ public interface Endpoint { * * @param value the mapping of account schema attribute to the JSON path value in the JSON response */ - void setResMappingObj(Map value); + public void setResMappingObj(Map value) { + this._resMappingObj = value; + } /** @@ -218,7 +269,9 @@ public interface Endpoint { * * */ - void getResMappingObj(); + public Map getResMappingObj() { + return this._resMappingObj; + } /** * Use this method to set the header values for the request @@ -230,7 +283,9 @@ public interface Endpoint { * * @param value the map of http headers to send with the request */ - void setHeader(Map value); + public void setHeader(Map value) { + this._header = value; + } /** * Use this method to get the header values for the request @@ -241,7 +296,9 @@ public interface Endpoint { * requestEndPoint.setHeader(headerMap); * */ - void getHeader(); + public Map getHeader() { + return this._header; + } /** @@ -252,7 +309,13 @@ public interface Endpoint { * @param entry the key for the header * @param value the value for the header */ - void addHeader(java.lang.String entry, java.lang.String value); + public void addHeader(java.lang.String entry, java.lang.String value) { + if (this._header == null) { + this._header = new HashMap(); + } + + this._header.put(entry, value); + } /** * Use this method to set the http payload information as a map. @@ -262,14 +325,18 @@ public interface Endpoint { * which means the user has provided values as a raw JSON string, otherwise the user has provided the value in the key,value format that must be converted into JSON * @param value the http payload map */ - void setBody(Map value); + public void setBody(Map value) { + this._body = value; + } /** * Use this method to get the http payload information as a map. *
                  * The map contains three keys {@code bodyFormat, bodyFormData, jsonBody}. */ - void getBody(); + public Map getBody() { + return this._body; + } /** * Use this method to set the value of successful response codes as a list (200,201,299). This will be respected by the connector. @@ -277,18 +344,24 @@ public interface Endpoint { * If any other response codes are returned this would be considered as a request failure. * @param value the list of successful response code values */ - void setResponseCode(java.util.List value); + public void setResponseCode(java.util.List value) { + this._responseCode = value; + } /** * Use this method to get the value of successful response codes as a list (200,201,299). */ - void getResponseCode(); + public List getResponseCode() { + return this._responseCode; + } /** * Use this method to get all the available attributes * @return */ - sailpoint.object.Attributes getAttributes(); + public Attributes getAttributes() { + return this._attributes; + } /** @@ -296,5 +369,7 @@ public interface Endpoint { * @param name the name of the attribute * @return */ - Object getAttribute(java.lang.String name); + public Object getAttribute(java.lang.String name) { + return this._attributes != null ? this._attributes.get(name) : null; + } } diff --git a/static/rule-java-docs/src/sailpoint/connector/webservices/WebServicesClient.java b/static/rule-java-docs/src/sailpoint/connector/webservices/WebServicesClient.java index abb5a0705..db207cc35 100644 --- a/static/rule-java-docs/src/sailpoint/connector/webservices/WebServicesClient.java +++ b/static/rule-java-docs/src/sailpoint/connector/webservices/WebServicesClient.java @@ -5,7 +5,8 @@ import java.util.List; /** * Definition of a Web Services Client interface available to Rule implementors. */ -public interface WebServicesClient { +public class WebServicesClient { + protected HttpClient _client; /** * Configure connection parameters. See the ARG_* constants. @@ -18,13 +19,17 @@ public interface WebServicesClient { * @param args map of the available configuration parameters, ARG_URL, ARG_USERNAME, ARG_PASSWORD, ARG_TIMEOUT * @throws java.lang.Exception The exception thrown by the client */ - void configure(java.util.Map args) throws java.lang.Exception; + public void configure(java.util.Map args) throws java.lang.Exception { + + } /** * Use this method to get a list of cookies associated with the request * @return List of cookies associated with the request */ - List getCookies(); + public List getCookies() { + return this._client.getCookies(); + } /** @@ -34,7 +39,9 @@ public interface WebServicesClient { * @return Get request response object * @throws java.lang.Exception The exception thrown by the client */ - String executeGet(java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executeGet(java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "getResponse"; + } /** @@ -45,7 +52,9 @@ public interface WebServicesClient { * @return Get request response object * @throws java.lang.Exception The exception thrown by the client */ - String executeGet(java.lang.String url, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executeGet(java.lang.String url, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "getResponse"; + } /** * Use this method to execute a POST call with specifying the url, payload, and allowed statuses. @@ -55,7 +64,9 @@ public interface WebServicesClient { * @return Post request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePost(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePost(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception { + return "postResponse"; + } /** * Use this method to execute a POST call with specifying the url, payload, header values and allowed statuses. @@ -66,7 +77,9 @@ public interface WebServicesClient { * @return Post request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePost(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePost(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "postResponse"; + } /** @@ -77,7 +90,9 @@ public interface WebServicesClient { * @return Put request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePut(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePut(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception { + return "putResponse"; + } /** * Use this method to execute a PUT call with specifying the url, payload, header values and allowed statuses. @@ -88,7 +103,9 @@ public interface WebServicesClient { * @return Put request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePut(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePut(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "putResponse"; + } /** * Use this method to execute a PATCH call with specifying the url, payload and allowed statuses. @@ -98,7 +115,9 @@ public interface WebServicesClient { * @return Patch request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePatch(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePatch(java.lang.String url, java.lang.Object payload, java.util.List allowedStatuses) throws java.lang.Exception { + return "patchResponse"; + } /** * Use this method to execute a PATCH call with specifying the url, payload, header values and allowed statuses. @@ -109,13 +128,17 @@ public interface WebServicesClient { * @return Patch request response object * @throws java.lang.Exception The exception thrown by the client */ - String executePatch(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executePatch(java.lang.String url, java.lang.Object payload, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "patchResponse"; + } /** * Get the last executed request's response headers. * @return Map of response headers */ - java.util.Map getResponseHeaders(); + public java.util.Map getResponseHeaders() { + return this._client.getResponseHeaders(); + } /** @@ -125,7 +148,9 @@ public interface WebServicesClient { * @return Delete request response object * @throws java.lang.Exception The exception thrown by the client */ - String executeDelete(java.lang.String url, java.util.List allowedStatuses) throws java.lang.Exception; + public String executeDelete(java.lang.String url, java.util.List allowedStatuses) throws java.lang.Exception { + return "deleteResponse"; + } /** * Use this method to execute a DELETE call specifying the url, header values and allowed statuses. @@ -135,6 +160,8 @@ public interface WebServicesClient { * @return Delete request response object * @throws java.lang.Exception The exception thrown by the client */ - String executeDelete(java.lang.String url, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception; + public String executeDelete(java.lang.String url, java.util.Map headers, java.util.List allowedStatuses) throws java.lang.Exception { + return "deleteResponse"; + } } diff --git a/static/rule-java-docs/src/sailpoint/object/Application.java b/static/rule-java-docs/src/sailpoint/object/Application.java index 323a965e0..c27278869 100644 --- a/static/rule-java-docs/src/sailpoint/object/Application.java +++ b/static/rule-java-docs/src/sailpoint/object/Application.java @@ -1,387 +1,45 @@ package sailpoint.object; -import sailpoint.api.ApplicationConfigChangeListener; -import sailpoint.tools.GeneralException; -import sailpoint.tools.xml.*; +import java.util.ArrayList; +import java.util.List; +import sailpoint.object.Filter.LeafFilter; -import java.io.Serializable; -import java.util.*; +public class Application { -public interface Application extends PersistentXmlObject, Serializable, XMLReferenceTarget, Cloneable, Describable { - /** - * Name of the configuration schema - */ - String SCHEMA_CONFIG = "configuration"; - /** - * Name of the group schema - */ - String SCHEMA_GROUP = "group"; - /** - * Name of the account schema - */ - String SCHEMA_ACCOUNT = "account"; - /** - * Attribute holding the CompositeDefinition. - */ - String ATTR_COMPOSITE_DEFINITION = "compositeDefinition"; - /** - * Attribute holding the manager filter. - */ - String ATTR_MANAGER_FILTER = "managerCorrelationFilter"; - /** - * Attribute holding the name of the application "template" that was - * used when this application was created. Template application are - * stored in the ConnectorRegistry and cross referenced by the UI - * for "type" specific information. - */ - String ATTR_TEMPLATE_APPLICATION = "templateApplication"; - /** - * Attribute holding the path to the xhtml page used to render the - * configuration attributes for an application. This is typically - * only stored on the template application. - */ - String ATTR_FORM_PATH = "formPath"; - /** - * Attribute to indicate that the aggregation process should track - * native changes at the application level. - *

                  - * This flag alone does not cause change detection, there must - * also be a life cycle event defined that matches - * the identity. - */ - String ATTR_NATIVE_CHANGE_DETECTION_ENABLED = "nativeChangeDetectionEnabled"; - /** - * List of operations that should be included when performing native change detection. - */ - String ATTR_NATIVE_CHANGE_OPERATIONS = "nativeChangeDetectionOperations"; - /** - * List of attribute names that should be included when performing native change detection. - * When null the entitlement attributes will be used. - */ - String ATTR_NATIVE_CHANGE_ATTRIBUTES = "nativeChangeDetectionAttributes"; - /** - * Option that tells the back end which attributes to detect change against. - * Defaults to "entitlements", but also supports "userDefined" and "all". - */ - String ATTR_NATIVE_CHANGE_ATTRIBUTE_SCOPE = "nativeChangeDetectionAttributeScope"; - /** - * Key from the config that holds the value in the config - * that holds the name of the sever side rules that should - * be executed before and after provisioning. - */ - String ATTR_BEFORE_PROVISIONING_RULE = "beforeProvisioningRule"; - /** - * Key from the config that holds the value in the config that holds the name of the - * sever side rules that should be executed before and - * after provisioning. - */ - String ATTR_AFTER_PROVISIONING_RULE = "afterProvisioningRule"; - /** - * Key from the config that holds a list of rule names that need to be executed - * by the connector as part of the connector interaction. This includes - * thinks such as the ConnectorBeforeCreate, ConnectorAfterCreate, etc... - */ - String ATTR_NATIVE_RULES = "nativeRules"; - /** - * Key from the config that can be set by the Connector to save state - * for delta aggregation. Only the connector knows what this is, - * it can be a simple String, a Date, or a complex Map. - */ - String ATTR_DELTA_AGGREGATION = "deltaAggregation"; - /** - * Key from the config that says where customization rules are run - * when the Connector is being called through a proxy Connector. - * This was added for the CIB, where there are three choices - * where the customization rule could run: within the CIB, - * within IdentityIQ, or both. - */ - String ATTR_CUSTOMIZATION_RULE_LOCATION = "customizationRuleLocation"; - /** - * Attribute for the management workgroup, if any, for this Application - */ - String ATTR_MANAGEMENT_WORKGROUP = "managementWorkgroup"; - /** - * Attribute for the displayName of the application - */ - String ATTR_DISPLAY_NAME = "cloudDisplayName"; - /** - * Value for ATTR_CUSTOMIZATION_RULE_LOCATION that means the - * rule will be called when the connector calls are NOT being proxied. - * This is the default if not set. For CIB, it means that the - * rule will run within the CIB only. - * ConnectorProxy._redirectetdConnector must be null. - */ - String RULE_LOCATION_LOCAL = "local"; - /** - * Value for ATTR_CUSTOMIZATION_RULE_LOCATION that means the - * rule will be called when the connector calls are being proxied. - * For CIB this means from the IdentityIQ side. - * ConnectorProxy._redirectedConnector must be non null. - */ - String RULE_LOCATION_PROXY = "proxy"; - /** - * Value for ATTR_CUSTOMIZATION_RULE_LOCATION that means the - * rule will be on both the IdentityIQ and CIB sides. Unlikely to - * be used in practice but who knows. - */ - String RULE_LOCATION_BOTH = "both"; - /** - * CSV list of attribute names that should be encrypted when persisting - * applications. - */ - String CONFIG_ENCRYPTED_CONFIG_ATTRIBUTES = "encrypted"; - /** - * The name of the attribute in the group schema containing the list - * of members. This was originally LDAPConnector.CONFIG_GROUP_ATTR but - * moved here because it is needed in several connectors. - * - * @ignore Ideally this would be Schema property like identityAttribute - * and the others but the old LDAPConnector convention must be supported. - */ - String ATTR_GROUP_MEMBER_ATTRIBUTE = "groupMemberAttribute"; - /** - * The name of the IdentityNow application. - */ - String IDENTITY_NOW_APP_NAME = "IdentityNow"; - /** - * Key for the connector state map that contains new app config values - */ - String CONNECTOR_STATE_MAP = "connectorStateMap"; - /** - * List of secret attributes used in different connector's application attribute. - */ - String[] SECRET_ATTRIBUTES = { - "password", // "password" - "cmdClientPassword", // used by RSA Connector - "adminPassword", // used by Airwatch Connector - "apikey", // used by Airwatch Connector - "kid", // used by AWS Connector - "secret", // used by AWS Connector - "keystorePwd", // used by BMCESS Connector - "token", // used by BOX Net Connector - "transportUserPassword", // used by CyberArk Connector - "group.password", // used by JDBC Connector - "accountId", // used by NetSuite Connector - "keystorepassword", // used by ServiceNow Connector - "pkeypassword", // used by ServiceNow Connector - "passwd", // used by Siebel Connector - "admin_password", // used by TAM Connector - "SudoUserPassword", // used by Unix Connector - "PassphraseForPrivateKey" // used by Unix Connector - }; - - static ObjectConfig getObjectConfig() { - - return ObjectConfig.getObjectConfig(Application.class); + public String getId() { + return "id"; } - Map getExtendedAttributes(); + public String getName() { + return "name"; + } - boolean isAutoPromotion(); + public Attributes getAttributes() { + return new Attributes(); + } - @XMLProperty(mode = SerializationMode.LIST) - List getPasswordPolicies(); + public Object getAttributeValue(String name) { + return new Object(); + } - @XMLProperty - String getFeaturesString(); + public String getStringAttributeValue(String name) { + return "attributeValue"; + } - List getEntitlementAttributeNames(); + public List getSchemas() { + return new ArrayList(); + } - Map getEntitlements(Locale locale); + public int getIntAttributeValue(String name) { + return 1; + } - List getFeatures(); + public LeafFilter getManagerCorrelationFilter() { + return new LeafFilter(); + } - boolean supportsFeature(Feature feature); - - @XMLProperty - String getProxiedName(); - - @XMLProperty(mode = SerializationMode.REFERENCE, xmlname = "ProxyApplication") - Application getProxy(); - - @XMLProperty - String getConnector(); - - @XMLProperty - String getCluster(); - - @XMLProperty - String getType(); - - @XMLProperty - String getIcon(); - - @XMLProperty(mode = SerializationMode.UNQUALIFIED) - Attributes getAttributes(); - - Object getAttributeValue(String name); - - @XMLProperty - boolean isAuthenticationResource(); - - @XMLProperty(mode = SerializationMode.REFERENCE) - Rule getCorrelationRule(); - - @XMLProperty(mode = SerializationMode.REFERENCE) - Rule getCreationRule(); - - @XMLProperty(mode = SerializationMode.REFERENCE) - Rule getManagerCorrelationRule(); - - @XMLProperty(mode = SerializationMode.REFERENCE) - Rule getCustomizationRule(); - - @XMLProperty(mode = SerializationMode.REFERENCE) - Rule getManagedAttributeCustomizationRule(); - - @XMLProperty - String getProfileClass(); - - @XMLProperty - boolean isCaseInsensitive(); - - @XMLProperty(mode = SerializationMode.UNQUALIFIED) - ProvisioningConfig getProvisioningConfig(); - - boolean isManagesOtherApps(); - - @XMLProperty(mode = SerializationMode.LIST) - List

                  Class Summary 
                  InterfaceClass Description
                  IdnRuleUtilIdnRuleUtil
                  Utility class containing methods customers can use within a rules to perform common tasks.