MNTN · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay for the MNTN Async Batch Export API

4 actions 4 updates update extends https://api3.mountain.com/api-docs/Batch
Generated by API Evangelist Written by API Evangelist tooling for MNTN's API. It is a proposal applied on top of the contract, not a document MNTN publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apis-io-slugx-artifactsx-async-contractx-gapsx-agent-guidance

Targets 3

$.info
$.servers
$.paths['/batch'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay for the MNTN Async Batch Export API
  version: 1.0.0
extends: https://api3.mountain.com/api-docs/Batch
x-generated: '2026-08-12'
x-method: generated
x-source: openapi/_original/mntn-batch-export-api-openapi.json
actions:
- target: $.info
  description: Attach provenance and the artifact map.
  update:
    x-apis-io-slug: mntn
    x-artifacts:
      authentication: authentication/mntn-authentication.yml
      conventions: conventions/mntn-conventions.yml
      errors: errors/mntn-problem-types.yml
      rate_limits: rate-limits/mntn-rate-limits.yml
- target: $.servers
  description: Record the real host behind the relative "/" server the provider publishes.
  update:
  - url: /
    description: Reporting API
    x-observed-hosts:
    - https://api3.mountain.com
    - https://api2.mountain.com
- target: $.info
  description: Record the async contract and its gaps in one place.
  update:
    x-async-contract:
      pattern: enqueue-poll-signed-download
      entitlement: r2ds.exports.enabled
      steps:
      - 'POST /batch -> 202 Accepted, returns batchId'
      - 'GET /batch/{batchId} -> status; SUCCEEDED includes a time-limited signed download URL'
      - 'POST /batch/{batchId}/regenerate-url -> reissue the signed URL without re-running the query'
      - 'GET /batch -> list recent jobs (status, limit, offset)'
      terminal_states: [SUCCEEDED, 'terminal non-downloadable (409 on regenerate-url)', 'expired (410 Gone)']
    x-gaps:
      polling_interval: >-
        No recommended poll interval, no Retry-After on the status response, and no maximum job
        duration is published, so a client cannot choose a backoff without guessing.
      rate_limit_429: >-
        POST /batch declares 429 but returns the ExportResponse schema rather than an RFC 9457
        problem document, and declares no Retry-After or RateLimit-* header.
      url_lifetime: >-
        The download URL is described as time-limited but no TTL is published; a consumer cannot
        know how long it has before needing regenerate-url.
      duplicate_submission: >-
        POST /batch has no idempotency key, so a retried submission enqueues a second export of the
        same query rather than returning the original batchId.
- target: $.paths['/batch'].post
  description: Flag retry semantics for agent use.
  update:
    x-agent-guidance: >-
      Submission is not idempotent. On a timeout, call GET /batch and match on your query before
      resubmitting, or you will queue a duplicate export.