# Prowler Compliance Overview Triggers a Prowler scan for a configured provider, waits for it to complete, then collects compliance overview data summarizing passed, failed, and manual requirements per framework. **Sync Type: Cron** ## Requirements Before configuring this input, you need to: 1. **Generate a Prowler API Key**: - Log in to your Prowler account - Navigate to **Settings > Integrations > API Keys** - Click **Create API Key** - Copy and securely store the generated key (you will only see it once) 2. **Configure a Provider in Prowler**: - Log in to [Prowler Cloud](https://cloud.prowler.com/) - Navigate to **Providers** - Add a provider for your cloud environment if you haven't already - Note the **alias** (the name you assigned to the provider, e.g., "My AWS Account") - This alias will be used in the `Provider Alias` configuration field 3. **API Access**: - Ensure your Prowler account has API access enabled - Confirm you have permissions to trigger scans and retrieve compliance data ## Details On each scheduled run, Monad: 1. **Resolves the provider** — Looks up the provider's UUID by querying `GET /api/v1/providers?filter[alias]={alias}` 2. **Triggers a new scan** — Calls `POST /api/v1/scans` with the resolved provider UUID 3. **Polls scan status** — Calls `GET /api/v1/scans/{id}` every 15 seconds until the scan completes (state becomes "completed") or times out 4. **Fetches compliance data** — Once the scan completes, retrieves compliance overview records filtered to that specific scan using `GET /api/v1/compliance-overviews?filter[scan_id]={id}&page[size]=100&sort=compliance_id` ### State Management If a run is interrupted during polling (e.g., context timeout), the pending scan ID is saved in state. The next run will resume polling that scan instead of triggering a new one, ensuring efficient use of Prowler's scan quota. The scan ID is cleared from state once compliance data has been successfully fetched. ### Pagination The connector fetches compliance data with page-based pagination (max 100 records per page). It stops when all pages have been fetched or when the response contains no pagination metadata. ## Configuration #### Settings | Setting | Type | Required | Description | | ------- | ---- | -------- | ----------- | | Cron | string | Yes | Schedule expression for how often to run (e.g., `0 2 * * *` for daily at 2 AM UTC). | | Provider Alias | string | Yes | Alias of the Prowler provider to trigger a scan for. This is the name you set when adding the provider in the Prowler UI (e.g., "My AWS Account"). | | Use Synthetic Data | boolean | No | Generate synthetic demo data instead of connecting to the real data source. Useful for testing configuration without credentials. | | API Rate Limit | object | No | Optional limit on the connector's outbound request rate to the source API. Leave blank to use the connector's default behavior. See [API Rate Limiting](../../../guides/rate-limiting) for the field format, limits, and how to choose a value. | #### Secrets | Secret | Type | Required | Description | | ------ | ---- | -------- | ----------- | | API Key | string | Yes | Prowler API key for authentication. Generate one in the Prowler UI under Settings > Integrations > API Keys. Use the value directly (the connector will prepend "Api-Key " automatically). | ## Rate Limits | Scope | Limit | Window | Notes | | ----- | ----- | ------ | ----- | | Global | 5 RPS | Per Second | Conservative estimate. Prowler does not publish explicit rate limits in API documentation. | **Headers**: `Authorization: Api-Key ` **Source**: Prowler API documentation (rate limits inferred from API best practices) ## Related Articles - [Prowler Settings and API Keys](https://docs.prowler.com/user-guide/tutorials/prowler-app-api-keys) - [Prowler Compliance Overview API Docs](https://api.prowler.com/api/v1/docs#tag/Compliance-Overview/operation/compliance_overviews_list) - [Prowler Scans API Docs](https://api.prowler.com/api/v1/docs#tag/Scan/operation/scans_list) - [Prowler Providers API Docs](https://api.prowler.com/api/v1/docs#tag/Provider/operation/providers_list) ## Sample Record ```json { "type": "compliance-overviews", "id": "550e8400-e29b-41d4-a716-446655440000", "attributes": { "framework": "CIS", "version": "1.4.0", "requirements_passed": 127, "requirements_failed": 18, "requirements_manual": 5, "total_requirements": 150, } } ``` ## Sync frequency This input runs on a cron schedule (default hourly, `0 * * * *`), which you can configure on the pipeline. See [Input Sync Frequency](../../guides/sync-frequency) for details.