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

ParameterTypeDefaultDescription
pageIndexinteger0Page number (0-indexed)
pageSizeinteger10Items per page (max 100)
sortBystringtotal_extensionsSort field (see below)
sortOrderstringdescSort order: asc, desc
riskLevelstring-Filter: low, medium, high, critical
minExtensionsinteger-Minimum total extensions
hasMaliciousboolean-Filter publishers with malicious extensions
hasEmailboolean-Filter publishers with email
hasWebsiteboolean-Filter publishers with website
hasInvalidEmailboolean-Filter publishers with invalid emails
countrystring-Filter by country

Sort Fields

  • author - Publisher name
  • total_extensions - Total extensions published
  • active_extensions - Active extension count
  • malicious_extensions - Malicious extension count
  • created_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

ParameterTypeDescription
publisherIdstring (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

ParameterTypeDefaultDescription
pageinteger1Page number
page_sizeinteger25Items per page
statusstring-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 LevelDescriptionIndicators
lowTrusted publisherNo malicious extensions, verified contact info, good ratings
mediumModerate concernSome concerning patterns, limited history
highElevated riskMalicious extensions, invalid contact info, suspicious patterns
criticalKnown threatMultiple malicious extensions, active threat actor

Risk Assessment Factors

  1. Extension History: Ratio of malicious to total extensions
  2. Contact Validity: Valid email and website
  3. User Feedback: Average ratings across extensions
  4. Update Patterns: Frequency and nature of updates
  5. 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 CodeDescription
400Invalid request parameters
401Authentication required
404Publisher not found
429Rate limit exceeded
500Internal server error

Next Steps