https://api.foxhat.org/apiContent-Type: application/json| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | No | 0 | Page number for pagination (0-based) |
size | integer | No | 20 | Number of items per page (max: 100) |
domain | string | No | - | Filter by specific domain name |
exposureType | enum | No | - | Filter by exposure type |
severity | enum | No | - | Filter by severity level (LOW, MEDIUM, HIGH, CRITICAL) |
status | enum | No | - | Filter by exposure status (ACTIVE, RESOLVED, INVESTIGATING) |
source | string | No | - | Filter by data source |
subdomain | string | No | - | Filter by specific subdomain |
startDate | string | No | - | Filter exposures from this date (ISO 8601 format) |
endDate | string | No | - | Filter exposures until this date (ISO 8601 format) |
sortBy | string | No | detectedAt | Sort field (detectedAt, severity, domain, email) |
sortDir | string | No | desc | Sort direction (asc, desc) |
{
"exposures": [
{
"id": "exposure_123",
"email": "user@example.com",
"password": "password123",
"domain": "example.com",
"source": "data_breach",
"severity": "HIGH",
"status": "ACTIVE",
"detectedAt": "2024-01-15T10:30:00Z",
"exposureType": "CREDENTIAL_LEAK",
"subdomain": "mail.example.com",
"breachName": "Example Corp Breach 2024",
"lastUpdated": "2024-01-15T10:30:00Z"
}
],
"totalElements": 1,
"totalPages": 1,
"currentPage": 0,
"domainName": "example.com",
"user_id": "user123",
"api_key_usage_count": "incremented"
}| Field | Type | Description |
|---|---|---|
exposures | array | Array of exposure objects |
totalElements | integer | Total number of exposures matching the criteria |
totalPages | integer | Total number of pages available |
currentPage | integer | Current page number (0-based) |
domainName | string | Domain name associated with the API key |
user_id | string | User ID associated with the API key |
api_key_usage_count | string | Indicates that API key usage was incremented |
| Field | Type | Description |
|---|---|---|
id | string | Unique exposure identifier |
email | string | Exposed email address |
password | string | Exposed password (may be hashed) |
domain | string | Associated domain |
source | string | Source of the exposure (e.g., "data_breach") |
severity | enum | Severity level (LOW, MEDIUM, HIGH, CRITICAL) |
status | enum | Current status (ACTIVE, RESOLVED, INVESTIGATING) |
detectedAt | string | ISO 8601 timestamp when exposure was detected |
exposureType | enum | Type of exposure |
subdomain | string | Specific subdomain if applicable |
breachName | string | Name of the breach or source |
lastUpdated | string | ISO 8601 timestamp of last update |
| Parameter | Type | Required | Description |
|---|---|---|---|
exposureId | string | Yes | Unique identifier of the exposure |
{
"id": "exposure_123",
"email": "user@example.com",
"password": "password123",
"domain": "example.com",
"source": "data_breach",
"severity": "HIGH",
"status": "ACTIVE",
"detectedAt": "2024-01-15T10:30:00Z",
"exposureType": "CREDENTIAL_LEAK",
"subdomain": "mail.example.com",
"breachName": "Example Corp Breach 2024",
"lastUpdated": "2024-01-15T10:30:00Z",
"additionalData": {
"ipAddress": "192.168.1.1",
"userAgent": "Mozilla/5.0...",
"location": "United States"
},
"relatedExposures": [
{
"id": "exposure_124",
"email": "user@example.com",
"domain": "example.com",
"severity": "MEDIUM"
}
],
"domainName": "example.com",
"user_id": "user123",
"api_key_usage_count": "incremented"
}| Field | Type | Description |
|---|---|---|
additionalData | object | Additional metadata about the exposure |
relatedExposures | array | Array of related exposures for the same email/domain |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | No | - | Filter statistics by specific domain |
startDate | string | No | - | Start date for statistics (ISO 8601 format) |
endDate | string | No | - | End date for statistics (ISO 8601 format) |
{
"totalExposures": 1247,
"activeExposures": 892,
"resolvedExposures": 355,
"severityBreakdown": {
"CRITICAL": 45,
"HIGH": 234,
"MEDIUM": 567,
"LOW": 401
},
"statusBreakdown": {
"ACTIVE": 892,
"RESOLVED": 355,
"INVESTIGATING": 0
},
"domainBreakdown": [
{
"domain": "example.com",
"count": 1000,
"percentage": 80.2
},
{
"domain": "subdomain.example.com",
"count": 247,
"percentage": 19.8
}
],
"trendsData": {
"last30Days": 156,
"last7Days": 23,
"last24Hours": 5
},
"topSources": [
{
"source": "data_breach_2024",
"count": 456,
"percentage": 36.6
},
{
"source": "credential_dump",
"count": 234,
"percentage": 18.8
}
],
"domainName": "example.com",
"user_id": "user123",
"api_key_usage_count": "incremented"
}| Field | Type | Description |
|---|---|---|
totalExposures | integer | Total number of exposures |
activeExposures | integer | Number of active exposures |
resolvedExposures | integer | Number of resolved exposures |
severityBreakdown | object | Count of exposures by severity level |
statusBreakdown | object | Count of exposures by status |
domainBreakdown | array | Breakdown of exposures by domain |
trendsData | object | Exposure trends over different time periods |
topSources | array | Most common sources of exposures |
LOW - Low risk exposuresMEDIUM - Medium risk exposuresHIGH - High risk exposures requiring attentionCRITICAL - Critical exposures requiring immediate actionACTIVE - Exposure is currently active and unresolvedRESOLVED - Exposure has been addressed and resolvedINVESTIGATING - Exposure is under investigationCREDENTIAL_LEAK - Username/password combinationsEMAIL_EXPOSURE - Email addresses in data breachesPERSONAL_INFO - Personal information exposureFINANCIAL_DATA - Financial information exposureCORPORATE_DATA - Corporate data exposuredetectedAt - Sort by detection timestampseverity - Sort by severity leveldomain - Sort by domain nameemail - Sort by email addresslastUpdated - Sort by last update timestampasc - Ascending orderdesc - Descending order| Status Code | Description | Example Response |
|---|---|---|
200 | Success | Data returned successfully |
400 | Bad Request | Invalid parameters or malformed request |
401 | Unauthorized | Invalid or missing API key |
403 | Forbidden | API key doesn't have access to requested resource |
404 | Not Found | Exposure ID not found |
429 | Too Many Requests | Rate limit exceeded |
500 | Internal Server Error | Server error occurred |
{
"error": {
"code": "INVALID_API_KEY",
"message": "The provided API key is invalid or expired",
"timestamp": "2024-01-15T10:30:00Z",
"requestId": "req_123456789"
}
}| Error Code | Description | Resolution |
|---|---|---|
INVALID_API_KEY | API key is invalid or expired | Check your API key and ensure it's active |
INSUFFICIENT_PERMISSIONS | API key lacks required permissions | Contact support to upgrade permissions |
RATE_LIMIT_EXCEEDED | Too many requests in time window | Implement rate limiting in your application |
INVALID_PARAMETERS | Request parameters are invalid | Check parameter format and values |
EXPOSURE_NOT_FOUND | Specified exposure ID doesn't exist | Verify the exposure ID is correct |