IppCli 5.0.1

dotnet tool install --global IppCli --version 5.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local IppCli --version 5.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=IppCli&version=5.0.1
                    
nuke :add-package IppCli --version 5.0.1
                    

IppCli (ipp-cli)

NuGet NuGet downloads License

IppCli is a cross-platform command-line tool for interacting with Internet Printing Protocol (IPP) printers, print servers (e.g. CUPS), and IPP System Services. Built on .NET 10 with SharpIppNext and Spectre.Console.

Features

  • Standard IPP Operations: Complete coverage of RFC 8011, RFC 3995, RFC 3996, RFC 3998, PWG 5100.5, PWG 5100.13, and PWG 5100.22.
  • Top-Level Commands: Direct, standard IPP operation commands without nested subcommands.
  • Flexible Options & JSON Support: Configure individual parameters via command-line flags or supply full/partial JSON payloads (inline or via @file.json).
  • Multiple Output Formats: Rich formatted Spectre.Console tree (Tree) or machine-readable indented JSON (Json).
  • SSL / TLS Flexibility: Built-in -k / --insecure option to bypass SSL validation for local devices with self-signed certificates.
  • Packaged as .NET Tool: Install globally using dotnet tool install -g IppCli and execute anywhere via ipp-cli.

Installation

As a Global .NET Tool

dotnet tool install -g IppCli

From Source

git clone https://github.com/danielklecha/IppCli.git
cd IppCli
dotnet build -c Release

Options & Syntax

Core Options

All commands support the following core settings:

Option Description Default
-o, --output <FORMAT> Output format (Tree or Json) Tree
-k, --insecure, --ignore-ssl-errors Bypass SSL / TLS certificate validation errors false
-t, --timeout <SECONDS> HTTP request timeout in seconds 30
-r, --request <JSON> Full IPP request JSON string or @file.json
--version <VERSION> IPP protocol version (1.0, 1.1, 2.0, 2.1, 2.2) 1.1
--request-id <ID> IPP request identifier 1
-h, --help Display command help and list available options

Attribute Groups & Prefix Conventions

