Responsys · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Oracle Responsys REST API

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

What the actions change

x-agentic-consequencex-agentic-guidancex-apievangelist-profilex-apievangelist-sourcex-apievangelist-harvestedx-spec-version-notecontactx-api-reference

Targets 6

$.info
$
$.paths['/rest/api/v1.3/campaigns/{campaignName}/email'].post
$.paths['/rest/api/v1.3/campaigns/{campaignName}/sms/trigger '].post
$.paths['/rest/api/v1.3/campaigns/{campaignName}/push '].post
$.paths

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Oracle Responsys REST API
  version: 1.0.0
extends: openapi/responsys-openapi.yml
x-generated: '2026-08-13'
x-method: generated
x-source: >-
  Enhancements derived from the Responsys developer documentation and the artifacts in
  this repo. The harvested document is Swagger 2.0 and is never mutated — every gap Oracle
  left in the spec is recorded here as an action instead.
actions:
- target: $.info
  description: Provenance and the rating context for this profile.
  update:
    x-apievangelist-profile: https://apis.io/provider/responsys/
    x-apievangelist-source: https://docs.oracle.com/en/cloud/saas/marketing/responsys-rest-api/swagger.json
    x-apievangelist-harvested: '2026-08-13'
    x-spec-version-note: >-
      Published as Swagger 2.0 with info.version 2023.03.03 — two major versions behind
      current OpenAPI, and last stamped in March 2023.
- target: $.info
  description: >-
    The document declares no contact or documentation links; add the real ones Oracle
    publishes elsewhere.
  update:
    contact:
      name: Oracle Responsys Developer Documentation
      url: https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop/index.html
    x-api-reference: https://docs.oracle.com/en/cloud/saas/marketing/responsys-rest-api/rest-endpoints.html
- target: $
  description: >-
    GAP — the document declares no host, basePath or schemes, so no client can be
    generated from it without external knowledge. Record the real host model: a login host
    to authenticate, then the pod endPoint returned in the auth response.
  update:
    x-servers:
    - url: https://login5.responsys.net
      description: Responsys Interact 5 authentication host
    - url: https://login2.responsys.net
      description: Responsys Interact 2 authentication host
    - url: https://login.rsys8.net
      description: Responsys Interact 8 authentication host
    - url: https://login.rsys9.net
      description: Responsys Interact 9 authentication host
    - url: https://{accountToken}-api.responsys.ocs.oraclecloud.com
      description: Global-routing REST endpoint
    x-server-note: >-
      Authenticate against a login host, then switch to the endPoint URL returned by
      /rest/api/v1.3/auth/token. All of these hosts refuse connections from the public
      internet — TCP 443 times out from an unprovisioned network.
    x-basePath: /rest/api/v1.3
- target: $
  description: >-
    GAP — the document declares no securityDefinitions and applies no security to any of
    its 88 operations, so the spec reads as an unauthenticated API. It is not.
  update:
    x-securityDefinitions:
      ResponsysAuthToken:
        type: apiKey
        in: header
        name: Authorization
        description: >-
          Session authToken obtained from POST /rest/api/v1.3/auth/token (auth_type
          password | token | certificate). Sent with no scheme prefix. Short-lived.
    x-security-note: See authentication/responsys-authentication.yml.
- target: $
  description: >-
    GAP — every operation declares only a `default` response. Record the real error
    contract so an agent can branch on it.
  update:
    x-error-envelope:
      content_type: application/json
      rfc9457: false
      shape: '{type, title, errorCode, detail, errorDetails[]}'
      branch_on: errorCode
      catalog: errors/responsys-problem-types.yml
- target: $
  description: Runtime semantics the spec cannot express.
  update:
    x-rate-limits:
      scope: per-account-per-function
      window: 1 minute
      default_limit: 200
      introspection: GET /rest/api/ratelimit
      response_headers: none
      exhaustion_error: API_LIMIT_EXCEEDED
      artifact: rate-limits/responsys-rate-limits.yml
    x-idempotency:
      supported: false
      note: >-
        No idempotency key. Treat triggered sends as at-most-once; do not auto-retry on
        timeout.
      artifact: conventions/responsys-conventions.yml
    x-event-surface:
      style: webhook-callback
      events: 26
      artifact: asyncapi/responsys-event-notification-webhooks.yml
- target: $.paths['/rest/api/v1.3/campaigns/{campaignName}/email'].post
  description: >-
    Consequence marking — this operation dispatches real email to real people and is not
    reversible.
  update:
    x-agentic-consequence: physical
    x-agentic-guidance: >-
      Requires explicit human confirmation. Not safe to retry on timeout — no idempotency
      key exists.
- target: $.paths['/rest/api/v1.3/campaigns/{campaignName}/sms/trigger '].post
  description: Consequence marking — dispatches real SMS.
  update:
    x-agentic-consequence: physical
    x-agentic-guidance: Requires explicit human confirmation. Not safe to retry on timeout.
- target: $.paths['/rest/api/v1.3/campaigns/{campaignName}/push '].post
  description: Consequence marking — dispatches real mobile push.
  update:
    x-agentic-consequence: physical
    x-agentic-guidance: Requires explicit human confirmation. Not safe to retry on timeout.
- target: $.paths
  description: >-
    DEFECT recorded, not repaired — several path keys in the harvested document carry a
    TRAILING SPACE (for example '/rest/api/v1.3/campaigns/{campaignName}/push ',
    '/rest/api/v1.3/events ', '/rest/api/v1.3/campaigns/{campaignName}/sms/trigger ').
    Tooling that does not trim will request the wrong URL. Left verbatim in
    openapi/_original/ so the provider's own artifact is preserved exactly as published.
  update:
    x-known-defects:
    - kind: trailing-whitespace-in-path-keys
      affects: 3 or more paths
    - kind: duplicate-operationIds
      note: >-
        operationId values are generated from method+path (e.g. 'get /rest/api/v1.3/events')
        and collide where one path serves several intents via overloaded POST bodies.
    - kind: no-response-codes
      note: All 88 operations declare only a `default` response — no 2xx, no 4xx, no 5xx.