[ MSP, APIs & integrations ]

Authentication API evaluation: scope, provenance and rate limits

Evaluate an authentication reporting API by testing its contract, provenance and failure behavior before committing a workflow.

By the EmailAuth research team · 3 min read

[ Key points ]

  • Evaluate an authentication reporting API by testing its contract, provenance and failure behavior before committing a workflow.
  • Treat pagination, authorization and restart behavior as separate acceptance tests under a pinned provider contract.
On this page

An API evaluation should answer whether a customer can reliably retrieve the intended evidence, not whether a sample request returns HTTP 200. Define the workflow first: for example, export one customer's received aggregate reports into a private evidence store without losing pages or mixing tenants. Avoid assuming that any named product offers this interface until its current contract is verified.

Pin the contract and the boundaries

Record the provider, endpoint, API version, authentication method, tenant boundary, fields, pagination rules and documented limits. Separate the identity of a report from the time it arrived and the period it covers. Specify whether the API returns raw reports, normalized rows or derived findings. Those are different evidence populations and need different reconciliation rules.

GitHub's API version documentation illustrates explicit version selection with X-GitHub-Api-Version. That is a concrete example of versioning practice, not evidence that GitHub exports DMARC reports. For an actual evaluation, record those details in a reviewable contract note before testing. This guide supplies no vendor contract, endpoint or product capability.

Test provenance as well as fields

For a normalized row, retain reporter, report ID, original period, receipt time and source fingerprint when available. Preserve the original artifact under approved retention controls. RFC 9990 is the primary reference for aggregate-report structure. A convenient JSON schema cannot turn reported counts into proof of delivered messages or recover information the receiver never supplied.

Ask how the service represents partial ingestion, malformed reports, corrected data and missing collection periods. A silently skipped page can make a plausible metric wrong. Request a sample that includes known errors and compare it with independently counted input, not merely another screen powered by the same export.

Exercise failure paths deliberately

Test a multi-page result, an empty result, duplicate input, two records sharing a timestamp, a revoked credential, a cross-tenant request and a transient error. Follow documented continuation links or cursors. For rate limiting, record status, relevant headers and retry policy. GitHub's best practices recommend respecting rate-limit signals and avoiding uncontrolled concurrency; exact limits still belong to the actual service contract.

Suppose page one is stored but page two fails. An HTTP 200 for the first request cannot justify a complete export; retain the partial status and use the provider’s supported continuation or restart process. Separately, a successfully authenticated request for another authorized test tenant must still be denied when the caller lacks that grant. These hypothetical cases test different requirements: completeness and authorization.

For a retry test, distinguish a documented rate-limit response from a permanent permission failure. GitHub’s rate-limit documentation explains that it can report rate limiting with 403 or 429, so do not classify every 403 as permanently non-retryable without reading its error context and documented headers. Apply the actual provider’s bounded wait and retry rules. No virtual clock, restart test, vendor call or live access-control check was executed here.

Decide what is acceptable

Create an evaluation record listing each required behavior, the evidence obtained and remaining uncertainty. Treat missing tenant isolation or unrecoverable data loss as stop conditions. A lack of production credentials need not prevent documentary evaluation, but it does prevent claiming that live access controls were tested.

Agree the next step with the service owner: obtain a sandbox, implement a guarded adapter, or narrow the workflow to supported exports. Retain the pinned contract and test fixtures so a provider change can be assessed later. Keep product-specific claims limited to documented and observed capability; no EmailAuth API integration is verified by this guide.

[ Takeaway ]

Treat pagination, authorization and restart behavior as separate acceptance tests under a pinned provider contract.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Pin and replay the contract

Repeatable tests expose drift.

Next steps

  1. Retain the API version.
  2. Check every continuation.
  3. Reconcile known totals.

CISO / SecOps

Make access tests mandatory

Data correctness includes tenant boundaries.

Next steps

  1. Review granted scopes.
  2. Test revoked access.
  3. Track unverified controls.

Founder / Non-technical

Evaluate the intended outcome

A demo response does not establish a usable service.

Next steps

  1. Define acceptance criteria.
  2. Require failed-case evidence.
  3. Avoid unsupported integration promises.

[ FAQs ]

Frequently asked questions

Is HTTP 200 enough to pass an evaluation?

No. Validate completeness, scope, provenance and recovery behavior.

What contract does this guide supply?

None. Pin the actual provider version, tenant scope, fields, pagination and limits before evaluating it.

Does the GitHub source establish a DMARC API?

No. It documents API engineering practices, not authentication-report export capability.

Why retain the raw report?

It supports provenance and reprocessing when normalized interpretations change, subject to approved retention.

What should a limit test record?

The status, documented headers, wait behavior and bounded recovery result.

How do you test complete pagination?

Compare collected identities and totals against an independently known input set.

Do hypothetical cases prove tenant isolation?

No. They define expected behavior; the actual service requires authorized allowed-and-denied testing.

When should the evaluation stop?

When required scope, loss recovery or authority cannot be established safely.

[ Sources ]

Sources

  1. RFC 9990 DMARC Aggregate Reporting

    Sections §3.1 · §3.1.1.4 · §3.1.2 · §3.5.1 · §3.5.4 · §4 · §7 · §8

  2. GitHub REST API best practices

    Sections Avoid concurrent requests · Handle rate limit errors appropriately · Do not manually parse URLs · Use conditional requests

  3. GitHub REST API versions

    Sections Specifying an API version

  4. GitHub REST API pagination

    Sections Using link headers · Changing the number of items per page

  5. GitHub REST API rate limits

    Sections Exceeding the rate limit

[ Glossary ]

Glossary

Pinned API contract
A retained version and behavior specification for an integration.
Provenance
Information linking derived data to its original source and processing history.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base