mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-19 02:21:52 +00:00
208 lines
6.2 KiB
Plaintext
208 lines
6.2 KiB
Plaintext
---
|
|
title: "List Scans"
|
|
api: "GET /api/v1/scans"
|
|
description: "Retrieve a list of all security scans with filtering options."
|
|
---
|
|
|
|
Retrieve all security scans performed across your cloud providers. Scans contain the results of security checks run against your cloud infrastructure.
|
|
|
|
## Use Cases
|
|
|
|
- **Scan History**: View all scans performed on your infrastructure
|
|
- **Compliance Tracking**: Monitor scan completion for compliance requirements
|
|
- **Performance Monitoring**: Track scan duration and success rates
|
|
- **Audit Trail**: Maintain records of security assessments
|
|
- **Troubleshooting**: Investigate failed or stuck scans
|
|
|
|
## Query Parameters
|
|
|
|
### Filtering Options
|
|
|
|
**By Provider:**
|
|
- `filter[provider_id]`, `filter[provider_id__in]` - Filter by provider UUID(s)
|
|
|
|
**By Status:**
|
|
- `filter[state]`, `filter[state__in]` - Filter by scan state:
|
|
- `available` - Available
|
|
- `scheduled` - Scheduled but not started
|
|
- `executing` - Scan currently in progress
|
|
- `completed` - Scan finished successfully
|
|
- `failed` - Scan encountered errors
|
|
- `cancelled` - Scan was cancelled
|
|
|
|
**By Date:**
|
|
- `filter[inserted_at]`, `filter[inserted_at__date]` - Filter by scan date
|
|
- `filter[inserted_at__gte]`, `filter[inserted_at__lte]` - Filter by date range
|
|
|
|
### Pagination
|
|
|
|
- `page[number]` - Page number to retrieve (default: 1)
|
|
- `page[size]` - Number of results per page (default: 20, max: 100)
|
|
|
|
### Sorting
|
|
|
|
- `sort` - Field to sort by:
|
|
- `inserted_at` - Oldest first
|
|
- `-inserted_at` - Newest first (default)
|
|
- `completed_at` - By completion time
|
|
- `-completed_at` - By completion time (descending)
|
|
|
|
### Field Selection
|
|
|
|
- `fields[scans]` - Specify which fields to return
|
|
|
|
## Example Requests
|
|
|
|
**Get recent completed scans:**
|
|
```bash
|
|
curl -X GET "https://api.prowler.com/api/v1/scans?filter[state]=completed&sort=-completed_at&page[size]=10" \
|
|
-H "Authorization: Bearer YOUR_API_KEY" \
|
|
-H "Content-Type: application/vnd.api+json"
|
|
```
|
|
|
|
**Get scans for specific provider:**
|
|
```bash
|
|
curl -X GET "https://api.prowler.com/api/v1/scans?filter[provider_id]=provider-uuid&page[size]=20" \
|
|
-H "Authorization: Bearer YOUR_API_KEY" \
|
|
-H "Content-Type: application/vnd.api+json"
|
|
```
|
|
|
|
**Get failed scans from last week:**
|
|
```bash
|
|
curl -X GET "https://api.prowler.com/api/v1/scans?filter[state]=failed&filter[inserted_at__gte]=2024-01-08" \
|
|
-H "Authorization: Bearer YOUR_API_KEY" \
|
|
-H "Content-Type: application/vnd.api+json"
|
|
```
|
|
|
|
## Response
|
|
|
|
### Success Response (200 OK)
|
|
|
|
Returns a paginated list of scans:
|
|
|
|
```json
|
|
{
|
|
"data": [
|
|
{
|
|
"type": "scans",
|
|
"id": "scan-uuid",
|
|
"attributes": {
|
|
"status": "completed",
|
|
"unique_resource_count": 1247,
|
|
"duration": 342.5,
|
|
"started_at": "2024-01-15T10:00:00Z",
|
|
"completed_at": "2024-01-15T10:05:42Z",
|
|
"inserted_at": "2024-01-15T10:00:00Z",
|
|
"updated_at": "2024-01-15T10:05:42Z",
|
|
"trigger": "manual",
|
|
"prowler_version": "4.0.0",
|
|
"summary": {
|
|
"total_checks": 350,
|
|
"passed_checks": 245,
|
|
"failed_checks": 85,
|
|
"manual_checks": 20,
|
|
"total_findings": 1152,
|
|
"failed_findings": 342,
|
|
"passed_findings": 810,
|
|
"severities": {
|
|
"critical": 12,
|
|
"high": 48,
|
|
"medium": 132,
|
|
"low": 98,
|
|
"informational": 52
|
|
}
|
|
},
|
|
"metadata": {
|
|
"regions_scanned": ["us-east-1", "us-west-2", "eu-west-1"],
|
|
"services_scanned": 45,
|
|
"checks_skipped": 0,
|
|
"error_count": 0
|
|
}
|
|
},
|
|
"relationships": {
|
|
"provider": {
|
|
"data": {
|
|
"type": "providers",
|
|
"id": "provider-uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"meta": {
|
|
"page": {
|
|
"number": 1,
|
|
"size": 20,
|
|
"total": 156,
|
|
"total_pages": 8
|
|
}
|
|
},
|
|
"links": {
|
|
"self": "https://api.prowler.com/api/v1/scans?page[number]=1",
|
|
"first": "https://api.prowler.com/api/v1/scans?page[number]=1",
|
|
"next": "https://api.prowler.com/api/v1/scans?page[number]=2",
|
|
"last": "https://api.prowler.com/api/v1/scans?page[number]=8"
|
|
},
|
|
"included": [
|
|
{
|
|
"type": "providers",
|
|
"id": "provider-uuid",
|
|
"attributes": {
|
|
"alias": "Production AWS - US",
|
|
"provider_type": "aws",
|
|
"uid": "123456789012"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Response Fields
|
|
|
|
**Core Scan Information:**
|
|
- `id` (UUID) - Unique identifier for the scan
|
|
- `name` (string, nullable) - Optional scan name (3-100 characters)
|
|
- `state` (enum, read-only) - Current scan state:
|
|
- `available` - Available
|
|
- `scheduled` - Scheduled
|
|
- `executing` - Currently running
|
|
- `completed` - Finished successfully
|
|
- `failed` - Failed with errors
|
|
- `cancelled` - Was cancelled
|
|
- `trigger` (enum, read-only) - How scan was initiated:
|
|
- `manual` - Started manually
|
|
- `scheduled` - Started by schedule
|
|
|
|
**Timing & Progress:**
|
|
- `inserted_at` (datetime, read-only) - When scan was created
|
|
- `started_at` (datetime, nullable) - When scan execution began
|
|
- `completed_at` (datetime, nullable) - When scan finished
|
|
- `scheduled_at` (datetime, nullable) - When scan was scheduled for
|
|
- `next_scan_at` (datetime, nullable) - When next scan is scheduled
|
|
- `duration` (integer, nullable) - Scan duration in seconds
|
|
- `progress` (integer) - Scan progress percentage (0-100)
|
|
|
|
**Resources:**
|
|
- `unique_resource_count` (integer) - Number of unique cloud resources scanned
|
|
|
|
### Scan State Lifecycle
|
|
|
|
1. **available** → Scan ready to be executed
|
|
2. **scheduled** → Scan queued for future execution
|
|
3. **executing** → Scan currently in progress
|
|
4. **completed** → Scan finished successfully
|
|
5. **failed** → Scan encountered fatal errors
|
|
6. **cancelled** → Scan was cancelled by user
|
|
|
|
<Note>
|
|
Scans typically complete within 3-10 minutes depending on the number of resources and regions. Large accounts with many resources may take up to 30 minutes.
|
|
</Note>
|
|
|
|
<Warning>
|
|
Only the 100 most recent scans are retained in the API. Export scan data to external storage for long-term retention.
|
|
</Warning>
|
|
|
|
<Tip>
|
|
Monitor the `progress` field to track scan execution in real-time. Poll the scan endpoint while `state` is `executing` to see completion percentage.
|
|
</Tip>
|