IPP operation parameters are organized by attribute group prefixes:

  • Operation Attributes (--op-*): Parameters sent in the operation attributes group.
    • --op <JSON>: Full Operation Attributes JSON string or @file.json
    • --op-printer-uri <URI>: Target printer or service URI (e.g. ipp://..., ipps://..., http://...)
    • --op-job-uri <URI>: Target job URI
    • --op-job-id <ID>: Target job ID
    • --op-document-number <NUM>: Document sequence number
    • --op-requesting-user-name <USER>: Requesting user name (defaults to current OS user)
    • --op-requested-attributes <ATTRS>: Comma-separated list of attributes to query
    • --op-which-jobs <VALUE>: Job queue filter (completed, not-completed, all)
    • --op-my-jobs: Filter jobs submitted by the current user
    • --op-message <TEXT>: Reason or message associated with the operation
  • Job Template Attributes (--jta-*): Job configuration settings.
    • --jta <JSON>: Full Job Template Attributes JSON string or @file.json
    • --jta-copies <COUNT>: Number of copies
    • --jta-sides <VALUE>: Duplex mode (one-sided, two-sided-long-edge, two-sided-short-edge)
    • --jta-print-color-mode <VALUE>: Color mode (color, monochrome, auto)
    • --jta-media <NAME> / --jta-media-col <JSON>: Media type, size, and tray collection
  • Printer Attributes (--pa-*): Printer administrative settings.
    • --pa <JSON>: Full Printer Attributes JSON string or @file.json
    • --pa-printer-info <TEXT>, --pa-printer-location <TEXT>, etc.
  • Document Template Attributes (--dta-*): Document-level settings.
    • --dta <JSON>: Full Document Template Attributes JSON string or @file.json
    • --dta-copies <COUNT>, --dta-media-col <JSON>, etc.
  • Document Stream (--document <PATH>): File path to upload when using print-job or send-document.

Commands

All IPP operations are available as top-level commands:

Command Description
ipp-cli activate-printer Activate printer
ipp-cli cancel-current-job Cancel the currently printing job
ipp-cli cancel-document Cancel a document
ipp-cli cancel-job Cancel a specific print job
ipp-cli cancel-jobs Cancel multiple print jobs
ipp-cli cancel-my-jobs Cancel all jobs submitted by current user
ipp-cli cancel-subscription Cancel subscription
ipp-cli close-job Close a multi-document job
ipp-cli create-job Create an empty multi-document print job
ipp-cli create-job-subscriptions Create job subscriptions
ipp-cli create-printer-subscriptions Create printer subscriptions
ipp-cli cups-get-printers Get all printers known to CUPS server
ipp-cli deactivate-printer Deactivate printer
ipp-cli disable-all-printers Disable all printers on the system
ipp-cli disable-printer Disable printer from accepting new jobs
ipp-cli enable-all-printers Enable all printers on the system
ipp-cli enable-printer Enable printer to accept new jobs
ipp-cli get-document-attributes Get document attributes
ipp-cli get-documents List documents belonging to a job
ipp-cli get-job-attributes Get attributes of a specific job
ipp-cli get-jobs List print jobs from the printer queue
ipp-cli get-notifications Get notifications for a subscription
ipp-cli get-printer-attributes Get attributes of the target printer
ipp-cli get-printer-supported-values Get supported values for printer attributes
ipp-cli get-printers Get printers from system
ipp-cli get-resource-attributes Get resource attributes
ipp-cli get-resources Get resources on the system
ipp-cli get-subscription-attributes Get subscription attributes
ipp-cli get-subscriptions List active subscriptions
ipp-cli get-system-attributes Get system attributes
ipp-cli get-system-supported-values Get system supported values
ipp-cli get-user-printer-attributes Get user printer attributes
ipp-cli hold-job Hold a pending job from scheduling
ipp-cli hold-new-jobs Hold all newly submitted jobs
ipp-cli identify-printer Identify physical printer
ipp-cli pause-all-printers Pause all printers on the system
ipp-cli pause-printer Pause printer scheduling and processing
ipp-cli print-job Submit a print job with document data
ipp-cli promote-job Promote a job to the front of the queue
ipp-cli purge-jobs Purge all jobs from the printer queue
ipp-cli release-held-new-jobs Release all held new jobs
ipp-cli release-job Release a previously held job
ipp-cli renew-subscription Renew subscription
ipp-cli restart-job Restart a completed or retained job
ipp-cli restart-printer Restart the printer
ipp-cli restart-system Restart the IPP system
ipp-cli resubmit-job Resubmit an existing job
ipp-cli resume-all-printers Resume all printers on the system
ipp-cli resume-job Resume a previously suspended job
ipp-cli resume-printer Resume printer scheduling and processing
ipp-cli send-document Send a document stream to a created job
ipp-cli set-document-attributes Set document attributes
ipp-cli set-job-attributes Set settable job attributes
ipp-cli set-printer-attributes Set printer attributes
ipp-cli shutdown-all-printers Shutdown all printers on the system
ipp-cli shutdown-printer Shutdown the printer
ipp-cli startup-all-printers Startup all printers on the system
ipp-cli startup-printer Startup the printer
ipp-cli suspend-current-job Suspend current printing job
ipp-cli validate-document Validate document template attributes
ipp-cli validate-job Validate if job attributes would be accepted

Examples

Query Printer Attributes

ipp-cli get-printer-attributes --op-printer-uri ipp://192.168.1.50:631/ipp/print
ipp-cli print-job --op-printer-uri ipps://printer.local/ipp/print --document document.pdf --jta-copies 2 --jta-sides TwoSidedLongEdge -k

List Pending Jobs in JSON

ipp-cli get-jobs --op-printer-uri ipp://192.168.1.50:631/ipp/print --op-which-jobs not-completed -o Json

Cancel a Specific Job

ipp-cli cancel-job --op-printer-uri ipp://192.168.1.50:631/ipp/print --op-job-id 105 --op-message "User canceled"

Query Document Attributes

ipp-cli get-document-attributes --op-printer-uri ipp://192.168.1.50:631/ipp/print --op-job-id 105 --op-document-number 1

Set Printer Attributes

ipp-cli set-printer-attributes --op-printer-uri ipp://localhost:631/printers/LaserJet --pa-printer-info "Office Color Laser" --pa-printer-location "Room 302"

List All CUPS Printers

ipp-cli cups-get-printers --op-printer-uri ipp://localhost:631

Supply Full Request JSON from File

ipp-cli print-job --request @request.json

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
5.0.1 99 10/24/2026
5.0.0 120 10/19/2026
1.0.1 139 8/30/2026
1.0.0 126 8/27/2026