Skip to content

Packages & Manifest

A package is a CPI-oriented unit of integration logic that can be built into a single JAR and reused across iFlows.

Repository location:

text
packages/{pkg}/

Manifest location:

text
packages/{pkg}/iflowkit/package.json

What the manifest controls

package.json is the source of truth for what gets included in the build and how runtime configuration is resolved.

Common fields

FieldPurpose
nameHuman-readable JAR base name.
versionPackage version. SemVer is recommended.
vendorDisplay vendor. Defaults can be applied by tooling.

Systems and services

Packages declare which systems and services they need:

json
{
  "systems": {
    "outlook": { "services": ["Mail"] }
  }
}

This declaration drives packaging so only required assets are bundled.

Plugins

Packages declare plugins by stable plugin ID:

json
{
  "plugins": {
    "email": {
      "id": "com.iflowkit.plugin.email",
      "parameters": {
        "defaultSenderAddress": "no-reply@iflowkit.local"
      }
    }
  }
}

The build includes only selected plugins. At runtime, packages can access plugin parameters through PackageContext.

Credentials

Packages can declare credential requirements:

json
{
  "credentials": {
    "outlook": [
      {
        "name": "OUTLOOK_AUTHCODE",
        "typeCode": "oauth2.authorizationCode",
        "propertyName": "IFK_OUTLOOK_AUTH"
      }
    ]
  }
}

Credential declarations help standardize tenant setup and runtime expectations.

Runtime access

Packages typically load their manifest context with:

groovy
PackageContext.load(Package.PACKAGE_ID)

This context can expose systems, plugin parameters and credential metadata.

text
packages/{pkg}/
  iflowkit/
    package.json
    Package.groovy
    Services.groovy
    Plugins.groovy
  ... package Groovy code ...