Publishers API
Query extension publisher profiles, reputation data, and extension portfolios.
The Publishers API provides access to extension publisher profiles, including reputation scores, extension portfolios, and risk assessments.
List Publishers
Retrieve a paginated list of publishers with optional filtering.
GET /api/v1/publishers
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
pageIndex | integer | 0 | Page number (0-indexed) |
pageSize | integer | 10 | Items per page (max 100) |
sortBy | string | total_extensions | Sort field (see below) |
sortOrder | string | desc | Sort order: asc, desc |
riskLevel | string | - | Filter: low, medium, high, critical |
minExtensions | integer | - | Minimum total extensions |
hasMalicious | boolean | - | Filter publishers with malicious extensions |
hasEmail | boolean | - | Filter publishers with email |
hasWebsite | boolean | - | Filter publishers with website |
hasInvalidEmail | boolean | - | Filter publishers with invalid emails |
country | string | - | Filter by country |
Sort Fields
author- Publisher nametotal_extensions- Total extensions publishedactive_extensions- Active extension countmalicious_extensions- Malicious extension countcreated_at- First seen date
Example Request
curl -X GET "https://extensionauditor.com/api/v1/publishers?pageSize=10&riskLevel=high&hasMalicious=true" \ -H "Cookie: session=your_session_cookie"
Example Response
{
"success": true,
"result": [
{
"publisher_id": "uuid-here",
"author": "Suspicious Developer",
"email": "dev@example.com",
"email_is_invalid": false,
"website": "https://example.com",
"publisher_country": "Unknown",
"total_extensions": 15,
"active_extensions": 12,
"obsolete_extensions": 3,
"malicious_extensions": 5,
"uws_extensions": 2,
"manifest_v2_extensions": 8,
"manifest_v3_extensions": 7,
"risk_level": "high",
"avg_rating": 2.3,
"total_users": 150000,
"created_at": "2023-06-15T10:30:00Z"
}
],
"page": 0,
"page_size": 10,
"total_count": 245,
"total_pages": 25
}
Get Publisher by ID
Retrieve detailed information about a specific publisher.
GET /api/v1/publishers/{publisherId}
Path Parameters
| Parameter | Type | Description |
|---|---|---|
publisherId | string (UUID) | Publisher unique identifier |
Example Request
curl -X GET "https://extensionauditor.com/api/v1/publishers/abc123-def456-ghi789" \ -H "Cookie: session=your_session_cookie"
Example Response
{
"success": true,
"data": {
"publisher_id": "abc123-def456-ghi789",
"author": "Trusted Developer Inc.",
"email": "contact@trusteddeveloper.com",
"email_is_invalid": false,
"website": "https://trusteddeveloper.com",
"publisher_address": "123 Tech Street, San Francisco, CA",
"publisher_country": "United States",
"privacy_policy_url": "https://trusteddeveloper.com/privacy",
"total_extensions": 5,
"active_extensions": 4,
"obsolete_extensions": 1,
"malicious_extensions": 0,
"listed_extensions": 4,
"unlisted_extensions": 0,
"manifest_v2_extensions": 1,
"manifest_v3_extensions": 3,
"risk_level": "low",
"avg_rating": 4.7,
"total_users": 2500000,
"created_at": "2022-03-10T08:15:00Z",
"updated_at": "2024-01-20T14:30:00Z"
}
}
Get Publisher Extensions
Retrieve all extensions published by a specific publisher.
GET /api/v1/publishers/{publisherId}/extensions
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
page_size | integer | 25 | Items per page |
status | string | - | Filter: active, obsolete |
Example Request
curl -X GET "https://extensionauditor.com/api/v1/publishers/abc123-def456/extensions?status=active" \ -H "Cookie: session=your_session_cookie"
Example Response
{
"success": true,
"result": [
{
"extension_id": "abcdefghijklmnopqrstuvwxyz123456",
"name": "Productivity Tool",
"version": "2.1.0",
"status": "active",
"user_count": 500000,
"rating_value": 4.8,
"category": "productivity",
"last_update": "2024-01-15T10:00:00Z"
},
{
"extension_id": "zyxwvutsrqponmlkjihgfedcba654321",
"name": "Security Helper",
"version": "1.5.2",
"status": "active",
"user_count": 250000,
"rating_value": 4.5,
"category": "security",
"last_update": "2024-01-10T08:00:00Z"
}
],
"page": 1,
"page_size": 25,
"total_count": 4,
"total_pages": 1
}
Publisher Risk Levels
Publishers are assigned risk levels based on multiple factors:
| Risk Level | Description | Indicators |
|---|---|---|
low | Trusted publisher | No malicious extensions, verified contact info, good ratings |
medium | Moderate concern | Some concerning patterns, limited history |
high | Elevated risk | Malicious extensions, invalid contact info, suspicious patterns |
critical | Known threat | Multiple malicious extensions, active threat actor |
Risk Assessment Factors
- Extension History: Ratio of malicious to total extensions
- Contact Validity: Valid email and website
- User Feedback: Average ratings across extensions
- Update Patterns: Frequency and nature of updates
- Permission Requests: Typical permission patterns
Use Cases
Identify High-Risk Publishers
curl -X GET "https://extensionauditor.com/api/v1/publishers?riskLevel=critical&pageSize=50" \ -H "Cookie: session=your_session_cookie"
Find Publishers with Invalid Contact Info
curl -X GET "https://extensionauditor.com/api/v1/publishers?hasInvalidEmail=true&hasWebsite=false" \ -H "Cookie: session=your_session_cookie"
Analyze Prolific Publishers
curl -X GET "https://extensionauditor.com/api/v1/publishers?minExtensions=10&sortBy=total_extensions&sortOrder=desc" \ -H "Cookie: session=your_session_cookie"
Error Responses
| Status Code | Description |
|---|---|
| 400 | Invalid request parameters |
| 401 | Authentication required |
| 404 | Publisher not found |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Next Steps
- Extensions API - Query extension data
- Monitors API - Set up monitoring
- PermHash API - Analyze permission patterns
