Documentation Index

Fetch the complete documentation index at: https://docs.aifabrix.ai/llms.txt

Use this file to discover all available pages before exploring further.

CIP execution

Prev Next

CIP (Composable Integration Pipeline) runs governed Business Entity operations at runtime — list, get, create, update, delete, and custom capability keys — with the caller's identity, RBAC/ABAC, and audit context applied before any vendor API call.

Author pipelines on Configure data flow. This page is the runtime + certification companion: mental model, generated vs extended CIP, testPayload, and the CLI proof ladder.

Why it matters

Role Assistants do not call vendor APIs directly. They request compiled capability keys. CIP is the execution layer that honors those keys: Operational Trust checks first, then ordered steps, then normalized records for sync, evidence hooks, and agent metadata.

Without a valid execution block on each exposed Business Entity, certification and live capability requests fail even when OpenAPI import succeeded.

CIP is not Runtime continuation (Decision Engine, Ask/Approval, Review Workspace). Those consume CIP results; they do not replace execution.cip.

Prerequisites

  • Business Entity JSON with root capabilities[] and exposed aligned to resourceType
  • Schema-valid execution per Configure data flow
  • Governed capabilities understood
  • Green aifabrix validate <systemKey> before integration or E2E tests

Where it lives

Layer Location
CIP operations and steps <datasourceKey>.jsonexecution.cip.operations
OpenAPI step bindings Same file → openapi.operations
Test fixtures for E2E Same file → testPayload
UI editing Business Entity Data Flow tab (?tab=cip)

CIP is per Business Entity, not on the Connected System manifest.

How to set

  1. Start from generated execution — OpenAPI import usually produces default CIP for standard operations. Extend only for pagination, map/filter, http fetches, or multi-datasource orchestration. Step reference: CIP step catalog.

  2. Keep binding law intact after edits — capability key = CIP operation key; fetch.openapiRef = openapi.operations key when source: openapi.

  3. Add production-grade testPayload — E2E and integration tests merge CLI flags with manifest fixtures. Without testPayload, capacity/CRUD paths may fail at the config step:

{
  "testPayload": {
    "mode": "live",
    "primaryKey": { "externalId": "e2e-fixture-001" },
    "useCopyForMutations": true,
    "payloadTemplate": {
      "externalId": "e2e-fixture-001",
      "name": "E2E Customer",
      "country": "Finland"
    },
    "expectedResult": {
      "externalId": "e2e-fixture-001",
      "name": "E2E Customer",
      "country": "Finland"
    },
    "scenarios": [
      { "operation": "list", "enabled": true },
      { "operation": "get", "enabled": true },
      { "operation": "create", "enabled": true, "input": { "name": "E2E Customer" } },
      { "operation": "update", "enabled": true, "input": { "country": "Sweden" } },
      { "operation": "delete", "enabled": true }
    ]
  }
}
testPayload field Production practice
primaryKey Concrete values for list/get/mutations; use primaryKey.search when resolving a row via list
payloadTemplate / expectedResult Shape field mappings and metadata before live vendor calls
scenarios Ordered operation evidence; disable destructive steps in shared tenants with enabled: false
useCopyForMutations Default true when create runs — merges returned ids into later get/update/delete
mode live for certification; mock for offline unit tests only
  1. Re-validate after execution edits:
aifabrix validate <systemKey>
aifabrix test <systemKey>
  1. Run integration then E2E (test credentials and isolated tenants):
aifabrix test-integration <systemKey>
aifabrix datasource test-e2e <datasourceKey> --app <systemKey> --test-crud

Use --primary-key-value @pk.json when reusing an existing vendor record. Prefer --verify-audit when governance audit proof is required.

  1. Certify operations — green E2E with --test-crud when capabilities mutate external data, then verify-operations.

Defaults and examples

Guideline Reason
Prefer generated CIP first Matches OpenAPI; easier to validate
Keep pipelines entity-scoped Clear ownership and certification boundaries
Operation keys match capability keys Including custom keys with the same naming pattern
Author testPayload before first E2E Avoids config-step failures
Re-upload after execution changes Online drift breaks verify-operations

Root identity required before execution compiles:

Field CIP impact
key Pipeline ownership
systemKey Auth and connection context
entityType Sync/normalization path
resourceType Capability and RBAC prefix
primaryKey CRUD identity and testPayload.primaryKey

Validate

aifabrix validate <systemKey>
aifabrix test-integration <systemKey>
aifabrix verify-operations <systemKey>
aifabrix datasource test-e2e <datasourceKey> --app <systemKey>

Bypassing capabilities to call vendor APIs directly from agents breaks Operational Trust — route through compiled capability keys and CIP.

Failure diagnosis

Symptom Likely cause Fix
Validate fails on steps Invented step key or missing required property Step catalog + schema
Runtime fetch errors openapiRef mismatch Align with openapi.operations
Capability not executable CIP enabled: false or missing operation Enable matching operation + capability
Wrong engine python/datasource without entrypoint or chain Prefer engine: cip unless intentional
Legacy shape pipeline instead of cip.operations Migrate to execution.cip

Common mistakes

Mistake Impact Fix
Missing testPayload E2E config step fails Add primaryKey, template, and scenarios
Custom CIP without E2E Operations cert fails on live API datasource test-e2e --test-crud
Wrong execution shape Validate errors execution.engine: cip + execution.cip.operations
OpenAPI ref mismatch Runtime fetch errors Align openapiRef
Bypassing capabilities Ungoverned AI access Route through compiled capabilities
Editing CIP without re-upload Online drift upload + show --online

Limits

Authoring depth lives on Configure data flow and the CIP step catalog. This page does not list every step property. Complex multi-entity orchestration belongs in separate Business Entities linked by foreignKeys[]. Keep custom steps idempotent when --test-crud runs.