Skip to content

jbrazda/iics-cli

iics - Informatica Intelligent Cloud Services CLI

A comprehensive command-line interface for the Informatica Intelligent Cloud Services (IICS) platform REST API v3. Manage assets, users, connections, export/import packages, and more - from your terminal or CI/CD pipelines.

Features

  • Full API v3 coverage - objects, connections, schedules, export/import, users, roles, permissions, runtime environments, agents, tags, source control, and more
  • Interactive setup - guided profile wizard on first run, or via iics profile add
  • Multi-profile configuration - switch between dev/staging/prod orgs with --profile
  • Session caching - reuses sessions across invocations (30-min window) to avoid repeated logins
  • Automatic session refresh - transparent 401 retry with re-authentication
  • Flexible output - human-readable tables (default) or JSON (--output json)
  • CI/CD friendly - environment variable overrides, --yes flag for non-interactive use, JSON output for scripting
  • Cross-platform - builds for Linux, macOS, and Windows (amd64 & arm64)

Installation

From source

Requires Go 1.25 or later.

go install github.com/jbrazda/iics-cli@latest

From releases

Download the pre-built binary for your platform from the Releases page.

Build from source

git clone https://github.com/jbrazda/iics-cli.git
cd iics-cli
make build

Quick Start

1. Set up a profile

iics profile add

The wizard prompts for your username, password, and region, then saves the profile to ~/.iics/config.yaml. You can also set up multiple named profiles:

iics profile add dev
iics profile add prod
iics profile set-default dev

Alternatively, create the config file manually - see the Configuration section.

2. Login

# Uses default profile; prompts for password if not in config
iics login

# Use a specific profile
iics login --profile prod

# Override credentials via environment
IICS_USERNAME=user@company.com IICS_PASSWORD=secret iics login

3. Use commands

# List objects
iics objects list --type MTT

iics objects list                       # all objects, auto-paginated
iics objects list --type MTT            # all mappings, auto-paginated
iics objects list --type MTT --limit 50 # first 50 only
iics objects list --limit 50 --skip 100 # results 101-150

# List objects as JSON
iics objects list --type DTEMPLATE --output json

# List connections
iics connection list

# Get a specific connection
iics connection get --id <connection-id>

# Export assets
iics export create --name "my-export" --ids <asset-id-1>,<asset-id-2>
iics export status --id <job-id>
iics export download --id <job-id> --output export.zip

# Import assets
iics import upload --file export.zip
iics import start --id <job-id>
iics import status --id <job-id>

# List users
iics user list

# Logout
iics logout

Configuration

Config file (~/.iics/config.yaml)

defaultProfile: dev
style:
  theme: default     # default | minimal | compact | plain | markdown | gh
  noColor: false     # true = disable color permanently (same as --no-color)
  headerColor: ""    # lipgloss color: "6"=cyan, "244"=gray, "#FF0000"=hex (empty = theme default)
profiles:
  dev:
    name: "Development Org"
    region: "USE4"
    username: "user@company.com"
    password: ""
    loginUrl: "https://use4.dm-us.informaticacloud.com/saas/public/core/v3/login"
    baseApiUrl: "https://use4.dm-us.informaticacloud.com/saas"
    caiUrl: "https://use4-cai.dm-us.informaticacloud.com"
  prod:
    name: "Production Org"
    region: "EMEA"
    username: "admin@company.com"
    password: "@keyring"   # real password stored in OS keychain
    loginUrl: "https://dm-em.informaticacloud.com/saas/public/core/v3/login"
    baseApiUrl: "https://dm-em.informaticacloud.com/saas"
    caiUrl: "https://dm-em-cai.informaticacloud.com"

The loginUrl, baseApiUrl, and caiUrl fields are populated automatically after the first iics login - you do not need to set them manually.

The style section controls table output appearance. Available themes:

Theme Description
default Unicode rounded borders, cyan bold headers (TTY only)
minimal No borders, colored bold headers with unicode underline
compact No borders, gray bold headers, 1-space column gap (TTY only)
plain ASCII borders, no color - used automatically for non-TTY output
markdown GitHub-flavored markdown table, no color, always rendered regardless of TTY
gh GitHub CLI-style: no borders, no separator, plain headers, no color, always rendered regardless of TTY

Non-TTY output (piped, redirected) always uses plain regardless of the configured theme. The markdown and gh themes are exceptions - they always render as-is even when output is piped, since they are already colorless. The NO_COLOR environment variable is also respected.

