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
Generated by API Evangelist
Written by API Evangelist tooling for Oracle Eloqua's API. It is a proposal applied on top of the contract, not a document Oracle Eloqua publishes.
What the actions change
securityDefinitionssecurityx-base-url-discoveryx-server-templatesexternalDocsx-conventionsx-errorsx-contract-notes
Targets 1
$
OpenAPI Overlay
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'