Merge pull request #12 from sailpoint-oss/feature/new-docs-structure

Feature/new docs structure
This commit is contained in:
Philip Ellis
2022-09-01 16:55:58 -04:00
committed by GitHub
231 changed files with 1753 additions and 1110 deletions

View File

@@ -31,4 +31,5 @@ jobs:
- name: Build Developer Community site
run: |
npm install
npm run docusaurus gen-api-docs all
npm run build

6
.gitignore vendored
View File

@@ -19,6 +19,6 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
/docs/arm
/docs/idn
/docs/iiq
/products/arm/api
/products/idn/api
/products/iiq/api

1
docs/README.md Normal file
View File

@@ -0,0 +1 @@
# Developer Relations main

View File

@@ -1,47 +0,0 @@
---
sidebar_position: 1
---
# Tutorial Intro
Let's discover **Docusaurus in less than 5 minutes**.
## Getting Started
Get started by **creating a new site**.
Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
### What you'll need
- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
## Generate a new site
Generate a new Docusaurus site using the **classic template**.
The classic template will automatically be added to your project after you run the command:
```bash
npm init docusaurus@latest my-website classic
```
You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
The command also installs all necessary dependencies you need to run Docusaurus.
## Start your site
Run the development server:
```bash
cd my-website
npm run start
```
The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.

View File

@@ -1 +0,0 @@
Do not remove this folder. It is necessary for the theme to run smoothly.

View File

