Platform integration

API strategy

iPaaS integration for third-party APIs: a step-by-step guide for teams shipping agents

iPaaS integration for third-party APIs: a seven-step guide covering OpenAPI import, connector generation, OAuth 2.1, idempotency, and drift monitoring.

6 minute read
Decorative imagery showcasing Pontil's brand

By the end of this guide you'll have a working iPaaS integration pattern for third-party APIs that survives contact with an AI agent — one that scans an OpenAPI spec, generates a connector, wires up per-user auth, ships to production behind a flag, and stays current as the upstream API drifts.

Prerequisites: an iPaaS account (Workato, Boomi, Prismatic, Paragon, or similar), an OpenAPI 3.x spec for the target API, OAuth 2.0 credentials from the API vendor (we'll use the OAuth 2.1-recommended authorization code + PKCE flow), and a CI pipeline you control. Time required: about a day for the first integration end to end, plus a recurring maintenance loop.

One thing before you start. iPaaS integration is the right tool for system-to-system data movement. If the caller is an AI agent invoking tools at runtime, the shape of the problem changes. This guide flags where the pattern holds and where it stops short.

Step 1 — Scope one integration, not the platform

The fastest way to sink an iPaaS project is to model every third-party API on day one. Don't.

Pick one workflow. One direction of data flow. One upstream API. If your team wants to sync deals from Salesforce into an internal system, that's the scope — not "CRM integration."

Write the workflow down in one sentence: "When a Salesforce Opportunity moves to Closed Won, create a matching record in our billing service and post a Slack message." If you can't get it into a sentence, split it.

Step 2 — Get the OpenAPI spec, and verify it matches reality

Most iPaaS platforms can import an OpenAPI spec and generate a connector scaffold. Workato calls this the Connector SDK (which supports importing from an OpenAPI spec). Boomi has the Connector SDK, plus an OpenAPI Connector Builder for spec-driven connectors. Prismatic uses the Prism CLI (prism components:init --open-api-path …) to scaffold a custom component from an OpenAPI spec. The mechanic is the same: point it at the spec, get a typed connector.

Before you import, verify the spec.

# Fetch and lint the spec
curl -o vendor-api.yaml https://api.vendor.example/openapi.yaml
npx @stoplight/spectral-cli lint vendor-api.yaml

# Diff against the last known-good version
# oasdiff is a Go binary — install via `brew install oasdiff`,
# `go install github.com/oasdiff/oasdiff@latest`, or run via Docker:
docker run --rm -v "$PWD":/specs tufinio/oasdiff breaking \
  /specs/vendor-api.previous.yaml /specs/vendor-api.yaml

If spectral throws warnings on missing operation IDs, missing response schemas, or untyped parameters, fix them in your local copy before generating the connector. A spec with holes generates a connector with holes.

Expected result: a lint-clean spec and a diff showing zero unexpected breaking changes since the last import.

Step 3 — Generate the connector

Run your iPaaS platform's connector generator against the verified spec. In Prismatic:

prism components:init vendor-connector --open-api-path ./vendor-api.yaml
cd vendor-connector
npm install
npm run build

In Workato, import the spec through the Connector SDK and let it emit the action stubs. In Boomi, use the OpenAPI Connector Builder to generate a connector from the spec.

What you get back is a set of actions, one per operation in the spec. Rename them so they read as workflow verbs, not HTTP verbs. POST /opportunities/{id}/close should become Close opportunity, not postOpportunitiesIdClose. Agents and humans both benefit — but this matters most when the connector's actions later become tool descriptions an LLM has to disambiguate.

Step 4 — Wire OAuth 2.1 with per-user tokens

The default in most iPaaS templates is a single service-account credential shared across the tenant. Don't ship that. It collapses the audit trail and breaks the moment the upstream API enforces per-user rate limits.

Configure the connector's auth block for the OAuth 2.1-recommended authorisation code flow with PKCE:

authorization:
  type: oauth2
  grant: authorization_code
  authorization_url: https://vendor.example/oauth/authorize
  token_url: https://vendor.example/oauth/token
  scopes:
    - opportunities:read
    - opportunities:write
  pkce: required
  refresh_token: rotating

Store refresh tokens per end-user, not per workspace. When the workflow runs, the iPaaS platform mints a short-lived access token scoped to that user's permissions. This is the boundary security review will actually ask about.

Step 5 — Build the workflow with idempotency at every write

Drop the generated connector into a workflow. Trigger on the Salesforce event, call Close opportunity on the downstream, then post to Slack.

Every write step needs an idempotency key. Third-party APIs retry. iPaaS platforms retry. Agents retry. Without a key, you'll double-charge, double-notify, or double-close.

// In the Close opportunity action
headers: {
  "Idempotency-Key": `${workflowRunId}-${opportunityId}-close`
}

Use a key that's deterministic on retry — workflow run ID plus resource ID plus action — so the same input always produces the same key.

Step 6 — Ship behind a flag, monitor the first 100 runs

Deploy to production with the workflow disabled for everyone except one pilot customer. Watch the run log for:

  • 4xx responses that indicate schema drift (the spec said one thing, the API returned another).
  • 429 responses (per-user rate limit tripping earlier than expected).
  • Retry storms (idempotency key not being honoured upstream).
  • Silent successes with wrong data (the action returned 200 but the wrong record updated).

Fix each of these before widening the flag. The last one is the hardest to catch and the one browser-automation-based integration approaches routinely miss.

Step 7 — Automate connector maintenance

This is where iPaaS integrations quietly die. The vendor ships a v2 of their API. Your connector, generated six months ago, still points at v1. Nothing breaks for weeks — until v1 hits its sunset date.

Set up a nightly job in CI:

# .github/workflows/connector-drift.yml
name: Connector drift check
on:
  schedule:
    - cron: "0 3 * * *"
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Fetch upstream spec
        run: curl -o current.yaml https://api.vendor.example/openapi.yaml
      - name: Install oasdiff
        run: |
          curl -fsSL https://raw.githubusercontent.com/oasdiff/oasdiff/main/install.sh | sh
      - name: Diff against committed spec
        run: |
          oasdiff breaking committed.yaml current.yaml \
            --format json > drift.json
      - name: Alert on breaking change
        if: failure()
        run: ./scripts/notify-integrations-team.sh drift.json

When the diff shows a breaking change, the alert lands with the team that owns the connector. Not the customer. Not the on-call at 3 a.m. after production breaks. This is the discipline connector deprecation actually requires.

Common pitfalls

Treating the OpenAPI spec as authoritative. Vendors publish specs that don't match runtime behaviour — undocumented required fields, response shapes that differ from the schema, enum values the spec doesn't list. Assume drift. Test against the live API, not just the generated types.

Sharing one OAuth app across all customers. Rate limits get tripped by your loudest tenant. Move to per-tenant OAuth apps if the vendor supports it.

Skipping the sandbox. Every meaningful third-party API has a sandbox. Test in it. Production data is not where you discover that the connector's delete action doesn't ask twice.

Assuming iPaaS covers the agent case. iPaaS integration was designed for scheduled system-to-system data movement. It handles that well. When an AI agent needs to call these same actions at runtime — with delegated identity, sub-second latency, and per-call authorisation — the iPaaS runtime model starts to strain. That's a different problem, and worth naming honestly rather than papering over with the same connector.

Join our weekly newsletter

Stay up to date on the ever changing agentic landscape.

POSTS

Related content

Platform integration

Agent infrastructure

What is iPaaS? A deep-dive on integration platform as a service, and where it stops short for agents

9 minute read

Platform integration

Agent infrastructure

Embedded iPaaS vs the tools layer: which one your AI agents actually need

7 minute read

Platform integration

Agents in production

Connector deprecation is not an event, it's a permanent operating condition

5 minute read