MediaValet · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the MediaValet API

10 actions 10 updates update extends ../openapi/_original/mediavalet-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for MediaValet's API. It is a proposal applied on top of the contract, not a document MediaValet publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-artifactsx-supportx-api-versioningx-response-envelopex-idempotencyx-discoveryx-issuerx-credential-issuance

Targets 7

$.info
$.components.securitySchemes.oauth2
$.components.securitySchemes.subscriptionKey
$.paths.*.*
$.paths.*.*.responses['403']
$.paths.*.*.responses['202']
$.tags

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the MediaValet API
  version: 1.0.0
extends: ../openapi/_original/mediavalet-openapi.yml
x-provenance:
  generated: '2026-08-13'
  method: generated
  source: >-
    Captures the API Evangelist enrichment layer over the MediaValet contract. The base document is
    openapi/_original/mediavalet-openapi.yml, itself derived operation-for-operation from
    MediaValet's own published Postman collection at
    https://docs.mediavalet.com/api/collections/15676803/TzRUB7XE. The per-tag files in openapi/ are
    tag projections of that same document, so this overlay describes them too.
  note: >-
    MediaValet publishes no OpenAPI of its own. This overlay records what API Evangelist adds on top
    of the derived contract — cross-cutting parameters, the universal response envelope, versioning
    and error semantics, and links to the artifacts in this repo — without mutating the base
    document.
actions:
  - target: $.info
    description: Attach the enrichment artifacts and support contacts to the document root.
    update:
      x-artifacts:
        conventions: conventions/mediavalet-conventions.yml
        authentication: authentication/mediavalet-authentication.yml
        scopes: scopes/mediavalet-scopes.yml
        errors: errors/mediavalet-problem-types.yml
        lifecycle: lifecycle/mediavalet-lifecycle.yml
        changelog: changelog/mediavalet-changelog.yml
        rate_limits: rate-limits/mediavalet-rate-limits.yml
        plans: plans/mediavalet-plans-pricing.yml
        sandbox: sandbox/mediavalet-sandbox.yml
        data_model: data-model/mediavalet-data-model.yml
        conformance: conformance/mediavalet-conformance.yml
        events: asyncapi/mediavalet-skyhook-asyncapi.yml
        components: components/mediavalet-components.yml
        skills: skills/_index.yml
        source_collection: collections/mediavalet-api.postman_collection.json
      x-support:
        email: support@mediavalet.com
        developer_portal: https://developer.mediavalet.com
        help_center: https://support.mediavalet.com/hc/en-us
  - target: $.info
    description: Record the API versioning contract, which is expressed as a request header rather than in the path.
    update:
      x-api-versioning:
        mechanism: request-header
        header: x-mv-api-version
        default: '1.0'
        current: '1.2'
        supported: ['1.0', '1.1', '1.2']
        echoed_in: ApiVersion
        warning: >-
          Omitting the header pins the caller to version 1.0, the OLDEST supported version. Features
          added in 1.1 (the Status attribute data type) return 400 on 1.0.
  - target: $.info
    description: Record the universal response envelope, which the base contract describes only in prose.
    update:
      x-response-envelope:
        payload: Payload
        errors: Meta.Errors
        warnings: Meta.Warnings
        processed_at: Meta.CreatedOn
        version: ApiVersion
        pagination:
          total: RecordCount.TotalRecordsFound
          start: RecordCount.StartingRecord
          returned: RecordCount.RecordsReturned
        note: >-
          Every response — success or failure — uses this envelope. A 200 may still carry entries in
          Meta.Errors, notably after a PATCH whose instructions were ignored.
  - target: $.info
    description: Record the absence of an idempotency mechanism as an explicit, machine-readable fact.
    update:
      x-idempotency:
        supported: false
        header: null
        note: >-
          MediaValet publishes no idempotency key, no replay protection and no safe-retry contract
          for unsafe methods. Retrying a POST may duplicate work; read before write.
  - target: $.components.securitySchemes.oauth2
    description: Point the OAuth 2.0 scheme at MediaValet's live OpenID Connect discovery document.
    update:
      x-discovery: https://login.mediavalet.com/.well-known/openid-configuration
      x-issuer: https://iam.mediavalet.com
      x-credential-issuance: >-
        client_id, client_secret and redirect_uri are provisioned by MediaValet support
        (support@mediavalet.com). They are not self-service.
  - target: $.components.securitySchemes.subscriptionKey
    description: Record that the subscription key is required in addition to the bearer token, not as an alternative.
    update:
      x-required-with-oauth: true
      x-issuance: MediaValet Developer Portal profile, after the plan subscription is approved.
      x-throttling-identity: >-
        This key is the Azure API Management throttling identity. Plan limits attach to it, and it
        cannot be sharded to raise throughput.
  - target: $.paths.*.*
    description: Document the two headers every operation requires and the version header, which the source collection carries per-request rather than as reusable parameters.
    update:
      x-required-headers:
        - name: Authorization
          value: bearer <access_token>
        - name: Ocp-Apim-Subscription-Key
          value: <subscription_key>
      x-recommended-headers:
        - name: x-mv-api-version
          value: '1.2'
          reason: Omitting it defaults to API version 1.0.
  - target: $.paths.*.*.responses['403']
    description: Flag the version-dependent meaning of a permission failure.
    update:
      x-version-note: >-
        From API version 1.2 (2025-06-13) an authenticated caller lacking permission receives 403.
        On 1.0 and 1.1 the same condition returns 401. Error handling must be version-aware.
  - target: $.paths.*.*.responses['202']
    description: Flag that acceptance is not completion.
    update:
      x-async-note: >-
        Accepted, not complete. Confirm via a follow-up GET or by subscribing to the corresponding
        SkyHOOK event (asyncapi/mediavalet-skyhook-asyncapi.yml).
  - target: $.tags
    description: Note that tags in the derived document correspond to the folder structure of MediaValet's published collection.
    update:
      x-tag-provenance: >-
        Tag names are MediaValet's own "API Endpoints" folder names from the published Postman
        collection; each maps 1:1 to a per-tag OpenAPI file in openapi/ and to an apis[] entry in
        apis.yml.