> ## Documentation Index
> Fetch the complete documentation index at: https://docs.serval.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Flexera One

> Connect Flexera One with service-account OAuth and read cloud IT Asset Management inventory from Serval workflows.

## About this integration

The Flexera One integration connects to cloud IT Asset Management (ITAM) with service-account OAuth. Choose your region and organization once; Serval stores the credentials and obtains access tokens for workflow requests.

The **List Flexera One Inventory Page** starter reads one bounded page of inventory from the connected organization. This integration supports cloud inventory reads.

To keep a Serval Database up to date, add a workflow that maps the returned records to your database and processes each page, then configure its schedule.

## Prepare your Flexera One account

Ask your Flexera administrator for:

* A service account and its API client, with permission to read inventory in the intended Flexera organization. Follow Flexera's [service-account authentication guide](https://developer.flexera.com/docs/page/authentication#service-account-api-authentication).
* The client's **Client ID** and **Client Secret**.
* Your Flexera **organization ID**, visible in the Flexera One URL after `/orgs/`.
* Your organization's region: North America, Europe, or Asia Pacific.

Enter the secret in Serval's credential field. Keep it out of workflow code, token request body parameters, and chat messages.

## Connect Flexera One in Serval

Open **Integrations**, search for **Flexera One**, and choose **Connect**. Complete these fields:

| Field | Value |
| - | - |
| Organization ID | The number after `/orgs/` in your Flexera One URL |
| Region | North America, Europe, or Asia Pacific |
| Client ID | Your service-account API client's ID |
| Client secret | Your service-account API client's secret |

Serval selects the matching regional API and token URLs. You don't need to enter URLs, scopes, or custom headers. The connection uses the `client_credentials` grant and renews access tokens when needed.

Use the Catalyst help control beside **Connect** for setup assistance. Keep the client secret in its credential field.

Flexera also supports personal API refresh tokens. This connection requires a service-account client; a personal refresh token isn't a client secret. See [Flexera authentication](https://developer.flexera.com/docs/page/authentication) for the distinction.

Save the connection. The **Configured** badge means credentials are stored. Run the inventory access healthcheck or the inventory starter with a page size of `1` to check authentication and inventory read permission.

To rotate a secret, open the connected app's **API Integration** settings and replace it. Leaving a masked secret unchanged preserves the saved value. Changing the client ID requires entering its client secret. To use another region or organization, add a new Flexera One connection and select it in the affected workflows.

## Run the inventory starter

Find **List Flexera One Inventory Page** in the Flexera One workflow catalog, or ask Catalyst:

> Install the catalog workflow `list-flexera-one-inventory-page` with my Flexera One connection and prepare it for review.

Review the draft and publish the change set before running it. The workflow uses the organization saved in your Flexera One connection.

Start with these inputs:

| Input | Value |
| - | - |
| `offset` | `0` for the first page |
| `limit` | `100` by default; use `1` for a small connection check |

The workflow calls the native **Flexera One API request** action. It accepts up to 1,000 records per request and returns Flexera's page, including `values`, `offset`, `limit`, `total`, and `nextPage` when another page is available. The starter makes one request per run, so it doesn't collect a large inventory into a single workflow result.

For a paged import, process `values` and read the next offset from `nextPage`, keeping the same organization and page size. Stop when `nextPage` is absent, null, or empty. Only mark an import complete after every page succeeds. Use the Flexera organization ID and `computerId` together to match inventory devices in your database; confirm the identifier is present before writing a record.

An HTTP 200 response with an empty `values` array can be valid. It confirms API access but doesn't establish that your expected inventory is present. Compare a known device and the total count with Flexera before enabling a scheduled import.

Database mapping and scheduled imports require a workflow that processes each page. License allocation, reclamation, and other ITAM endpoints aren't included in this integration. See the [Flexera ITAM API reference](https://developer.flexera.com/docs/api/fnms/v1) for the provider's wider API.

## Troubleshooting

| Result | What to check |
| - | - |
| Token exchange fails or the API returns 401 | Confirm the selected region and organization, and that the saved credentials belong to a service-account client. Rotate an invalid secret in Flexera and replace it in Serval. |
| API returns 403 | Ask the Flexera administrator to check the service account's access to the organization and its ITAM inventory permissions. |
| API returns 404 | Check the organization ID and region. Confirm the account has Flexera One ITAM API access. |
| API returns 429 | Reduce request frequency and retry after the interval Flexera allows. Keep progress at the last successfully processed page. See [Flexera rate limits](https://developer.flexera.com/docs/page/rate-limiting). |
| Workflow can't find the connection | Select the intended Flexera One connection in the workflow's team. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.