Source profileQuality 91/100

WYRE-AI/msp-claude-plugins/msp-claude-plugins/email-security/proofpoint/skills/api-patterns/SKILL.md

Proofpoint API Patterns

Proofpoint API fundamentals: HTTP Basic Auth with service principal and secret, base URLs and versioning across TAP SIEM, People, Quarantine, Forensics, and URL Defense APIs, rate limits, pagination patterns, and error handling.

Source repository stars
42
Declared platforms
0
Static risk flags
1
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Proofpoint API fundamentals: HTTP Basic Auth with service principal and secret, base URLs and versioning across TAP SIEM, People, Quarantine, Forensics, and URL Defense APIs, rate limits, pagination patterns, and error handling.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/email-security/proofpoint/skills/api-patterns"
    Safe inspection promptEditorial

    Inspect the Agent Skill "Proofpoint API Patterns" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/email-security/proofpoint/skills/api-patterns/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Authentication

      All Proofpoint APIs use HTTP Basic Authentication with a service principal and secret:

      All Proofpoint APIs use HTTP Basic Authentication with a service principal and secret:Constructing the Authorization Header:
    2. 02

      HTTP Basic Auth

      All Proofpoint APIs use HTTP Basic Authentication with a service principal and secret:

      All Proofpoint APIs use HTTP Basic Authentication with a service principal and secret:Constructing the Authorization Header:
    3. 03

      Using curl

      curl -u "SERVICEPRINCIPAL:SERVICESECRET" \ "https://tap-api.proofpoint.com/v2/siem/all?sinceSeconds=3600" bash export PROOFPOINTSERVICEPRINCIPAL="your-service-principal" export PROOFPOINTSERVICESECRET="your-service-secret" export PROOFPOINTMCPURL="https://proofpoint-mcp.wyre.wor…

      VAP reports (refresh daily)Top clickers (refresh daily)Campaign details (cache by campaign ID)
    4. 04

      Environment Variables

      Review the “Environment Variables” section in the pinned source before continuing.

      Review and apply the “Environment Variables” source section.
    5. 05

      Obtaining Credentials

      1. Log into the Proofpoint TAP Dashboard at https://threatinsight.proofpoint.com 2. Navigate to Settings Connected Applications 3. Click Create New Credential 4. Copy the Service Principal and Service Secret 5. Store securely - the secret is shown only once

      Log into the Proofpoint TAP Dashboard at https://threatinsight.proofpoint.comNavigate to Settings Connected ApplicationsClick Create New Credential

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 34

    The documentation includes network, browsing, or remote request actions.

    # Using curl

    Network access

    medium · line 35

    The documentation includes network, browsing, or remote request actions.

    curl -u "SERVICE_PRINCIPAL:SERVICE_SECRET" \

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars42SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    WYRE-AI/msp-claude-plugins
    Skill path
    msp-claude-plugins/email-security/proofpoint/skills/api-patterns/SKILL.md
    Commit
    5005f73ba2f52cd299f58aa6bb79f4e70ae87103
    License
    Apache-2.0
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    Proofpoint API Patterns

    Overview

    The Proofpoint APIs provide programmatic access to email security data including threat events, quarantine management, people risk analytics, and URL defense. This skill covers authentication, base URLs, rate limiting, pagination, error handling, and best practices for API integration.

    Proofpoint operates multiple API endpoints, each serving a different product area. All APIs share the same authentication mechanism but have different base URLs and rate limits.

    Authentication

    HTTP Basic Auth

    All Proofpoint APIs use HTTP Basic Authentication with a service principal and secret:

    GET /v2/siem/all?sinceSeconds=3600
    Host: tap-api.proofpoint.com
    Authorization: Basic <base64(service_principal:service_secret)>
    Content-Type: application/json
    

    Constructing the Authorization Header:

    const credentials = Buffer.from(`${servicePrincipal}:${serviceSecret}`).toString('base64');
    const headers = {
      'Authorization': `Basic ${credentials}`,
      'Content-Type': 'application/json'
    };
    
    # Using curl
    curl -u "SERVICE_PRINCIPAL:SERVICE_SECRET" \
      "https://tap-api.proofpoint.com/v2/siem/all?sinceSeconds=3600"
    

    Environment Variables

    export PROOFPOINT_SERVICE_PRINCIPAL="your-service-principal"
    export PROOFPOINT_SERVICE_SECRET="your-service-secret"
    export PROOFPOINT_MCP_URL="https://proofpoint-mcp.wyre.workers.dev/mcp"
    

    Obtaining Credentials

    1. Log into the Proofpoint TAP Dashboard at https://threatinsight.proofpoint.com
    2. Navigate to Settings > Connected Applications
    3. Click Create New Credential
    4. Copy the Service Principal and Service Secret
    5. Store securely - the secret is shown only once

    Important: Service credentials are scoped to your organization. Each MSP client organization requires its own set of credentials.

    Base URLs

    API Endpoints

    APIBase URLDescription
    TAP SIEMhttps://tap-api.proofpoint.comThreat events, clicks, messages
    Peoplehttps://tap-api.proofpoint.comVAP reports, top clickers, user risk
    Quarantinehttps://tap-api.proofpoint.comQuarantine management
    Forensicshttps://tap-api.proofpoint.comThreat response and investigation
    URL Defensehttps://tap-api.proofpoint.comURL decoding and analysis

    Note: All APIs currently share the same base URL (tap-api.proofpoint.com) but are versioned and namespaced separately in the path.

    API Versioning

    APIVersionPath PrefixExample
    TAP SIEMv2/v2/siem//v2/siem/all?sinceSeconds=3600
    Peoplev2/v2/people//v2/people/vap?window=30
    Campaignv1/v1/campaign//v1/campaign/{campaignId}
    Forensicsv2/v2/forensics//v2/forensics?threatId={id}
    URL Defensev2/v2/url//v2/url/decode

    Rate Limiting

    Rate Limit Tiers

    APIRequests per HourBurst LimitNotes
    TAP SIEM100010/secPer service principal
    People5005/secPer service principal
    Quarantine5005/secPer service principal
    Forensics5005/secPer service principal
    URL Defense100010/secPer service principal

    Rate Limit Headers

    HTTP/1.1 200 OK
    X-RateLimit-Limit: 1000
    X-RateLimit-Remaining: 995
    X-RateLimit-Reset: 1708012800
    
    HeaderDescription
    X-RateLimit-LimitMaximum requests per window
    X-RateLimit-RemainingRequests remaining in current window
    X-RateLimit-ResetUnix timestamp when the window resets

    Rate Limit Response (HTTP 429)

    {
      "error": "Rate limit exceeded",
      "message": "Too many requests. Please retry after the rate limit window resets.",
      "retryAfter": 60
    }
    

    Retry Strategy

    async function requestWithRetry(url, options, maxRetries = 5) {
      for (let attempt = 0; attempt < maxRetries; attempt++) {
        const response = await fetch(url, options);
    
        if (response.status === 429) {
          const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
          const jitter = Math.random() * 5000;
          await sleep(retryAfter * 1000 + jitter);
          continue;
        }
    
        if (response.status >= 500) {
          const delay = Math.pow(2, attempt) * 1000 + Math.random() * 1000;
          await sleep(delay);
          continue;
        }
    
        return response;
      }
    
      throw new Error(`Request failed after ${maxRetries} retries`);
    }
    

    Pagination

    TAP SIEM API Pagination

    The TAP SIEM API does not use traditional offset-based pagination. Instead, it uses time-based windowing:

    GET /v2/siem/all?sinceSeconds=3600
    GET /v2/siem/all?sinceTime=2024-02-15T00:00:00Z
    GET /v2/siem/all?interval=PT30M/2024-02-15T12:00:00Z
    
    ParameterDescriptionMax
    sinceSecondsEvents from N seconds ago to now86400 (24h)
    sinceTimeEvents from timestamp to now24h from now
    intervalISO 8601 interval (duration/end)1 hour window

    Quarantine API Pagination

    GET /v2/quarantine/search?limit=25&offset=0
    GET /v2/quarantine/search?limit=25&offset=25
    
    ParameterDescriptionDefaultMax
    limitResults per page25500
    offsetStarting offset0-

    People API Pagination

    GET /v2/people/vap?window=30&size=100&page=1
    
    ParameterDescriptionDefaultMax
    sizeResults per page1001000
    pagePage number (1-based)1-

    Error Handling

    HTTP Status Codes

    CodeMeaningAction
    200SuccessProcess response
    204No contentNo events in the specified window
    400Bad requestCheck request parameters
    401UnauthorizedVerify service principal and secret
    403ForbiddenCheck API access permissions
    404Not foundResource does not exist
    429Rate limitedImplement backoff and retry
    500Server errorRetry with exponential backoff
    503Service unavailableRetry after brief delay

    Error Response Format

    {
      "error": "Bad Request",
      "message": "The sinceSeconds parameter must be between 1 and 86400.",
      "status": 400
    }
    

    Common Error Scenarios

    ErrorCauseResolution
    401 with valid credentialsCredentials may be expiredRegenerate in TAP dashboard
    403 on People APILicense does not include PeopleUpgrade license or contact Proofpoint
    400 on time rangeWindow exceeds 24 hoursReduce sinceSeconds to <= 86400
    204 on SIEM queryNo events in time windowNormal - no threats in the period
    404 on campaignCampaign ID is invalid or oldVerify ID from TAP event data

    Request Patterns

    TAP SIEM All Events

    GET /v2/siem/all?format=json&sinceSeconds=3600
    Authorization: Basic <credentials>
    

    TAP Messages Blocked

    GET /v2/siem/messages/blocked?format=json&sinceSeconds=3600
    Authorization: Basic <credentials>
    

    TAP Messages Delivered

    GET /v2/siem/messages/delivered?format=json&sinceSeconds=3600
    Authorization: Basic <credentials>
    

    TAP Clicks Permitted

    GET /v2/siem/clicks/permitted?format=json&sinceSeconds=3600
    Authorization: Basic <credentials>
    

    People VAP Report

    GET /v2/people/vap?window=30&size=20
    Authorization: Basic <credentials>
    

    Campaign Details

    GET /v1/campaign/{campaignId}
    Authorization: Basic <credentials>
    

    Forensics Report

    GET /v2/forensics?threatId={threatId}
    Authorization: Basic <credentials>
    

    Response Patterns

    TAP SIEM Response Structure

    {
      "queryEndTime": "2024-02-15T12:00:00Z",
      "messagesBlocked": [...],
      "messagesDelivered": [...],
      "clicksBlocked": [...],
      "clicksPermitted": [...]
    }
    

    People VAP Response Structure

    {
      "users": [
        {
          "identity": {
            "guid": "abc123",
            "customerUserId": null,
            "emails": ["[email protected]"],
            "name": "John Smith",
            "department": "Finance",
            "location": "New York",
            "title": "CFO",
            "vip": true
          },
          "threatStatistics": {
            "attackIndex": 856,
            "families": [
              {"name": "Emotet", "count": 12},
              {"name": "QBot", "count": 8}
            ]
          }
        }
      ],
      "totalVapUsers": 150
    }
    

    Performance Optimization

    Minimize Polling Frequency

    // Good: Poll every 5 minutes for near-real-time
    setInterval(() => fetchTAPEvents('sinceSeconds=300'), 5 * 60 * 1000);
    
    // Avoid: Polling every 10 seconds burns rate limit
    setInterval(() => fetchTAPEvents('sinceSeconds=10'), 10 * 1000);
    

    Use Appropriate Time Windows

    // Good: Fetch only new events since last poll
    const lastPoll = getLastPollTime();
    fetch(`/v2/siem/all?sinceTime=${lastPoll.toISOString()}`);
    
    // Avoid: Always fetching full 24 hours
    fetch('/v2/siem/all?sinceSeconds=86400');
    

    Cache Reference Data

    Cache data that changes infrequently:

    • VAP reports (refresh daily)
    • Top clickers (refresh daily)
    • Campaign details (cache by campaign ID)
    • URL verdicts (cache for 5-15 minutes)

    Best Practices

    1. Monitor rate limit headers - Track X-RateLimit-Remaining to avoid hitting limits
    2. Implement exponential backoff - Always retry with increasing delays on 429 and 5xx
    3. Use time-based polling - Track your last poll time and only fetch new events
    4. Handle 204 gracefully - No content is normal when there are no events
    5. Validate timestamps - Ensure sinceTime is within the 24-hour maximum window
    6. Log API calls - Maintain audit logs of all API calls for troubleshooting
    7. Test with small windows - Start with sinceSeconds=300 (5 minutes) when testing
    8. Parallelize across APIs - TAP, People, and Quarantine have independent rate limits

    Related Skills

    Frequently asked questions

    What to verify before installation and use

    What does the Proofpoint API Patterns source document cover?

    Proofpoint API fundamentals: HTTP Basic Auth with service principal and secret, base URLs and versioning across TAP SIEM, People, Quarantine, Forensics, and URL Defense APIs, rate limits, pagination patterns, and error handling.

    How do I install Proofpoint API Patterns?

    The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/email-security/proofpoint/skills/api-patterns". Inspect the command and pinned source before running it.

    Which permission-related actions were detected?

    Static rules flagged network in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 10025,136

    alirezarezvani/claude-skills

    app-store-optimization

    App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

    Computed 9925

    indranilbanerjee/contentforge

    cf-variants

    Generate 3-10 scored A/B test variations of a single content element — headline, hook, CTA, intro, or conclusion — each rated across 6 quality dimensions and ranked by your optimization goal (clicks, engagement, conversions, or readability), with top-3 recommendations and A/B test setup guidance (sample size, duration, success metric). Triggers on "/contentforge:cf-variants", "give me headline alternatives", "A/B test options for this CTA", "which hook is stronger", "write 5 versions of this int

    Computed 98603

    nexscope-ai/Amazon-Skills

    amazon-listing-optimization

    Amazon listing builder and optimizer for sellers. Two modes: (A) Create — build keyword-optimized listings from scratch using keyword lists + product characteristics + AI copywriting, (B) Optimize — audit existing listings, find keyword gaps, score across 8 dimensions, and rewrite with missing keywords. Integrates with amazon-keyword-research for keyword input. Works on 12 Amazon marketplaces. No API key required. Use when: (1) creating a new Amazon listing from keywords, (2) auditing an existin

    Computed 9867

    SerendipityOneInc/ZooData-Skills

    zoodata

    API endpoint reference for the ZooData data platform: the 12 commerce endpoints plus 10 keyword-intelligence endpoints (categories, markets, products, competitors, realtime ASIN, AI review analysis, raw reviews, price band, brand, history, and the keyword detail/trend/extends/search/ market-profile/product-traffic/competitor-keywords/traffic-profile/ traffic-timeline family) — their inputs/outputs, parameter quirks, Quick Start (auth, base URL), how credits are tracked (meta.creditsConsumed), an