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:
packages/{pkg}/Manifest location:
packages/{pkg}/iflowkit/package.jsonWhat 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
| Field | Purpose |
|---|---|
name | Human-readable JAR base name. |
version | Package version. SemVer is recommended. |
vendor | Display vendor. Defaults can be applied by tooling. |
Systems and services
Packages declare which systems and services they need:
{
"systems": {
"outlook": { "services": ["Mail"] }
}
}This declaration drives packaging so only required assets are bundled.
Plugins
Packages declare plugins by stable plugin ID:
{
"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:
{
"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:
PackageContext.load(Package.PACKAGE_ID)This context can expose systems, plugin parameters and credential metadata.
Recommended package skeleton
packages/{pkg}/
iflowkit/
package.json
Package.groovy
Services.groovy
Plugins.groovy
... package Groovy code ...