Oracle Eloqua · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Oracle Eloqua published Swagger

5 actions 5 updates security extends ../openapi/eloqua-published-swagger.json
Derived by API Evangelist Built from the contracts Oracle Eloqua publishes. Oracle Eloqua did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

securityDefinitionssecurityx-base-url-discoveryx-server-templatesexternalDocsx-conventionsx-errorsx-contract-notes

Targets 1

$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Oracle Eloqua published Swagger
  version: 1.0.0
x-provenance:
  generated: '2026-08-13'
  method: generated
  source: openapi/eloqua-published-swagger.json
  note: >-
    Non-destructive enhancement layer over Oracle's published contract. The original at
    openapi/eloqua-published-swagger.json is never mutated. This overlay records the four gaps
    that stop the published spec from being usable as a standalone contract — no declared
    security, no host, no external docs, and no runtime semantics — and supplies them from
    Oracle's own prose documentation. Values are transcribed from Oracle's docs, never invented.
    Note: the target document is Swagger 2.0, so the security actions below emit
    securityDefinitions rather than components.securitySchemes.
extends: ../openapi/eloqua-published-swagger.json
actions:
  - target: $
    description: >-
      Declare the authentication the API actually requires. Oracle's published Swagger declares
      no securityDefinitions and no security requirement on any of its 649 operations, so a
      generator reading it alone produces unauthenticated clients.
    update:
      securityDefinitions:
        oAuth2:
          type: oauth2
          flow: accessCode
          authorizationUrl: https://login.eloqua.com/auth/oauth2/authorize
          tokenUrl: https://login.eloqua.com/auth/oauth2/token
          description: >-
            OAuth 2.0 authorization code grant. Oracle's recommended scheme. Client Id and
            Client Secret are minted in the Eloqua instance under
            Settings > AppCloud Developer > Create New App.
          scopes:
            full: Full access to all Eloqua resources reachable by the authorizing user.
        basicAuth:
          type: basic
          description: >-
            HTTP Basic using CompanyName\Username and password. Supported but discouraged by
            Oracle in favour of OAuth 2.0.
      security:
        - oAuth2:
            - full
        - basicAuth: []

  - target: $
    description: >-
      Record that Eloqua has no fixed host, and how the real one is discovered. The published
      Swagger omits host and basePath entirely — correct, but silent about why.
    update:
      x-base-url-discovery:
        required: true
        endpoint: https://login.eloqua.com/id
        method: GET
        authenticated: true
        minimum_permission: Advanced Users - Marketing
        response_fields:
          - urls.base
          - urls.apis.rest.standard
          - urls.apis.rest.bulk
        pods:
          - p01
          - p02
          - p03
          - p04
          - p06
          - p07
          - p08
        caching: Cache for the user's session. Oracle throttles this endpoint.
        on_401: >-
          Re-call /id. Success means the instance moved data centers — retry at the new base.
          Failure means stop calling.
        docs: https://docs.oracle.com/en/cloud/saas/marketing/eloqua-rest-api/DeterminingBaseURL.html
      x-server-templates:
        - url: https://{pod}.eloqua.com/API/REST/2.0
          family: Application API
        - url: https://{pod}.eloqua.com/api/bulk/2.0
          family: Bulk API
        - url: https://{pod}.eloqua.com/api/reporting/1.0
          family: Reporting API

  - target: $
    description: Attach the external documentation the reference itself is built from.
    update:
      externalDocs:
        description: Oracle Eloqua REST API reference
        url: https://docs.oracle.com/en/cloud/saas/marketing/eloqua-rest-api/

  - target: $
    description: >-
      Attach the runtime semantics an agent needs and the spec omits — pagination per family,
      rate-limit posture, error envelope, and the absence of idempotency.
    update:
      x-conventions:
        source: conventions/eloqua-conventions.yml
        idempotency:
          supported: false
          note: No idempotency key documented. Write retries can duplicate records.
        pagination:
          application_api:
            style: page-number
            params:
              - page
              - count
            count_max: 1000
          bulk_api:
            style: limit-offset
            params:
              - limit
              - offset
            response_fields:
              - count
              - hasMore
              - items
              - totalResults
          reporting_api:
            style: odata
            params:
              - $top
              - $skip
              - $count
        depth:
          param: depth
          values:
            - minimal
            - partial
            - complete
          not_supported_on: Reporting API
        request_headers:
          - Content-Type (mandatory on PUT/POST)
          - Accept
          - X-HTTP-Method-Override
          - X-HTTP-Status-Code-Override
        rate_limits:
          headers: none
          exhaustion_status: 429
          published_numbers: false
          source: rate-limits/eloqua-rate-limits.yml
      x-errors:
        rfc9457: false
        envelope:
          - type
          - parameter
          - requirement
          - value
        eloqua_status_codes: 84
        source: errors/eloqua-problem-types.yml

  - target: $
    description: >-
      Record the contract-quality defects found in the published document so downstream tooling
      does not silently mis-bind. These are observations about the original, not edits to it.
    update:
      x-contract-notes:
        operation_id_uniqueness: false
        operation_id_note: >-
          operationIds are reused across endpoints — "SearchGETRest20" and
          "ReadIndividualGETRest20" each appear on dozens of paths. Bind tools by path+method.
        response_examples: 0
        security_declared: false
        spec_version: swagger-2.0
        contract_version: '2026.08.07'

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/eloqua-published-swagger-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.