# Integrating SailPoint with Prismatic

Prismatic is a cloud-based embedded integration platform built for software companies to design, build, deploy, and manage product integrations for their customers at scale. It combines a low-code Integration Designer with Code-Native (CNI) development in TypeScript, reusable Components and pre-built Connections, and a customer-facing Marketplace into a single unified system. This document provides instructions to configure a new direct connection to a Prismatic source.

> [!NOTE]
>
> To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the [SaaS Release Notes](<https://community.sailpoint.com/release-notes/saas>) page.

## Supported Features

The Prismatic connector supports the following:

### Account Management

- Aggregate Users

### Entitlement Management

- Aggregate Roles

> [!IMPORTANT]
>
> Quick Compliance connectors have the following manual aggregation limits within a 24-hour period:
>
> - **Organization Admins**: Limited to 3 manual account or entitlement aggregations per day per source. This limit is cumulative across all admins in the organization.
> - **Regular Users**: Limited to 1 manual account or entitlement aggregation per day per source.
>
> These limits ensure that individual compliance statuses are kept up to date while maintaining continuous compliance monitoring. If you need to run additional aggregations beyond these limits, contact SailPoint Support.

### Pagination

The Prismatic source uses cursor-based pagination (GraphQL Relay convention) rather than numeric offset paging. Each request returns a `pageInfo` object containing `hasNextPage` and `endCursor`. The connector evaluates `hasNextPage` after every page; if `false`, aggregation terminates. If `true`, the value of `endCursor` is captured into the `$cursor$` variable and passed into the next request to retrieve the subsequent page. The initial page offset is set to `0` and each page returns up to 100 user records (configurable via Page Size).

#### How Pagination Works for This Operation

- **Initial Page Offset:** `0` - starting point for the first request.
- **Page Size:** `100` - number of user records requested per page.
- **Paging steps:**

```text
TERMINATE_IF $response.data.users.pageInfo.hasNextPage$ == false
$cursor$ = $response.data.users.pageInfo.endCursor$
```

## Prerequisites

Before configuring the Prismatic connector, ensure the following requirements are met:

1. Sign in to Prismatic at `https://app.prismatic.io`.
2. Install the **Prism CLI** tool locally (Prismatic's official command-line tool used to generate API tokens).
3. Authenticate the CLI to your Prismatic account by running:

   ```text
   prism login
   ```
4. Generate a **refresh token** (used for long-lived, automated API access) by running:

   ```text
   prism me:token --type refresh
   ```
5. Copy and securely store the refresh token - store it as an environment variable, commonly named `PRISM_REFRESH_TOKEN`.
6. Copy and securely store the following details, required during connector configuration:

   - **Base URL** - `https://app.prismatic.io/api` (GraphQL endpoint)
   - **Refresh Token** - used to exchange for short-lived access tokens at request time - exchanged via `POST https://app.prismatic.io/auth/refresh`.

For more detailed information on obtaining an API key, refer to the [Prismatic API schema queries documentation](<https://prismatic.io/docs/api/schema/queries/>).

> [!NOTE]
>
> The linked document is not maintained by SailPoint and is subject to change without notice.

## Required Permissions

- **Organization Owner** - Super-user who can manage all aspects of an organization (users, customers, integrations, etc.) - can generate refresh/access tokens and fetch all customer/user/entitlement data across the tenant.