@@ -6,21 +6,13 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
/** @type {import('@docusaurus/types').Config} */
const config = {
title: 'Developer Community',
tagline: 'Developers are cool',
title: 'SailPoint Developer Community',
url: 'https://developer.sailpoint.com',
baseUrl: '/',
favicon: 'img/SailPoint-Logo-Icon.ico',
onBrokenLinks: 'warn',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.ico',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: 'SailPoint', // Usually your GitHub org/user name.
projectName: 'SailPoint Developer Community', // Usually your repo name.
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans".
onDuplicateRoutes: 'warn',
i18n: {
defaultLocale: 'en',
locales: ['en'],
@@ -53,8 +45,12 @@ const config = {
docs: {
sidebar: {
hideable: true,
autoCollapseCategories: true,
}
autoCollapseCategories: false,
},
},
colorMode: {
defaultMode: "light",
respectPrefersColorScheme: true
},
navbar: {
title: '',
@@ -64,144 +60,159 @@ const config = {
srcDark: 'img/SailPoint-Developer-Community-Inverse-Lockup.png'
},
items: [
{
type: 'dropdown',
label: 'Learn',
position: 'right',
items: [
{
href: 'https://medium.com/sailpointtechblog',
label: 'Engineering Blog',
},
{
href: 'https://community.sailpoint.com/t5/Professional-Certification/ct-p/product-certification-program',
label: 'Certifications',
},
// ... more items
],
},
{
type: 'dropdown',
label: 'IdentityNow',
position: 'right',
position: 'left',
items: [
{to: '/docs/category/identity-now-api-v3', label: 'V3 APIs'},
{to: '/docs/category/identity-now-api-beta', label: 'Beta APIs'},
{
type: 'doc',
docId: 'idn_docs/intro',
label: 'Documentation',
},
// ... more items
{to: "#", label: "API Specifications", className: "section__docs",},
{to: '/idn/api/v3', label: 'V3 APIs', className: "indent"},
{to: '/idn/api/beta', label: 'Beta APIs', className: "indent"},
{to: "#", label: "Documentation", className: "section__docs",},
{to: '/idn/docs/getting-started', label: 'IDN Documentation', className: "indent"}
],
},
{
type: 'dropdown',
label: 'IdentityIQ',
position: 'right',
position: 'left',
items: [
{to: '/docs/category/iiq-api', label: 'APIs'},
{
type: 'doc',
docId: 'idn_docs/intro',
label: 'Documentation',
},
// ... more items
{to: "#", label: "API Specifications", className: "section__docs",},
{to: '/iiq/api', label: 'IIQ APIs', className: "indent"}
],
},
{
type: 'dropdown',
label: 'ARM',
position: 'right',
items: [
{to: '/docs/category/arm-agent-management', label: 'ARM APIs'}
],
position: "left",
label: "Ideas",
to: "https://developer-sailpoint.ideas.aha.io/"
},
{
type: 'dropdown',
label: 'Tools',
position: 'right',
items: [
{
href: 'https://github.com/sailpoint-oss',
label: 'GitHub',
},
// ... more items
],
position: "left",
label: "Discuss",
to: "https://developer.sailpoint.com/discuss"
},
{
type: 'dropdown',
label: 'Community',
position: 'right',
type: "dropdown",
label: "Support",
position: "right",
items: [
{
href: 'https://developer.sailpoint.com/discuss',
label: 'Discuss',
},
{
href: 'https://developer-sailpoint.ideas.aha.io/',
label: 'Ideas',
},
{
href: 'https://community.sailpoint.com/',
label: 'Compass',
},
// ... more items
],
{label: "Compass", href: "https://community.sailpoint.com"},
{label: "Submit Support Ticket", href: "https://support.sailpoint.com"}
]
},
{
type: 'dropdown',
label: 'Support',
position: 'right',
items: [
{
href: 'https://support.sailpoint.com/hc/en-us',
label: 'Customer Support',
},
// ... more items
],
position: "right",
to: "https://github.com/sailpoint-oss",
className: "header-github-link",
"aria-label": "SailPoint Open-source GitHub"
},
],
{
href: "https://medium.com/sailpointtechblog",
className: "header-blog-link",
position: "right",
"aria-label": "SailPoint Engineering Blog",
},
]
},
footer: {
style: 'dark',
style: "light",
links: [
{
title: 'Docs',
title: "IdentityNow",
items: [
{
label: 'Tutorial',
to: '/docs/intro',
label: "Make Your First API Call",
to: "idn/docs/getting-started"
},
],
{
label: "Build A Transform",
to: "idn/docs/transforms"
},
{
label: "Build A SaaS Connector",
to: "idn/docs/saas-connectors"
},
]
},
{
title: 'Community',
title: "IdentityIQ",
items: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
},
{
label: 'Discord',
href: 'https://discordapp.com/invite/docusaurus',
},
{
label: 'Twitter',
href: 'https://twitter.com/docusaurus',
},
],
label: "Build An IdentityIQ Plugin",
to: "https://documentation.sailpoint.com/"
}
]
},
{
title: 'More',
title: "Community",
items: [
{
label: 'GitHub',
href: 'https://github.com/facebook/docusaurus',
label: "Discuss",
to: "https://developer.sailpoint.com/discuss"
},
],
{
label: "Submit an Idea",
to: "https://developer-sailpoint.ideas.aha.io/"
},
{
label: "Contact the DevRel Team",
to: "mailto:developers@sailpoint.com"
}
]
},
{
title: "More",
items: [
{
label: "Engineering Blog",
href: "https://medium.com/sailpointtechblog"
},
{
label: "GitHub",
href: "https://github.com/sailpoint-oss"
},
{
label: "Twitter",
href: "https://twitter.com/sailpoint"
},
]
},
{
title: "Company",
items: [
{
label: "The SailPoint Story",
to: "https://www.sailpoint.com/company/"
},
{
label: "The SailPoint Way",
to: "https://www.sailpoint.com/company/diversity-inclusion-and-belonging/"
},
{
label: "Leadership Team",
to: "https://www.sailpoint.com/company/#h-our-leadership"
},
{
label: "Become A Partner",
to: "https://www.sailpoint.com/partners/become-partner/"
}
]
},
{
title: "Legal",
items: [
{
label: "Terms & Conditions",
to: "https://developet.sailpoint.com"
}
]
}
],
logo: {
alt: 'SailPoint Developer Community Logo',
src: '/img/SailPoint-Developer-Community-Lockup.png',
href: 'https://developer.sailpoint.com',
},
copyright: `Copyright © ${new Date().getFullYear()} SailPoint Technologies Holdings, Inc. All Rights Reserved.`,
},
prism: {
@@ -211,15 +222,34 @@ const config = {
}),
plugins: [
[
"@docusaurus/plugin-content-docs",
{
id: "idn",
path: "products/idn",
routeBasePath: "idn",
sidebarPath: require.resolve("./products/idn/sidebar.js"),
},
],
[
"@docusaurus/plugin-content-docs",
{
id: "iiq",
path: "products/iiq",
routeBasePath: "iiq",
sidebarPath: require.resolve("./products/iiq/sidebar.js"),
},
],
[
"docusaurus-plugin-openapi-docs",
{
id: "openapi",
docsPluginId: "classic",
id: "idn",
docsPluginId: "idn",
config: {
idn_v3: {
specPath: "static/idn-api/sailpoint-api.v3.yaml",
outputDir: "docs/idn/sailpoint-api-v3",
outputDir: "products/idn/api/v3",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
@@ -227,124 +257,29 @@ const config = {
},
idn_beta: {
specPath: "static/idn-api/sailpoint-api.beta.yaml",
outputDir: "docs/idn/sailpoint-api-beta",
outputDir: "products/idn/api/beta",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
}
}
],
[
"docusaurus-plugin-openapi-docs",
{
id: "iiq",
docsPluginId: "iiq",
config: {
iiq: {
specPath: "static/iiq-api/swagger.json",
outputDir: "docs/iiq/iiq-api",
outputDir: "products/iiq/api",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_agent_management: {
specPath: "static/arm-api/swagger-agent-management.json",
outputDir: "docs/arm/swagger-agent-management",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_analysis: {
specPath: "static/arm-api/swagger-analysis.json",
outputDir: "docs/arm/swagger-analysis",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_arm: {
specPath: "static/arm-api/swagger-arm.json",
outputDir: "docs/arm/swagger-arm",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_arm2: {
specPath: "static/arm-api/swagger-arm2.json",
outputDir: "docs/arm/swagger-arm2",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_authentication: {
specPath: "static/arm-api/swagger-authentication.json",
outputDir: "docs/arm/swagger-authentication",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_cloud_agent: {
specPath: "static/arm-api/swagger-cloud-agent.json",
outputDir: "docs/arm/swagger-cloud-agent",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_jobs: {
specPath: "static/arm-api/swagger-jobs.json",
outputDir: "docs/arm/swagger-jobs",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_logging: {
specPath: "static/arm-api/swagger-logging.json",
outputDir: "docs/arm/swagger-logging",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_provisioning: {
specPath: "static/arm-api/swagger-provisioning.json",
outputDir: "docs/arm/swagger-provisioning",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_public: {
specPath: "static/arm-api/swagger-public.json",
outputDir: "docs/arm/swagger-public",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_rulebook: {
specPath: "static/arm-api/swagger-rulebook.json",
outputDir: "docs/arm/swagger-rulebook",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_scheduling: {
specPath: "static/arm-api/swagger-scheduling.json",
outputDir: "docs/arm/swagger-scheduling",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
},
arm_utilization_tracking: {
specPath: "static/arm-api/swagger-utilization-tracking.json",
outputDir: "docs/arm/swagger-utilization-tracking",
sidebarOptions: {
groupPathsBy: "tag",
categoryLinkSource: "tag"
}
}
}
}
]

61
package-lock.json generated
View File

@@ -12,7 +12,7 @@
"@docusaurus/preset-classic": "2.0.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.1.1",
"docusaurus-plugin-openapi-docs": "^1.1.6",
"docusaurus-plugin-openapi-docs": "github:philip-ellis-sp/docusaurus-plugin-openapi-docs",
"docusaurus-theme-openapi-docs": "^1.1.6",
"prism-react-renderer": "^1.3.1",
"react": "^17.0.2",
@@ -2956,9 +2956,9 @@
}
},
"node_modules/@redocly/openapi-core": {
"version": "1.0.0-beta.107",
"resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.107.tgz",
"integrity": "sha512-Hj/DQkPZiaa0L5s4Wu4mKYVkzjKccFudI350scUQ0wykNoXXaYf4Ny82UJdAH4JGfe7Uf5xRoNrpRmeMekj5Uw==",
"version": "1.0.0-beta.108",
"resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.108.tgz",
"integrity": "sha512-4Lq7KB+XiBvVzpaY/M0a8qog/Zr8kGrvJbRW2z7Sk2Zpc/m+8LTuZbRh15eMoneVc13M9qbHFIRh3PG18g3Tng==",
"dependencies": {
"@redocly/ajv": "^8.6.5",
"@types/node": "^14.11.8",
@@ -5749,8 +5749,8 @@
},
"node_modules/docusaurus-plugin-openapi-docs": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-1.1.8.tgz",
"integrity": "sha512-A4xEN0dy9WCZavAvAoucEhlklWp8wI57bTlSytvWJWjsYa1qsxgpzOx9fLyUhzodI8XJmGJVHmrQgTi/TdMPiw==",
"resolved": "git+ssh://git@github.com/philip-ellis-sp/docusaurus-plugin-openapi-docs.git#97f436d7433891365e758b92f274b03ca1e2738b",
"license": "MIT",
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^9.0.9",
"@docusaurus/mdx-loader": "2.0.1",
@@ -5772,7 +5772,8 @@
"slugify": "^1.6.5",
"swagger2openapi": "^7.0.8",
"url-template": "^3.0.0",
"webpack": "^5.61.0"
"webpack": "^5.61.0",
"xml-formatter": "^2.6.1"
},
"engines": {
"node": ">=14"
@@ -14857,6 +14858,17 @@
"node": ">=8"
}
},
"node_modules/xml-formatter": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-2.6.1.tgz",
"integrity": "sha512-dOiGwoqm8y22QdTNI7A+N03tyVfBlQ0/oehAzxIZtwnFAHGeSlrfjF73YQvzSsa/Kt6+YZasKsrdu6OIpuBggw==",
"dependencies": {
"xml-parser-xo": "^3.2.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/xml-js": {
"version": "1.6.11",
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
@@ -14868,6 +14880,14 @@
"xml-js": "bin/cli.js"
}
},
"node_modules/xml-parser-xo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-3.2.0.tgz",
"integrity": "sha512-8LRU6cq+d7mVsoDaMhnkkt3CTtAs4153p49fRo+HIB3I1FD1o5CeXRjRH29sQevIfVJIcPjKSsPU/+Ujhq09Rg==",
"engines": {
"node": ">= 10"
}
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -17097,9 +17117,9 @@
}
},
"@redocly/openapi-core": {
"version": "1.0.0-beta.107",
"resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.107.tgz",
"integrity": "sha512-Hj/DQkPZiaa0L5s4Wu4mKYVkzjKccFudI350scUQ0wykNoXXaYf4Ny82UJdAH4JGfe7Uf5xRoNrpRmeMekj5Uw==",
"version": "1.0.0-beta.108",
"resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.108.tgz",
"integrity": "sha512-4Lq7KB+XiBvVzpaY/M0a8qog/Zr8kGrvJbRW2z7Sk2Zpc/m+8LTuZbRh15eMoneVc13M9qbHFIRh3PG18g3Tng==",
"requires": {
"@redocly/ajv": "^8.6.5",
"@types/node": "^14.11.8",
@@ -19154,9 +19174,8 @@
}
},
"docusaurus-plugin-openapi-docs": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-1.1.8.tgz",
"integrity": "sha512-A4xEN0dy9WCZavAvAoucEhlklWp8wI57bTlSytvWJWjsYa1qsxgpzOx9fLyUhzodI8XJmGJVHmrQgTi/TdMPiw==",
"version": "git+ssh://git@github.com/philip-ellis-sp/docusaurus-plugin-openapi-docs.git#97f436d7433891365e758b92f274b03ca1e2738b",
"from": "docusaurus-plugin-openapi-docs@github:philip-ellis-sp/docusaurus-plugin-openapi-docs",
"requires": {
"@apidevtools/json-schema-ref-parser": "^9.0.9",
"@docusaurus/mdx-loader": "2.0.1",
@@ -19178,7 +19197,8 @@
"slugify": "^1.6.5",
"swagger2openapi": "^7.0.8",
"url-template": "^3.0.0",
"webpack": "^5.61.0"
"webpack": "^5.61.0",
"xml-formatter": "^2.6.1"
},
"dependencies": {
"fs-extra": {
@@ -25627,6 +25647,14 @@
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
"integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
},
"xml-formatter": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-2.6.1.tgz",
"integrity": "sha512-dOiGwoqm8y22QdTNI7A+N03tyVfBlQ0/oehAzxIZtwnFAHGeSlrfjF73YQvzSsa/Kt6+YZasKsrdu6OIpuBggw==",
"requires": {
"xml-parser-xo": "^3.2.0"
}
},
"xml-js": {
"version": "1.6.11",
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
@@ -25635,6 +25663,11 @@
"sax": "^1.2.4"
}
},
"xml-parser-xo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-3.2.0.tgz",
"integrity": "sha512-8LRU6cq+d7mVsoDaMhnkkt3CTtAs4153p49fRo+HIB3I1FD1o5CeXRjRH29sQevIfVJIcPjKSsPU/+Ujhq09Rg=="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",

View File

@@ -22,7 +22,7 @@
"@docusaurus/preset-classic": "2.0.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.1.1",
"docusaurus-plugin-openapi-docs": "^1.1.6",
"docusaurus-plugin-openapi-docs": "github:philip-ellis-sp/docusaurus-plugin-openapi-docs",
"docusaurus-theme-openapi-docs": "^1.1.6",
"prism-react-renderer": "^1.3.1",
"react": "^17.0.2",

View File

@@ -1,3 +1,7 @@
---
id: authentication
slug: /docs/getting-started/authentication
---
# Authentication
## Quick Start

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

@@ -1,3 +1,9 @@
---
id: 01-getting-started
slug: /docs/getting-started
title: Getting Started
---
# Getting Started with SailPoint APIs
## Finding your Org/Tenant Name

View File

@@ -1,3 +1,7 @@
---
id: standard-collection-parameters
slug: /docs/getting-started/standard-collection-parameters
---
# Standard Collection Parameters
Many collection endpoints in the IdentityNow APIs support a generic syntax for paginating, filtering

View File

@@ -1,11 +1,9 @@
---
id: access-request-dynamic-approval-event-trigger
title: Access Request Dynamic Approval Event Trigger
sidebar_label: Access Request Dynamic Approval Event Trigger
sidebar-position: 2
id: access-request-dynamic-approval
slug: /docs/event-triggers/access-request-dynamic-approval
---
# Access Request Dynamic Approval Event Trigger
# Access Request Dynamic Approval
## Event context
@@ -29,9 +27,9 @@ This trigger can be used to develop logic outside of IdentityNows out-of-the-
## Configuration
This is a `REQUEST_RESPONSE` type trigger. For general information on how to respond to a `REQUEST_RESPONSE` type trigger, see [responding to a request response type trigger](../event-triggers-responding-to-a-request-response-trigger.md). This trigger intercepts newly submitted access requests and allows the subscribing service to add one additional identity or governance group as the last step in the approver list for the access request.
This is a `REQUEST_RESPONSE` type trigger . For general information on how to respond to a `REQUEST_RESPONSE` type trigger, see [responding to a request response type trigger](./getting-started/responding-to-a-request-response-trigger.md) . This trigger intercepts newly submitted access requests and allows the subscribing service to add one additional identity or governance group as the last step in the approver list for the access request.
The subscribing service will receive the following input from the trigger service. The input schema can be found in the [API specification](https://developer.sailpoint.com/apis/beta/#section/Access-Request-Dynamic-Approver-Event-Trigger-Input):
The subscribing service will receive the following input from the trigger service . The input schema can be found in the [API specification](https://developer.sailpoint.com/apis/beta/#section/Access-Request-Dynamic-Approver-Event-Trigger-Input):
```json
{
@@ -59,7 +57,7 @@ The subscribing service will receive the following input from the trigger servic
}
```
The subscribing service can use this information to make a decision on whether to add additional approvers to the access request. The output schema can be found in the [API specification](https://developer.sailpoint.com/apis/beta/#section/Access-Request-Dynamic-Approver-Event-Trigger-Output). To add an identity to the approver list, the subscribing service should respond to the event trigger with the following payload:
The subscribing service can use this information to make a decision on whether to add additional approvers to the access request . The output schema can be found in the [API specification](https://developer.sailpoint.com/apis/beta/#section/Access-Request-Dynamic-Approver-Event-Trigger-Output) . To add an identity to the approver list, the subscribing service should respond to the event trigger with the following payload:
```json
{

View File

@@ -1,11 +1,9 @@
---
id: access-request-postapproval-trigger
title: Access Request Postapproval Trigger
sidebar_label: Access Request Postapproval Trigger
sidebar-position: 3
id: access-request-postapproval
slug: /docs/event-triggers/access-request-postapproval
---
# Access Request Postapproval Trigger
# Access Request Postapproval
## Event context

View File

@@ -1,11 +1,9 @@
---
id: access-request-preapproval-event-trigger
title: Access Request Preapproval Event Trigger
sidebar_label: Access Request Preapproval Event Trigger
sidebar-position: 4
id: access-request-preapproval
slug: /docs/event-triggers/access-request-preapproval
---
# Access Request Preapproval Event Trigger
# Access Request Preapproval
## Event context

View File

@@ -1,8 +1,6 @@
---
id: account-aggregation-completed
title: Account Aggregation Completed
sidebar_label: Account Aggregation Completed
sidebar-position: 5
slug: /docs/event-triggers/account-aggregation-completed
---
# Account Aggregation Completed

View File

@@ -1,11 +1,9 @@
---
id: identity-attribute-changed-event-trigger
title: Identity Attribute Changed Event Trigger
sidebar_label: Identity Attribute Changed Event Trigger
sidebar-position: 6
id: identity-attribute-changed
slug: /docs/event-triggers/identity-attribute-changed
---
# Identity Attribute Changed Event Trigger
# Identity Attribute Changed
## Event context

View File

@@ -1,11 +1,9 @@
---
id: identity-created-event-trigger
title: Identity Created Event Trigger
sidebar_label: Identity Created Event Trigger
sidebar-position: 7
id: identity-created
slug: /docs/event-triggers/identity-created
---
# Identity Created Event Trigger
# Identity Created
## Event context

View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -1,11 +1,9 @@
---
id: provisioning-action-completed-trigger
title: Provisioning Action Completed Trigger
sidebar_label: Provisioning Action Completed Trigger
sidebar-position: 8
id: provisioning-action-completed
slug: /docs/event-triggers/provisioning-action-completed
---
# Provisioning Action Completed Trigger
# Provisioning Action Completed
## Event context

View File

@@ -1,8 +1,6 @@
---
id: saved-search-completed
title: Saved Search Completed
sidebar_label: Saved Search Completed
sidebar-position: 9
slug: /docs/event-triggers/saved-search-completed
---
# Saved Search Completed

View File

@@ -1,10 +1,9 @@
---
id: source-created-trigger
title: Source Created Trigger
sidebar_label: Source Created Trigger
id: source-created
slug: /docs/event-triggers/source-created
---
# Source Created Trigger
# Source Created
## Event context

View File

@@ -1,10 +1,9 @@
---
id: source-deleted-trigger
title: Source Deleted Trigger
sidebar_label: Source Deleted Trigger
id: source-deleted
slug: /docs/event-triggers/source-deleted
---
# Source Deleted Trigger
# Source Deleted
## Event context

View File

@@ -1,10 +1,9 @@
---
id: source-updated-trigger
title: Source Updated Trigger
sidebar_label: Source Updated Trigger
id: source-updated
slug: /docs/event-triggers/source-updated
---
# Source Updated Trigger
# Source Updated
## Event context

View File

@@ -1,11 +1,9 @@
---
id: va-cluster-status-change-event-trigger
title: VA Cluster Status Change Event
sidebar_label: VA Cluster Status Change Event
sidebar-position: 10
id: va-cluster-status-change
slug: /docs/event-triggers/va-cluster-status-change
---
# VA Cluster Status Change Event
# VA Cluster Status Change
## Event context

View File

@@ -1,10 +1,9 @@
---
id: identity-deleted-event-trigger
title: Identity Deleted Event Trigger
sidebar_label: Identity Deleted Event Trigger
id: identity-deleted
slug: /docs/event-triggers/early-access/va-cluster-status-change
---
# Identity Deleted Event Trigger
# Identity Deleted
## Event context

View File

@@ -1,10 +1,9 @@
---
id: source-account-created-trigger
title: Source Account Created Trigger
sidebar_label: Source Account Created Trigger
id: source-account-created
slug: /docs/event-triggers/early-access/source-account-created
---
# Source Account Created Trigger
# Source Account Created
## Event context

View File

@@ -1,10 +1,9 @@
---
id: source-account-deleted-trigger
title: Source Account Deleted Trigger
sidebar_label: Source Account Deleted Trigger
id: source-account-deleted
slug: /docs/event-triggers/early-access/source-account-deleted
---
# Source Account Deleted Trigger
# Source Account Deleted
## Event context

View File

@@ -1,10 +1,9 @@
---
id: source-account-updated-trigger
title: Source Account Updated Trigger
sidebar_label: Source Account Updated Trigger
id: source-account-updated
slug: /docs/event-triggers/early-access/source-account-updated
---
# Source Account Updated Trigger
# Source Account Updated
## Event context

View File

@@ -1,11 +1,10 @@
---
id: event-triggers-overview
title: Overview
sidebar_label: Overview
sidebar_position: 1
id: event-triggers
slug: /docs/event-triggers/getting-started
title: Event Triggers
---
# Overview
# Getting Started
## What are triggers

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-filtering-events
title: Filtering Events
sidebar_label: Filtering Events
sidebar_position: 5
id: filtering-events
slug: /docs/event-triggers/getting-started/filtering-events
---
# Filtering Events

View File

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

Before

Width:  |  Height:  |  Size: 365 KiB

After

Width:  |  Height:  |  Size: 365 KiB

View File

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 410 KiB

View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 192 KiB

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-preparing-a-subscriber-service
title: Preparing a Subscriber Service
sidebar_label: Preparing a Subscriber Service
sidebar_position: 3
id: preparing-a-subscriber-service
slug: /docs/event-triggers/getting-started/preparing-a-subscriber-service
---
# Preparing a Subscriber Service

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-responding-to-request-response
title: Responding to a Request Response Trigger
sidebar_label: Responding to a Request Response Trigger
sidebar_position: 8
id: responding-to-request-response
slug: /docs/event-triggers/getting-started/responding-to-request-response
---
# Responding to a Request Response Trigger

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-subscribing-to-a-trigger
title: Subscribing to a Trigger
sidebar_label: Subscribing to a Trigger
sidebar_position: 4
id: subscribing-to-a-trigger
slug: /docs/event-triggers/getting-started/subscribing-to-a-trigger
---
# Subscribing to a Trigger

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-testing-triggers
title: Testing Triggers
sidebar_label: Testing Triggers
sidebar_position: 6
id: testing-triggers
slug: /docs/event-triggers/getting-started/testing-triggers
---
# Testing Triggers

View File

@@ -1,8 +1,6 @@
---
id: event-triggers-trigger-types
title: Trigger Types
sidebar_label: Trigger Types
sidebar_position: 2
id: trigger-types
slug: /docs/event-triggers/getting-started/trigger-types
---
# Trigger Types

View File

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 238 KiB

View File

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

@@ -1,3 +1,4 @@
# Overview
This is a guide on using the SailPoint SaaS Configuration APIs in order to import and export configurations from the SailPoint SaaS system. This is intended to be used to get configurations in bulk in support of environmental promotion, go-live, or tenant-to-tenant configuration management processes and pipelines.

View File

@@ -0,0 +1,6 @@
# SaaS Configuration
This is a guide on using the SailPoint SaaS Configuration APIs in order to import and export configurations from the SailPoint SaaS system. This is intended to be used to get configurations in bulk in support of environmental promotion, go-live, or tenant-to-tenant configuration management processes and pipelines.
For more details around how to manage configurations, refer to [SailPoint SaaS Change Management and Deployment Best Practices](https://community.sailpoint.com/t5/IdentityNow-Articles/SailPoint-SaaS-Change-Management-and-Deployment-Best-Practices/ta-p/189871).

View File

@@ -1,3 +1,8 @@
---
id: cli-common-commands
slug: /docs/saas-connectivity/getting-started/cli-common-commands
sidebar_position: 3
---
# Common CLI/SDK Commands
- **Development**

View File

@@ -1,3 +1,8 @@
---
id: cli
slug: /docs/saas-connectivity/getting-started/cli
sidebar_position: 1
---
# Getting Started with the CLI
> 📘 **Currently in Beta**

View File

@@ -1,4 +1,9 @@
# Test, Build and Deploy Using the CLI
---
id: cli-test-build-deploy
slug: /docs/saas-connectivity/getting-started/cli-test-build-deploy
sidebar_position: 2
---
# Test, Build, and Deploy Using the CLI
## Testing Your Connector
You can use the following Postman Collection file to locally run tests for each of the commands.

View File

@@ -1,3 +1,7 @@
---
id: account-create
slug: /docs/saas-connectivity/commands/account-create
---
# Account Create
| Input/Output | Data Type |
@@ -50,7 +54,7 @@ The account create command accepts a provisioning plan from IDN and creates the
You can create the provisioning plan through the ```accountCreateTemplate``` in the ```connector-spec.json``` file, and you can also modify its behavior in IDN using the create profile screen:
![Account Create](../../img/custom_connectors/commands/account_create/account_create_idn.png)
![Account Create](./img/account_create_idn.png)
Create Profile provides the instructions for the provisioning plan and determines which attributes are sent to your connector code. For example, if all the account attributes in the preceding image are configured for a value, then the following JSON payload is sent to your connector:
@@ -171,7 +175,7 @@ There are two ways you can generate random passwords:
1. Use the “Create Password” generator in Create Profile. (This can also be configured in the ```accountCreateTemplate```)
![Create Password](../../img/custom_connectors/commands/account_create/create_password_idn.png)
![Create Password](./img/create_password_idn.png)
2. Disable the 'password' field.
@@ -205,14 +209,14 @@ async createAccount(input: StdAccountCreateInput): Promise<AirtableAccount> {
One way to test whether the account create code works in IDN is to set up an access profile and role that grants members an entitlement from the connectors target source. Start by creating an access profile that grants one or more entitlements from the target source.
![Testing 1](../../img/custom_connectors/commands/account_create/testing1.png)
![Testing 1](./img/testing1.png)
Next, create a role that uses the access profile created in the previous step.
![Testing 2](../../img/custom_connectors/commands/account_create/testing2.png)
![Testing 2](./img/testing2.png)
Modify the role membership to use Identity List and select one or more users that do not have accounts in the target source yet.
![Testing 3](../../img/custom_connectors/commands/account_create/testing3.png)
![Testing 3](./img/testing3.png)
Click the Update button in the upper right corner to initiate the account provisioning process. Doing so creates the account(s) on the target source once the process is complete.

View File

@@ -1,3 +1,7 @@
---
id: account-delete
slug: /docs/saas-connectivity/commands/account-delete
---
# Account Delete
| Input/Output | Data Type |

View File

@@ -1,3 +1,7 @@
---
id: account-discover
slug: /docs/saas-connectivity/commands/account-discover
---
# Account Discover Schema
| Input/Output | Data Type |
@@ -332,16 +336,16 @@ There are many properties in this payload, so you may want to remove some, but i
## Test in IdentityNow
To test the account discover schema command in IDN, ensure that you upload your latest connector code and create a new source in IDN. After you configure and test your source connection, go to the Account Schema page. You will see an empty schema.
![Discover Schema 1](../../img/custom_connectors/commands/discover_schema/discover_schema_idn1.png)
![Discover Schema 1](./img/discover_schema_idn1.png)
To discover the schema for this source, click the Options dropdown in the upper right and select Discover Schema.
![Discover Schema 2](../../img/custom_connectors/commands/discover_schema/discover_schema_idn2.png)
![Discover Schema 2](./img/discover_schema_idn2.png)
IDN then asks you to assign attributes to Account ID and 'Account Name.'
![Discover Schema 3](../../img/custom_connectors/commands/discover_schema/discover_schema_idn3.png)
![Discover Schema 3](./img/discover_schema_idn3.png)
Save the schema. You now have a populated account schema. A user of this source must provide further details, like descriptions and identifying which attributes are entitlements.
![Discover Schema 4](../../img/custom_connectors/commands/discover_schema/discover_schema_idn4.png)
![Discover Schema 4](./img/discover_schema_idn4.png)

View File

@@ -1,3 +1,7 @@
---
id: account-enable
slug: /docs/saas-connectivity/commands/account-enable
---
# Account Enable/Disable
| Input/Output | Data Type |

View File

@@ -1,3 +1,7 @@
---
id: account-list
slug: /docs/saas-connectivity/commands/account-list
---
# Account List
| Input/Output | Data Type |
@@ -30,7 +34,7 @@
## Description
The account list command aggregates all accounts from the target source into IdentityNow. IDN calls this command during a manual or scheduled account aggregation.
![Account List](../../img/custom_connectors/commands/account_list/account_list_idn.png)
![Account List](./img/account_list_idn.png)
## Implementation
For you to be able to implement this endpoint, the web service must expose an API for listing user accounts and entitlements (i.e. roles or groups). Sometimes, a target sources API has a single endpoint providing all the attributes and entitlements a source account contains. However, some APIs may break these attributes and entitlements into separate API endpoints, requiring you to make multiple calls to gather all an account's necessary data. The following code from [airtable.ts](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/src/airtable.ts) shows the necessary steps to create a complete account from the various endpoints the API offers:

View File

@@ -1,3 +1,7 @@
---
id: account-read
slug: /docs/saas-connectivity/commands/account-read
---
# Account Read
| Input/Output | Data Type |
@@ -37,7 +41,7 @@
## Description
The account read command aggregates a single account from the target source into IdentityNow. IDN can call this command during a “one-off” account refresh, which you can trigger by aggregating an individual account in IDN.
![Account Read](../../img/custom_connectors/commands/account_read/account_read_idn.png)
![Account Read](./img/account_read_idn.png)
## Implementation
Implementation of account read is similar to account list's implementation, except the code only needs to get one account, not all the accounts. The following snippet is from [airtable.ts](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/src/airtable.ts):

View File

@@ -1,3 +1,7 @@
---
id: account-unlock
slug: /docs/saas-connectivity/commands/account-unlock
---
# Account Unlock
| Input/Output | Data Type |

View File

@@ -1,3 +1,7 @@
---
id: account-update
slug: /docs/saas-connectivity/commands/account-update
---
# Account Update
| Input/Output | Data Type |

View File

@@ -1,3 +1,7 @@
---
id: entitlement-list
slug: /docs/saas-connectivity/commands/entitlement-list
---
# Entitlement List
| Input/Output | Data Type |
@@ -30,7 +34,7 @@
The entitlement list command triggers during a manual or scheduled entitlement aggregation operation within IDN. This operation gathers a list of all entitlements available on the target source, usually multi-valued entitlements like groups or roles. This operation provides IDN administrators with a list of entitlements available on the source so they can create access profiles and roles accordingly, and it provides IDN with more details about the entitlements. The entitlement schemas minimum requirements are name and ID, but you can add other values, such as created date, updated date, status, etc.
![Discover Schema 4](../../img/custom_connectors/commands/entitlement_list/entitlement_list_idn.png)
![Discover Schema 4](./img/entitlement_list_idn.png)
## Defining the Schema
The entitlement schema is defined in the [connector-spec.json](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/connector-spec.json) file. Currently, only the multi-valued “group” type is supported. The following values are the minimum requirements, but you can add more attributes.

View File

@@ -1,3 +1,7 @@
---
id: entitlement-read
slug: /docs/saas-connectivity/commands/entitlement-read
---
# Entitlement Read
>📘 At this time Entitlement Read is not triggered from IDN for any specific workflow and as such it is not necessary to implement this in order to have a fully functional connector.

View File

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -1,3 +1,7 @@
---
id: test-connection
slug: /docs/saas-connectivity/commands/test-connection
---
# Test Connection
| Input/Output | Data Type |
@@ -15,7 +19,7 @@ The test connection command ensures the connector can communicate with the targe
Use Test Connection in the IDN UI after an admin has finished entering configuration information for a new instance of the connector.
![Test Connection](../../img/custom_connectors/commands/test_connection/test_command_idn.png)
![Test Connection](./img/test_command_idn.png)
## Implementation
In [index.ts](https://github.com/sailpoint-oss/airtable-example-connector/blob/main/src/index.ts), add the test connection function handler to your connector. Within this function, send a simple request to your web service to ensure the connection works. The web service this connector targets has a JavaScript SDK, so define your own function like the following example to test the connection:

Some files were not shown because too many files have changed in this diff Show More