The style.headerColor field accepts a lipgloss color string ("6" for cyan, "244" for gray, "#FF0000" for hex) and overrides the built-in header color for default and minimal themes. Leave empty to use the theme default.

Environment variable overrides

Variable Description
IICS_PROFILE Override default profile
IICS_USERNAME Override profile username
IICS_PASSWORD Override profile password (takes precedence over keychain)
IICS_REGION Override profile region
IICS_LOGIN_URL Override computed login URL
IICS_CAI_URL Override profile caiUrl
IICS_OUTPUT Override default output format
IICS_THEME Override table theme (same values as --theme flag)

Environment variables take precedence over config file values.

Supported regions

Region ssLogin Host
US, USW1, USE2, USW3, USE4, USW5, USE6 dm-us.informaticacloud.com
USW1-1, USW3-1 dm1-us.informaticacloud.com
USW1-2 dm2-us.informaticacloud.com
CAC1 dm-na.informaticacloud.com
APSE1, APJ dm-ap.informaticacloud.com
APNE1 dm1-ap.informaticacloud.com
EMEA, EMWE1 dm-em.informaticacloud.com

Security

Passwords stored in ~/.iics/config.yaml can be protected using the OS keychain instead of keeping them in plaintext. When you add or edit a profile interactively, iics-cli offers to store the password in the OS keychain and writes the sentinel value @keyring in the config file instead of the real password.

Supported backends:

Platform Backend
macOS macOS Keychain (security framework)
Linux D-Bus Secret Service (e.g. GNOME Keyring, KWallet)
Windows Windows Credential Manager

To store a password for an existing profile:

iics profile set-password <profile-name>

To move a profile's password into the keychain after manual config edits:

iics profile set-password dev

IICS_PASSWORD always takes precedence over both the keychain and plaintext config, making it easy to override credentials in CI pipelines without touching the config file.

Commands

Command Alias Subcommands Description
profile add, edit, list, delete, set-default, set-password, show Manage connection profiles
login Authenticate and cache session
logout Invalidate session
objects list, dependencies List/search assets, find dependencies
lookup Resolve object IDs, names, and paths
connection conn list, get, create, update, delete Manage connections
export run, start, status, download, create Export asset packages
import imp run, upload, start, status, download-log Import asset packages
publish start, status, run Publish CAI assets to the runtime
unpublish start, status, run Unpublish CAI assets from the runtime
package expand, create, dependencies Extract, assemble, or inspect dependencies of IICS export packages
project create, update, delete Manage projects
folder create, update, delete Manage folders
schedule list, get, create, update, delete Manage schedules
user list, get, create, update, delete Manage users
usergroup ug list, get, create, update, delete Manage user groups
role list, get, create, update, delete Manage roles
privilege list List available privileges
runtime rt list, get, create, update Manage runtime environments
agent list, get, details, start, stop Manage Secure Agents
tag assign, remove Assign/remove tags on objects
permission perm get, set, delete Manage object-level permissions
activitylog list, get Query activity logs for completed jobs
auditlog list Query organization audit log (V2 API)
securitylog list Query security audit log
metering get, download Query usage and metering data
sourcecontrol sc checkout, checkin, pull, commit Source control operations
state fetch, load Fetch/load object state snapshots
completion bash, zsh, fish, powershell Generate shell completion scripts

Keeping completions up to date: After adding or changing any command or flag, regenerate the shell completion scripts by running make completions. The pre-generated scripts live in the completions/ directory and must be committed together with the code change.

Global flags

Flag Short Description
--profile -p Profile to use (overrides default)
--output -o Output format: table (default), json, csv, yaml
--verbose -v Enable verbose output
--no-color Disable colored output and force plain table theme
--theme Table theme: default, minimal, compact, plain, markdown, gh (overrides config)
--config Config file path (default ~/.iics/config.yaml)
--debug Print full HTTP request/response trace to stderr

Development

Prerequisites

  • Go 1.25+
  • Make

Build and test

# Build
make build

# Run tests
make test

# Run linter
make lint

# Run all checks
make all

Install from Build

make install

Compiles the binary and installs it to $GOPATH/bin (typically ~/go/bin), making iics available system-wide without specifying a path. The build injects the current git tag or commit SHA as the version string via -ldflags, and strips debug symbols (-s -w) to reduce binary size.

Project structure

See docs/DESIGN.md for the full design document.

Contributing

See CONTRIBUTING.md for guidelines.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

About

Informaticaa IICS(IDMC) API CLI implemented in go

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors