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

# FortiCloud Asset Management

> Connect FortiCloud Asset Management to Triggr with a FortiCloud IAM API user to track Fortinet products, contracts and expiry dates.

Triggr lists, registers, updates and decommissions the Fortinet products on a FortiCloud account, with their contracts, expiry dates and licence files. To work with FortiGates themselves, use [FortiGate Cloud](/integrations/fortinet/fortigate-cloud), [FortiGate](/integrations/fortinet/fortigate) or [FortiManager](/integrations/fortinet/fortimanager).

You need to be the FortiCloud account's primary user or an IAM user with SysAdmin permissions.

## Set up FortiCloud

<Steps>
  <Step title="Create a permission profile">
    In [FortiCloud IAM](https://support.fortinet.com/iam), go to **Permission Profiles > Add New**, set Status to Active, click Add Portal and add Asset Management. Under Resources, choose Read Only, or Read & Write if workflows register, update or decommission products, then click Save.
  </Step>

  <Step title="Add a dedicated API user">
    Go to **Users > Add New > API User**, enter an Email, select the profile in Permission Profile and click Add. A FortiCloud API user can have only one active token, so don't share it with scripts, other tools or [FortiGate Cloud](/integrations/fortinet/fortigate-cloud).
  </Step>

  <Step title="Download the credentials">
    Click Download Credentials, set a password for the ZIP file and click Proceed. The file holds the API user's ID and password; each download resets them, and the previous ones stop working.
  </Step>
</Steps>

See Fortinet's [Adding an API user](https://docs.fortinet.com/document/forticloud/latest/identity-access-management-iam/282341/adding-an-api-user) guide.

## Connect it in Triggr

<Steps>
  <Step title="Open the integration">
    Go to **Integrations > FortiCloud Asset Management** and click **Configure** on the Base Configuration card.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/base-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=bb81acb082055015f91beda7b4876f35" alt="The Base Configuration card with Status Not Configured, Admin Consent Not Required and a Configure button." width="2272" height="330" data-path="images/integrations-common/base-configuration.png" />
    </Frame>
  </Step>

  <Step title="Enter the API user's credentials">
    Enter the IAM API User Password and IAM API User ID from the credentials file, leave OAuth client\_id (optional) empty, then click **Save Configuration**.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/fortinet-forticloud-asset-management/configure.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=2a0de03c631cc582fb24dff40c8da5b1" alt="The FortiCloud Asset Management configuration window with IAM API User Password, IAM API User ID and OAuth client_id (optional) fields, an Allow insecure TLS switch under Advanced, and a Save Configuration button." width="1344" height="1386" data-path="images/fortinet-forticloud-asset-management/configure.png" />
    </Frame>
  </Step>
</Steps>

There's no client mapping; workflows pick a product by serial number. List Products needs `serialNumber` or `expireBefore` in its body; to list everything, use a far-future date such as `{ "expireBefore": "2030-01-01T00:00:00" }`.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Errors mentioning customerapiauth">
    Fortinet rejected the sign-in. Use the API user's ID (not your sign-in email) and the newest credentials file, and check it lists `assetmanagement` as a client ID.
  </Accordion>

  <Accordion title="401 or 403 errors from actions">
    Changes need Read & Write on Asset Management. If the API user is used elsewhere, create a dedicated one for Triggr.
  </Accordion>

  <Accordion title="List Products returns no products">
    The API user only sees the FortiCloud account it was created in.
  </Accordion>

  <Accordion title="Rate limits">
    Fortinet allows 100 calls a minute, 1,000 an hour and 10 failed calls an hour. Run large workflows in smaller batches.
  </Accordion>
</AccordionGroup>


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