www.papercut.com Open in urlscan Pro
34.95.115.145  Public Scan

URL: https://www.papercut.com/help/manuals/ng-mf/common/tools-web-services/
Submission: On May 13 via manual from AU — Scanned from AU

Form analysis 2 forms found in the DOM

<form class="aa-Form" action="" novalidate="" role="search">
  <div class="aa-InputWrapperPrefix"><label class="aa-Label" for="autocomplete-0-input" id="autocomplete-0-label"><button class="aa-SubmitButton" type="submit" title="Submit"><svg class="aa-SubmitIcon" viewBox="0 0 24 24" width="20" height="20"
          fill="currentColor">
          <path
            d="M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z">
          </path>
        </svg></button></label>
    <div class="aa-LoadingIndicator" hidden=""><svg class="aa-LoadingIcon" viewBox="0 0 100 100" width="20" height="20">
        <circle cx="50" cy="50" fill="none" r="35" stroke="currentColor" stroke-dasharray="164.93361431346415 56.97787143782138" stroke-width="6">
          <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;90 50 50;180 50 50;360 50 50" keyTimes="0;0.40;0.65;1"></animateTransform>
        </circle>
      </svg></div>
  </div>
  <div class="aa-InputWrapper"><input class="aa-Input" aria-autocomplete="both" aria-labelledby="autocomplete-0-label" id="autocomplete-0-input" autocomplete="off" autocorrect="off" autocapitalize="off" enterkeyhint="search" spellcheck="false"
      placeholder="" maxlength="512" type="search"></div>
  <div class="aa-InputWrapperSuffix"><button class="aa-ClearButton" type="reset" title="Clear" hidden=""><svg class="aa-ClearIcon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
        <path
          d="M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z">
        </path>
      </svg></button></div>
</form>

POST https://forms.hsforms.com/submissions/v3/public/submit/formsnext/multipart/8186336/525b820a-c332-44a2-b743-cfacfa396ead

<form id="hsForm_525b820a-c332-44a2-b743-cfacfa396ead" method="POST" accept-charset="UTF-8" enctype="multipart/form-data" novalidate=""
  action="https://forms.hsforms.com/submissions/v3/public/submit/formsnext/multipart/8186336/525b820a-c332-44a2-b743-cfacfa396ead"
  class="hs-form-private hsForm_525b820a-c332-44a2-b743-cfacfa396ead hs-form-525b820a-c332-44a2-b743-cfacfa396ead hs-form-525b820a-c332-44a2-b743-cfacfa396ead_42b10132-9209-4337-ac8b-f9bed9127480 hs-form stacked"
  target="target_iframe_525b820a-c332-44a2-b743-cfacfa396ead" data-instance-id="42b10132-9209-4337-ac8b-f9bed9127480" data-form-id="525b820a-c332-44a2-b743-cfacfa396ead" data-portal-id="8186336"
  data-test-id="hsForm_525b820a-c332-44a2-b743-cfacfa396ead">
  <div class="hs_email hs-email hs-fieldtype-text field hs-form-field"><label id="label-email-525b820a-c332-44a2-b743-cfacfa396ead" class="" placeholder="Enter your " for="email-525b820a-c332-44a2-b743-cfacfa396ead"><span></span></label>
    <legend class="hs-field-desc" style="display: none;"></legend>
    <div class="input"><input id="email-525b820a-c332-44a2-b743-cfacfa396ead" name="email" required="" placeholder="Email*" type="email" class="hs-input" inputmode="email" autocomplete="email" value=""></div>
  </div>
  <div class="hs_amplitude_device_id hs-amplitude_device_id hs-fieldtype-text field hs-form-field" style="display: none;"><label id="label-amplitude_device_id-525b820a-c332-44a2-b743-cfacfa396ead" class="" placeholder="Enter your Amplitude Device ID"
      for="amplitude_device_id-525b820a-c332-44a2-b743-cfacfa396ead"><span>Amplitude Device ID</span></label>
    <legend class="hs-field-desc" style="display: none;"></legend>
    <div class="input"><input name="amplitude_device_id" class="hs-input" type="hidden" value=""></div>
  </div>
  <div class="legal-consent-container">
    <div>
      <div class="hs-dependent-field">
        <div class="hs_LEGAL_CONSENT.subscription_type_20660050 hs-LEGAL_CONSENT.subscription_type_20660050 hs-fieldtype-booleancheckbox field hs-form-field">
          <legend class="hs-field-desc" style="display: none;"></legend>
          <div class="input">
            <ul class="inputs-list" required="">
              <li class="hs-form-booleancheckbox"><label for="LEGAL_CONSENT.subscription_type_20660050-525b820a-c332-44a2-b743-cfacfa396ead" class="hs-form-booleancheckbox-display"><input
                    id="LEGAL_CONSENT.subscription_type_20660050-525b820a-c332-44a2-b743-cfacfa396ead" class="hs-input" type="checkbox" name="LEGAL_CONSENT.subscription_type_20660050" value="true"><span>
                    <p>Yes, subscribe me to PaperCut news, offers, product updates, newsletters and events.</p><span class="hs-form-required">*</span>
                  </span></label></li>
            </ul>
          </div>
        </div>
      </div>
      <legend class="hs-field-desc checkbox-desc" style="display: none;"></legend>
    </div>
    <div class="hs-richtext">
      <p>By filling out and submitting this form, you agree that you have read our <a href="https://www.papercut.com/privacy-policy/" target="_blank">Privacy Policy</a>, and agree to PaperCut handling your data in accordance with its terms.</p>
    </div>
  </div>
  <div class="hs_recaptcha hs-recaptcha field hs-form-field">
    <div class="input">
      <div class="grecaptcha-badge" data-style="inline" style="width: 256px; height: 60px; box-shadow: gray 0px 0px 5px;">
        <div class="grecaptcha-logo"><iframe title="reCAPTCHA" width="256" height="60" role="presentation" name="a-qn6dyfva75sb" frameborder="0" scrolling="no"
            sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox allow-storage-access-by-user-activation"
            src="https://www.google.com/recaptcha/enterprise/anchor?ar=1&amp;k=6Ld_ad8ZAAAAAAqr0ePo1dUfAi0m4KPkCMQYwPPm&amp;co=aHR0cHM6Ly93d3cucGFwZXJjdXQuY29tOjQ0Mw..&amp;hl=en&amp;v=vjbW55W42X033PfTdVf6Ft4q&amp;size=invisible&amp;badge=inline&amp;cb=wso9w27994of"></iframe>
        </div>
        <div class="grecaptcha-error"></div><textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response"
          style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>
      </div><iframe style="display: none;"></iframe>
    </div><input type="hidden" name="g-recaptcha-response" id="hs-recaptcha-response" value="">
  </div>
  <div class="hs_submit hs-submit">
    <div class="hs-field-desc" style="display: none;"></div>
    <div class="actions"><input type="submit" class="hs-button primary large" value="Submit"></div>
  </div><input name="hs_context" type="hidden"
    value="{&quot;embedAtTimestamp&quot;:&quot;1715564948003&quot;,&quot;formDefinitionUpdatedAt&quot;:&quot;1658376130808&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;legalConsentOptions&quot;:&quot;{\&quot;communicationConsentCheckboxes\&quot;:[{\&quot;communicationTypeId\&quot;:20660050,\&quot;label\&quot;:\&quot;<p>Yes, subscribe me to PaperCut news, offers, product updates, newsletters and events.</p>\&quot;,\&quot;required\&quot;:true}],\&quot;legitimateInterestLegalBasis\&quot;:\&quot;LEGITIMATE_INTEREST_PQL\&quot;,\&quot;processingConsentType\&quot;:\&quot;IMPLICIT\&quot;,\&quot;processingConsentText\&quot;:\&quot;<p>By filling out and submitting this form, you agree that you have read our <a href=\\\&quot;https://www.papercut.com/privacy-policy/\\\&quot; target=\\\&quot;_blank\\\&quot;>Privacy Policy</a>, and agree to PaperCut handling your data in accordance with its terms.</p>\&quot;,\&quot;processingConsentCheckboxLabel\&quot;:\&quot;<p>Yes, subscribe me to PaperCut news, offers, product updates, newsletters and events.</p>\&quot;,\&quot;isLegitimateInterest\&quot;:false}&quot;,&quot;embedType&quot;:&quot;REGULAR&quot;,&quot;renderRawHtml&quot;:&quot;true&quot;,&quot;userAgent&quot;:&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36&quot;,&quot;pageTitle&quot;:&quot;The XML Web Services API | PaperCut&quot;,&quot;pageUrl&quot;:&quot;https://www.papercut.com/help/manuals/ng-mf/common/tools-web-services/&quot;,&quot;isHubSpotCmsGeneratedPage&quot;:false,&quot;hutk&quot;:&quot;74836803f5e3af0dbc24e4a7cfefe8cf&quot;,&quot;__hsfp&quot;:3914766532,&quot;__hssc&quot;:&quot;154692263.1.1715564954126&quot;,&quot;__hstc&quot;:&quot;154692263.74836803f5e3af0dbc24e4a7cfefe8cf.1715564954125.1715564954125.1715564954125.1&quot;,&quot;formTarget&quot;:&quot;#hbspt-form-42b10132-9209-4337-ac8b-f9bed9127480&quot;,&quot;boolCheckBoxFields&quot;:&quot;LEGAL_CONSENT.subscription_type_20660050&quot;,&quot;rumScriptExecuteTime&quot;:826.7000000476837,&quot;rumTotalRequestTime&quot;:1239.4000000357628,&quot;rumTotalRenderTime&quot;:1336.1000000238419,&quot;rumServiceResponseTime&quot;:412.69999998807907,&quot;rumFormRenderTime&quot;:96.69999998807907,&quot;connectionType&quot;:&quot;4g&quot;,&quot;firstContentfulPaint&quot;:0,&quot;largestContentfulPaint&quot;:0,&quot;locale&quot;:&quot;en&quot;,&quot;timestamp&quot;:1715564954147,&quot;originalEmbedContext&quot;:{&quot;portalId&quot;:&quot;8186336&quot;,&quot;formId&quot;:&quot;525b820a-c332-44a2-b743-cfacfa396ead&quot;,&quot;region&quot;:&quot;na1&quot;,&quot;target&quot;:&quot;#hbspt-form-42b10132-9209-4337-ac8b-f9bed9127480&quot;,&quot;isBuilder&quot;:false,&quot;isTestPage&quot;:false,&quot;isPreview&quot;:false,&quot;isMobileResponsive&quot;:true},&quot;correlationId&quot;:&quot;42b10132-9209-4337-ac8b-f9bed9127480&quot;,&quot;renderedFieldsIds&quot;:[&quot;email&quot;,&quot;amplitude_device_id&quot;,&quot;LEGAL_CONSENT.subscription_type_20660050&quot;],&quot;captchaStatus&quot;:&quot;LOADED&quot;,&quot;emailResubscribeStatus&quot;:&quot;NOT_APPLICABLE&quot;,&quot;isInsideCrossOriginFrame&quot;:false,&quot;source&quot;:&quot;forms-embed-1.5064&quot;,&quot;sourceName&quot;:&quot;forms-embed&quot;,&quot;sourceVersion&quot;:&quot;1.5064&quot;,&quot;sourceVersionMajor&quot;:&quot;1&quot;,&quot;sourceVersionMinor&quot;:&quot;5064&quot;,&quot;allPageIds&quot;:{},&quot;_debug_embedLogLines&quot;:[{&quot;clientTimestamp&quot;:1715564948193,&quot;level&quot;:&quot;INFO&quot;,&quot;message&quot;:&quot;Retrieved pageContext values which may be overriden by the embed context: {\&quot;pageTitle\&quot;:\&quot;The XML Web Services API | PaperCut\&quot;,\&quot;pageUrl\&quot;:\&quot;https://www.papercut.com/help/manuals/ng-mf/common/tools-web-services/\&quot;,\&quot;userAgent\&quot;:\&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36\&quot;,\&quot;isHubSpotCmsGeneratedPage\&quot;:false}&quot;},{&quot;clientTimestamp&quot;:1715564948195,&quot;level&quot;:&quot;INFO&quot;,&quot;message&quot;:&quot;Retrieved countryCode property from normalized embed definition response: \&quot;AU\&quot;&quot;},{&quot;clientTimestamp&quot;:1715564954142,&quot;level&quot;:&quot;INFO&quot;,&quot;message&quot;:&quot;Retrieved analytics values from API response which may be overriden by the embed context: {\&quot;hutk\&quot;:\&quot;74836803f5e3af0dbc24e4a7cfefe8cf\&quot;}&quot;}]}"><iframe
    name="target_iframe_525b820a-c332-44a2-b743-cfacfa396ead" style="display: none;"></iframe>
</form>

Text Content

Hey there!  We use cookies.  Why? They let us personalize content, track usage,
and analyze data on our end to improve your experience.  To learn more about the
different cookies we’re using, check out our Privacy Policy.

OK, I understand

Skip to content
URGENT security message for all NG/MF customers
Everything you need to know about cloud printing
Language

Choose your language

 * No results
   
 * Global (English)
 * Français (Français)
 * España (Español)
 * Deutschland (Deutsche)
 * Suomi (Suomalainen)
 * Italia (Italiano)
 * Nederland (Nederlands)
 * Portugal (Português)
 * Россия (Pусский)
 * Sverige (Svenska)
 * Bolivia (Español)
 * Brazil (Português)
 * Colombia (Español)
 * Ecuador (Español)
 * El Salvador (Español)
 * República Dominicana (Español)
 * Guatemala (Español)
 * Honduras (Español)
 * Mexico (Español)
 * Nicaragua (Español)
 * Panamá (Español)
 * Paraguay (Español)
 * Peru (Español)
 * Uruguay (Español)
 * Venezuela (Español)
 * 中国(简体中文)
 * 台灣(繁體中文)
 * 香港(繁體中文)
 * 日本 (日本語)
 * ประเทศไทย (ไทย)

Login

Choose your login

 * No results
   
 * PaperCut Hive
 * PaperCut Pocket
 * Partner Portal
 * Students / Teachers

Support
Search

Software

Our products

 * PaperCut MF
   
   Powerful print management server for printers and MFDs

 * PaperCut Hive
   
   Complete cloud-native print management for business

 * PaperCut NG
   
   DIY print management server for everyone

 * PaperCut Pocket
   
   Cloud print management solution for businesses with simple needs

 * Compare features
   
   PaperCut Product Suite comparison

Free tools

 * PaperCut Mobility Print
   
   A free Google Cloud Print alternative

 * PaperCut QRdoc
   
   The power of digital documents – on paper

 * PaperCut Views
   
   Real-time print analytics, insights and forecasts

Sustainability

 * PaperCut Grows
   
   Grow your sustainability story.

In the percolator

 * Projects in beta
   
   Features in progress

Popular Features

 * Print rooms
   
   Track and manage all your printing activity

 * Forest Positive Printing
   
   Go further than waste reduction

 * Print Deploy
   
   Print queues made easy

 * Microsoft Universal Print
   
   Take control of your Universal Print environment

Speak with sales

Solutions

By industry

 * High school / K-12

 * Higher education

 * Healthcare

 * Local government

 * Legal

 * SMB

 * Enterprise

 * Coworking

 * Life sciences

By topic

 * Print security

 * Reduce costs

 * Reduce effort

 * Improve user experience

 * Hybrid work

By job type

 * Sysadmin

 * IT manager

 * SMB Owner

What our customers say



“Sustainability is very important to Google nowadays,” says Ofer. “So the idea
that we could literally save paper on printing was appealing to us from the
get-go.”

Ofer Bar-Zakai, Google, US

 * Customer Stories
   
   100 million delighted users and counting. Read their stories

 * Reviews
   
   See what our customers say

Speak with sales

Resources

Discover everything we do

 * Easy printing
   
   We’ve simplified printing for you and your end-users

 * Cloud and print
   
   Review our full suite of management solutions for cloud

 * Waste control
   
   Explore why this should be important to everyone

 * Scanning
   
   We’ve made scanning easier and more secure

 * Overview
   
   Explore all our products, and find real-world examples

Popular Resources

 * Grid® Report for Print Management | Spring 2024
   
   

 * Complete Guide to Printing in Education
   
   

 * Get Print Resiliency and Security Without Servers
   
   

 * Securing Your Print System with PaperCut Whitepaper
   
   

 * Find more
   
   Reports, White Papers, Customer Stories, Ebooks and more

Click-through demos

 * DemosNew!
   
   Discover product features with interactive, self-guided walkthroughs

Have a read

 * Blog
   
   Read our latest news in tech, product updates, and more

Support

 * Overview
   
   

 * Help Center
   
   

 * Manuals
   
   

 * Knowledge base
   
   

 * Known issues
   
   

 * FAQs
   
   

Speak with sales
Software

Our products

 * PaperCut MF
   
   Powerful print management server for printers and MFDs

 * PaperCut Hive
   
   Complete cloud-native print management for business

 * PaperCut NG
   
   DIY print management server for everyone

 * PaperCut Pocket
   
   Cloud print management solution for businesses with simple needs

 * Compare features
   
   PaperCut Product Suite comparison

Free tools

 * PaperCut Mobility Print
   
   A free Google Cloud Print alternative

 * PaperCut QRdoc
   
   The power of digital documents – on paper

 * PaperCut Views
   
   Real-time print analytics, insights and forecasts

Sustainability

 * PaperCut Grows
   
   Grow your sustainability story.

In the percolator

 * Projects in beta
   
   Features in progress

Popular Features

 * Print rooms
   
   Track and manage all your printing activity

 * Forest Positive Printing
   
   Go further than waste reduction

 * Print Deploy
   
   Print queues made easy

 * Microsoft Universal Print
   
   Take control of your Universal Print environment

Speak with sales
Solutions

By industry

 * High school / K-12

 * Higher education

 * Healthcare

 * Local government

 * Legal

 * SMB

 * Enterprise

 * Coworking

 * Life sciences

By topic

 * Print security

 * Reduce costs

 * Reduce effort

 * Improve user experience

 * Hybrid work

By job type

 * Sysadmin

 * IT manager

 * SMB Owner

What our customers say



“Sustainability is very important to Google nowadays,” says Ofer. “So the idea
that we could literally save paper on printing was appealing to us from the
get-go.”

Ofer Bar-Zakai, Google, US

 * Customer Stories
   
   100 million delighted users and counting. Read their stories

 * Reviews
   
   See what our customers say

Speak with sales
Resources

Discover everything we do

 * Easy printing
   
   We’ve simplified printing for you and your end-users

 * Cloud and print
   
   Review our full suite of management solutions for cloud

 * Waste control
   
   Explore why this should be important to everyone

 * Scanning
   
   We’ve made scanning easier and more secure

 * Overview
   
   Explore all our products, and find real-world examples

Popular Resources

 * Grid® Report for Print Management | Spring 2024
   
   

 * Complete Guide to Printing in Education
   
   

 * Get Print Resiliency and Security Without Servers
   
   

 * Securing Your Print System with PaperCut Whitepaper
   
   

 * Find more
   
   Reports, White Papers, Customer Stories, Ebooks and more

Click-through demos

 * DemosNew!
   
   Discover product features with interactive, self-guided walkthroughs

Have a read

 * Blog
   
   Read our latest news in tech, product updates, and more

Support

 * Overview
   
   

 * Help Center
   
   

 * Manuals
   
   

 * Knowledge base
   
   

 * Known issues
   
   

 * FAQs
   
   

Speak with sales
CONTACT SALES

 * Home
 * ›
 * Help
 * ›
 * Manuals
 * ›
 * NG MF
 * ›
 * Common
 * ›
 * Tools Web Services

 * Help Center home
 * Product manuals
    * PaperCut NG and MF manual
       * Overview
          * How does PaperCut NG/MF work?
          * The Top-Ten Hidden Features!
          * Example user information sheets
             * Example 1: Printing with the popup confirmation window
             * Example 2: Printing with shared accounts (for staff)
             * Example 3: Printing using a Release Station
             * Example 4: Refunding a print job (for staff)
             * Example 5: Adding credit using a TopUp/Pre-Paid Card
             * Example 6: Printing from a wireless network or laptop (Web Print)
         
          * About This Guide
             * Prerequisites
             * Terminology used in this document
         
          * Licensing and support
             * Installing a license
             * Technical support & further information
             * End User License Agreement (EULA)
             * PaperCut MF as a Subscription (EULA)
      
       * Installation
          * Implementation by example
             * Scenario: The small school
             * Scenario: The large school
             * Scenario: The university
             * Scenario: The small business
             * Scenario: The medium to large business
             * Scenario: The public library or Internet cafe/kiosk
         
          * Capacity planning
             * Database sizing and growth
             * Print archives sizing and growth
             * Network bandwidth planning
             * Manage large client billing databases
         
          * Installation on Windows
             * Quick install: Windows
             * Running in a Workgroup environment
                * Option 1: Common username and passwords on all systems
                * Option 2: Authenticating via popup
         
          * Installation on Mac
             * Quick install: Apple Mac
             * Mac printing in detail
             * Mac hosted print queues
             * Windows hosted print queues
         
          * Installation on Linux (CUPS and Samba)
             * Quick install: Linux (CUPS and/or Samba)
             * PaperCut NG/MF on Linux
             * The installation process
             * Advanced configuration & logs
             * Backups & system management
             * User directory and authentication
             * Unix command-line Release Station client
             * Remove PaperCut NG/MF from a Linux server
             * Linux FAQ
         
          * Installation on Novell OES Linux (iPrint)
          * Testing the installation
          * Advanced implementation
             * Multi-Server and Multi-Site Deployments
             * Resiliency with Site Servers
                * Technical overview
                * Offline operations
                * Install a Site Server
                * Common questions about Site Servers
            
             * Configuring secondary print servers and locally attached printers
                * Configure a Windows secondary print server
                * Configure a Macintosh secondary print server
                * Configure a Linux or Novell iPrint secondary print server
                * Print monitoring architecture
                * Multiple print servers
                * Automating secondary server deployment on Windows
            
             * Configuring Direct Printing
                * Install the Direct Print Monitor
                   * Install the Direct Print Monitor on Windows computers
                   * Install the Direct Print Monitor on a Macintosh computer
                   * Install the Direct Print Monitor on a Linux computer
               
                * Link direct print queues to a printer
                   * View linked print queues
                   * Link a print queue to a printer
                   * Unlink a print queue from a printer
               
                * Configure a directly connected printer
                * Configure Find-Me Printing for directly connected printers
            
             * Clustering and high availability
                * Application Server failover
                * Microsoft Failover Cluster Manager (MSFCM) on Windows server
                  2012/2016
                * Microsoft Cluster Server (MSCS) on Windows
                * Virtual Machine clustering
                * Veritas Cluster Server (VCS) on Windows
                * Novell Cluster Services (NCS) on Novell OES Linux
                * PaperCut User Client configuration
            
             * Deployment on an external database (RDBMS)
                * Upsize to an external RDBMS
                   * Configuring Microsoft SQL Express
                   * Configuring Microsoft SQL Server
                   * Configuring MySQL
                   * Configuring Oracle (and Oracle Express Edition)
                   * Configuring Azure SQL
            
             * Web browser Single Sign-on (SSO)
                * Plan for web SSO Implementation
                * Configure web SSO
            
             * Advanced LDAP Configuration
                * LDAP Server Default Configuration
            
             * Print authentication
                * About authentication and printing
                * Handling unauthenticated (non-domain) laptops
                * The authentication cookbook - recipes by example
            
             * PaperCut LPD service
                * The PaperCut LPD service
            
             * User Client
                * Install the User Client on Windows
                * Install the User Client with Microsoft Intune
                * Install the User Client on macOS
                * Install the User Client on Linux and Unix
      
       * Tour
          * Navigation
          * Menu
          * Basic user operations
          * Basic printer operations
          * Client software
          * Interface levels
          * Assigning administrator level access
          * Charting, statistics, reports, and logs
      
       * Configuration
          * Services for Users
             * User Client
             * User web interface - original
             * User web interface - new
             * Environmental Dashboard / Windows Live Tiles
                * Using the Environmental Dashboard
                * Windows Live Tile installation
            
             * Mobile User web interface
             * Web widgets
         
          * User management
             * Group management
                * Creating internal groups
            
             * Set new user creation rules
             * Set up quota allocations
             * Set overdraft limits
             * Enable username aliasing
             * Add/update username aliases
             * Maintain office/department history
             * Disable printing for a user
             * User card and ID numbers
             * Prevent username clashes in Windows multi-domain environments
             * Bulk user operations
             * Batch import and update user data
             * User management FAQs
         
          * Guest and anonymous user management
             * Internal users (users managed by PaperCut NG/MF)
             * Anonymous guest printing
         
          * Multiple personal accounts
             * Why use multiple personal accounts?
             * Configure multiple personal accounts
             * Configuration examples
         
          * Shared accounts
             * Create a shared account
                * Shared account naming guidelines
            
             * Search for a shared account
             * Batch import and update shared accounts
             * Synchronize shared accounts with external source
             * Bulk shared account operations
             * Allocate a shared account quota
             * Apply a cost multiplier to a shared account
             * Customize shared accounts
             * Grant access to shared accounts
             * Account selection
             * Account selection in non-domain environments (Workgroups)
         
          * Printer management
             * Add and remove/delete/ignore printers
             * The template printer
             * Copy printer settings
             * Rename a printer
             * Disable printers with time latches
             * Set up differential charging
             * Convert or block print jobs - filters and restrictions
             * Manage printer groups
             * Define cost adjustments
             * Popup authentication
             * Set the color detection method
             * Switch to using SNMPv3
             * Validate page counts using hardware checks
             * Watermarking/job annotation
             * Behavior on server connection failures
             * Toner Levels (for supported printers)
             * Refund print jobs
             * Define custom printer fields
             * Extract usernames in enterprise print environments (e.g. SAP,
               Unix)
             * Printer FAQs
         
          * Find-Me printing and printer load balancing
             * Find-Me printing
             * Global Print Driver
             * Requirements for job redirection (load balancing or Find-Me
               printing)
             * Advanced configuration
             * Printer load balancing
             * Find-Me printing and printer load balancing FAQ
         
          * Secure print release
             * Release Station interfaces
             * Hold/release usage scenarios
             * Install a Release Station
                * Install a Release Station on Windows
                * Install a Release Station on a Mac
            
             * Configure a Release Station
             * Secure print jobs at the printer while they're waiting to be
               printed
             * Prevent jobs being released when a printer/device is in error
                * Prevent jobs being released from an MFD Release Station when a
                  device is in error
                * Prevent jobs being released from a Standard Release Station
                  when a printer is in error
                * Prevent jobs being released from a web-based Release Station
                  when a printer is in error
                * Frequently Asked Questions: Prevent jobs being released when a
                  printer is in error
            
             * Configure mobile print release
         
          * Copier integration
             * Overview
             * Setup
             * Device List and statuses
             * Manage copiers
             * Authentication methods
             * About filters and restrictions
             * Advanced configuration
             * Release Stations and Find Me Printing
                * Configure Secure Print Release
                * Configure Secure Print Release with Find-Me printing
                * Configure Secure Print Release with load balancing
                * Configure Secure Print Release to support multiple operating
                  systems
                * Allocating accounts to print jobs at the device
                   * System requirements PaperCut MF
                   * Configure the ability to allocate accounts to print jobs at
                     the device
               
                * Changing attributes of print jobs at the device
                   * System requirements PaperCut MF
                   * Configure the ability to change attributes of print jobs at
                     the device
                   * Frequently Asked Questions
               
                * Viewing attributes of print jobs at the device
                   * System requirements
                   * Configure the ability to view attributes of print jobs at
                     the device
                   * Frequently Asked Questions
               
                * Prevent jobs from being released from an MFD Release Station
                  when a device is in error
                * Frequently Asked Questions: Prevent jobs being released when a
                  printer is in error
         
          * Integrated Scanning
             * Integrated Scanning overview
                * What is Integrated Scanning?
                * Integrated Scanning at the MFD
                * Scan PDF compression
                * Scan to Fax explained
                * Document Processing for Scans
                * PaperCut MF Cloud Services
                * Example Integrated Scanning implementations
            
             * Setting up Integrated Scanning
                * Prepare for Integrated Scanning implementation
                * Configure Integrated Scanning / scan actions
                * Configure Integrated Scanning notifications
                * Enable Advanced Scan to Fax actions
                * Configure advanced Integrated Scanning (config keys)
                * Set up self-hosted Document Processing
                * Substitution variables/macros
                * Capturing scan metadata using Interactive Scan Destinations
            
             * Troubleshooting Integrated Scanning
                * Troubleshooting Scan to Cloud Storage
                * Troubleshooting Document Processing scans, including OCR
            
             * Integration with Electronic Document Management Systems
         
          * Mobile & BYOD printing
             * Mobility Print
             * Print Deploy (deploy print queues and drivers)
             * Universal Print
             * Email to Print
             * Web Print (driver-less printing via a web browser)
                * Set up Web Print
                   * Set up Web Print: Default mode
                   * Set up Web Print: Sandbox mode
                   * Enable Web Print on a printer
                   * Modify default Web Print settings (optional)
                   * Create a Web Print printer map or custom printer list
                     (optional)
                   * Advanced Web Print configuration (optional)
               
                * Submit a Web Print job
                * Scaling your Web Print environment
                   * Add or remove a Web Print server
               
                * Monitor a Web Print server
                * Troubleshooting Web Print problems
            
             * Mobile Print Release-releasing print jobs on your mobile
             * Mobile web client
             * Self association for emails and email verification/validation
         
          * TopUp/Pre-Paid Cards
             * The card system
             * Create new cards
             * Redeem a card
         
          * Reports
             * Report types
             * Report formats
             * Generate filtered reports
             * Create custom reports
             * Schedule and email reports
             * Export usage data from PaperCut NG/MF to a 3rd party tool
             * Advanced reporting options
             * Central Reports
                * Prerequisites for Central Reports
                * Set up Central Reports
                * Run Central Reports
         
          * Print Scripting (advanced feature)
             * Creating print scripts
             * Print script API reference
             * Troubleshooting print scripts
             * Tips for print scripts
             * 
         
          * Device Scripting (advanced feature)
             * Creating device scripts
             * Device script API reference
             * Device scripting examples
                * Example: Set a daily color copying quota for all users
                * Example: Prevent access to devices out of business hours
                * Example: Discount the copying price for students during
                  off-peak hours and for staff at all times
            
             * Troubleshooting device scripts
             * Tips for device scripting
         
          * Security (for advanced features)
             * Print, device, and other advanced scripting
             * Using extended Java classes in scripts
         
          * Customization
             * Customize the Login page
             * Customize the Forgot Login Details page
             * Customize the Admin web interface
             * Customize the User web interface
             * Customize the User Client
             * Customize Mobile Print Release
             * Customize report headers
             * Limit the list of interface languages/translations
             * Data access and custom reports
             * Automation and scripting
             * Custom user directory information providers
             * Enable ports 80 (HTTP) and 443 (HTTPS)
         
          * Web Cashier
             * Set up Web Cashier
             * Assign Web Cashier admin permissions
             * Process purchases
             * Deposit funds in a Web Cashier account
             * View Web Cashier order history
             * Customize the Web Cashier interface text
             * Generate a Web Cashier report
             * Advanced: Apply a regular expression to convert a card number
         
          * Job Ticketing
          * Print Archiving (viewing and content capture)
             * Technical overview: How does archiving work?
             * Set up Print Archiving
             * Advanced archiving options and features
             * Troubleshooting and known limitations
      
       * Administration
          * System management
             * The dashboard
             * Synchronize user and group details
                * With Active Directory
                * With LDAP
                * With Azure AD - Standard or Secure LDAP
                   * Synchronize user and group details with standard Azure AD
                   * Synchronize user and group details with Azure AD Secure
                     LDAP
               
                * With Google Cloud Directory
                   * Google Cloud Directory Group Names
                   * Synchronize users from multiple Google Cloud Directory
                     domains
                   * Google Cloud Directory: Education scenario
                   * Google Cloud Directory: FAQs
                   * Google Cloud Directory: Troubleshooting
               
                * With custom programs (advanced feature)
                * Manually synchronize with a user directory
                * Create users on demand
            
             * Assign administrator level access
             * Set up system notifications and emails
                * Configure email
                   * Configure an SMTP server for Office 365 or Microsoft 365 (*
                     Deprecated)
                   * Configure an SMTP server for Office 365 or Microsoft 365
                     Over OAuth2
                   * Configure an SMTP server for Google Workspace (*
                     Deprecated)
                   * Configure an SMTP server for Gmail Over OAuth2
                   * Configure an SMTP server for Gmail, Yahoo, or Outlook.com
                   * Configure a custom SMTP server
               
                * Configure system notifications
            
             * Manage system backups
             * Set system security options
                * Change the Application Server ports
                * Configure how the Print Provider communicate over HTTPS
                * Enforce HTTPS communication
                * Restrict access to the Application Server
                * Change the web session inactivity timeout
                * Change the CSRF validation security properties
            
             * Change the environmental impact reference values
             * Set privacy options
             * Using the Advanced Config Editor
             * Add third-party integrations
             * Logging
             * Temp folder cleanup
         
          * Server management
             * Change the server address
             * Change the network interface that PaperCut listens on
             * Override the "Host" header for redirects
             * Temp folder cleanup
         
          * Tools - database, server-command scripting, and APIs (Advanced)
             * Server commands (server-command)
             * Database tool (db-tools)
             * The XML Web Services API
             * Generate SSL/HTTPS keys
                * Use the PaperCut NG/MF self-signed certificate
                * Use a trusted certificate
                   * Purchase and install a new trusted certificate
                   * Use an existing trusted PaperCut NG/MF certificate
                   * Use an existing trusted IIS certificate
               
                * Renew an SSL certificate
                * Advanced customization
                * Troubleshoot SSL/HTTPS key generation
            
             * Configure the User Client using the command-line
             * Stop and start the Application Server
             * Automate installation on Windows
             * Import print job details
             * Monitor print system health
                * PaperCut system health monitoring overview
                * Examples: Monitoring system health
                   * Example 1: Overall print system health monitoring
                   * Example 2: Printer health monitoring
                   * Example 3: Advanced system health monitoring
               
                * Configure PaperCut NG/MF system health monitoring
                * Discover the System Health interface authorization key
                * Discover the printer and device status URLs
                * System Health interface reference
                   * Status summary URLs
                   * Status per printer and per device URLs
                   * Status per Web Print application
                   * Advanced system statistics URLs
                   * Advanced system information URLs
         
          * PDL transform language
          * Upgrading
             * Upgrade MF/NG from a previous version (upgrade steps)
             * Troubleshooting upgrade issues
             * (Legacy) Upgrade from PaperCut ChargeBack
             * (Legacy) Upgrade from PaperCut Quota
         
          * Troubleshooting & technical FAQs
   
    * PaperCut Hive and Pocket manual
       * Product & features overview
          * Print Security
             * Secure print release
             * Access Control
             * Job timeout & deletion
             * Printer error alerts
             * Print job thumbnails
             * Watermarks & digital signatures
         
          * Reduce Waste
             * 2-sided printing
             * Black & white printing
             * More cost saving tips
         
          * Easy Printing
             * User signup process / welcome emails
             * Printer discovery
             * Mobile & tablet printing
             * Print tracking
             * Low toner alerts
             * Printer labels/NFC stickers
             * Print offline
         
          * Integrated Scanning
          * Data center locations
      
       * How it works
          * Edge Mesh and edge nodes
          * Security considerations
          * Printer discovery
          * Authentication
      
       * Plan & get started
          * System requirements
          * Supported printers
          * Planning your install
          * Multifunction device deployment checklist
          * Set up local language
          * Bulk deploy PaperCut software to users
             * Deployment with Microsoft Intune (Windows)
             * Deployment with Microsoft Intune (macOS)
             * Deployment with MS EndPoint Manager
             * Deployment with Jamf
             * Deployment with JumpCloud (Windows)
             * Deployment with JumpCloud (macOS)
             * Deployment with Microsoft Group Policy
             * Deployment with ManageEngine Endpoint Central (Windows)
             * Deployment to ChromeOS
             * Deployment with Kandji (macOS)
         
          * Network environments
             * Onsite - no firewall port restrictions
             * Onsite - multi-site with WAN connection
             * Onsite - multi-site with no WAN connection
             * Onsite - multi-subnet restricted network
             * Off network - remote printing
      
       * Manage your print environment
          * Managing users
             * Users
             * Administrators
             * Access codes & access cards
         
          * Managing printers
             * Adding, removing or updating printers
             * Choosing the print job delivery method
             * Publishing or unpublishing printers
             * Renaming a printer
             * Changing a printer's IP address
             * Printing printer labels
             * Installing printer apps
             * Print job finishing options (stapling units)
         
          * Managing deployed print queues
             * Preparing a print queue and driver
             * Deploying your queue and driver
             * How it works
             * Technical and security details
             * FAQs
         
          * Managing your Edge Mesh
             * Best practices for super nodes
         
          * Reports and insights
          * Logs and Story Tree
      
       * Configure features
          * Print Security
             * Control access to printers/MFDs
             * Secure print release
             * Delete print jobs automatically
             * Alert users about printer errors
             * Use watermarking and digital signatures
             * Set thumbnail visibility privacy
         
          * Reduce Waste
             * 2-sided printing
             * Black and white printing
             * More cost saving tips
         
          * Easy Printing
             * User signup process
             * Printer discovery
             * Printer labels
             * Mobile & tablet printing
             * Print tracking
             * Low toner alerts
             * Offline printing
         
          * Integrated Scanning
             * Enable Integrated Scanning
             * Scan PDF compression
             * Quick Scan capture fields
             * Scan to automatically create folders
             * Scan to email using an address book
             * Scan to fax
      
       * Printing for end users
       * Troubleshooting
          * Installation
          * Printer discovery
          * Sending the print job
          * Releasing the print job
          * Queues & drivers
          * A super node is offline
          * Embedded app not connecting
          * Users can’t install the PaperCut Printer app
          * Email delivery
          * Using Job Trace to troubleshoot
          * Using Activity Log to troubleshoot
          * Enable/download Deep Logs
      
       * Help resources
          * Knowledge base
          * Known issues
          * Service status
          * Release notes
          * Terms of Service
          * Service Description
          * End user license agreement
      
       * Purchasing PaperCut Pocket
   
    * Print Deploy manual
       * Print Deploy overview
          * Why is Print Deploy awesome?
          * Print Deploy / Mobility Print - What product to use when
      
       * How Print Deploy works
          * Print environments supported by Print Deploy
          * How it works - the basics
          * How it works - the geeky version
      
       * Set up Print Deploy
          * System requirements: Print Deploy & PaperCut NG/MF
          * Step 1: Determine your print environment
          * Step 2: Add and configure zones in Print Deploy
          * Step 3: Import print queues into Print Deploy
             * Directly print from workstations to printers
             * Classic server-hosted print queues
             * Mobility Print queues (Quick)
             * Mobility Print queues (Advanced)
             * Support IPP(S) Print Servers on Windows computers
      
       * Roll out the Print Deploy client
          * Choose your print queue/Print Deploy client installation method
          * Manual Installation
             * Install the Print Deploy client manually on computers
             * Users install the Print Deploy client themselves
             * Deploy print queues but not the monitoring tool
         
          * Managed/MDM Installation
             * Using Google Workspace
             * Using VMWare Workspace ONE
             * Using Windows Group Policy
             * Using Microsoft Intune (Windows)
             * Using Microsoft Intune (macOS)
             * Using Jamf
             * Using Kandji
             * Using another macOS-compatible MDM
         
          * List of installation parameters and filename configurations
      
       * Configure Print Deploy (optional)
          * Shared computers (Windows only)
          * Configure the client
          * Configure the Direct Print Monitor for large sites
          * Customize the user login popup branding and text
          * Change the client polling time
          * Set the method used to determine the user’s identity
          * Allow the client to update printers when a network change is
            detected
          * Using an external PostgreSQL DB
      
       * Configure Print Deploy in Virtual Desktop Infrastructure (VDI)
          * Print Deploy VDI client overview
          * Citrix
          * Azure RDS
          * Microsoft RDS
          * VMWare Horizon
          * VDI FAQs
          * Troubleshooting - log analysis
      
       * Enhance Print Deploy security (optional)
          * Enhance Print Deploy security with a CA-signed certificate
          * Enhance Print Deploy server security with a custom TLS setting
          * Enable SSL certificate checking
          * Print Deploy antivirus exclusions
          * (Advanced) Set up an SSL/TLS certificate for Print Deploy
          * (Advanced) Set up an SSL/TLS certificate for Mobility Print
      
       * Troubleshooting
          * Troubleshoot the Print Deploy Cloner
          * Troubleshoot the Print Deploy Client
      
       * Maintain your print environment
       * FAQs
       * Release History
       * Give feedback on Print Deploy
   
    * Mobility Print manual
       * Overview
          * Why is Mobility Print awesome?
          * The Mobility Story
          * Print Deploy / Mobility Print - What product to use when
          * Do I need PaperCut NG or MF?
      
       * How it works
          * Printer discovery - which method is best for you?
          * Print job delivery and examples
          * Mobility Print architecture
          * Ghost Trap and Ghostscript
      
       * Setting up Mobility Print
          * System requirements
          * Step 1: Install Mobility Print
          * Step 2: Configure Mobility Print
             * Select the printers to publish
             * Printer discovery using mDNS
             * Printer discovery using DNS
             * Printer discovery using 'known host'
             * Print authentication mode
             * Cost allocation
             * Advanced configuration
                * Change the Mobility Print password
                * Configure a server behind a firewall or NAT
                * Disabling server auto-updates
                * Configure Mobility Print behind a Network Load Balancer
                * Restrict printer access per subnet
                * Enhance Mobility Print server security with a custom TLS
                  setting
                * Automatically disable new printers
                * Implement a Trusted SSL Certificate for the Mobility Print
                  Administrator Interface
                * Manage Single sign on for Chromebooks
                * Set up Guest printing for Chromebook users
                * Set up Mobility Print with a Site Server
         
          * Step 3: Set up and test client printing
          * Step 4: Roll out Mobility Print
      
       * Setting up Cloud Print for Mobility Print
          * Overview
          * Step 1: Configure Cloud Print
          * Step 2: Set up Cloud Print on the clients
             * Chromebooks / ChromeOS
             * Windows
             * Mac / macOS
         
          * Managing Cloud Print
          * Cloud Print Security
      
       * Setting up a device (mDNS/DNS)
          * Windows
          * Mac / macOS
          * iPhone / iPad / iOS
          * Android
          * Chromebook / ChromeOS
      
       * Setting up a device (known host)
       * Setting up a device (Cloud Print)
       * Troubleshooting
          * Printer discovery problems with mDNS
          * Printer discovery problems with DNS
          * Troubleshooting Cloud Print
          * Troubleshooting the Chrome Extension
          * Troubleshooting print jobs
          * Troubleshooting restricting printer access per subnet
          * Mobility Print server not detecting printers
      
       * Authentication
       * End user and non-admin help
       * FAQs
       * Release history
   
    * Job Ticketing manual
       * Overview
          * Getting Started
      
       * Setup and Configuration
          * Installation
             * Install the software
             * Logging in
             * Explore the interfaces
         
          * Configuration
             * Manage rooms
             * Configure room contact details
             * Configure delivery options
             * Define the Workflow
                * Example customized Workflows
                * Customize the Workflow
            
             * Configure email notifications
             * Personalize an operator profile
             * Using JSON
             * Using markdown
         
          * Setting up products
             * Job Ticketing scenarios: products
             * Configure a product
             * Product attribute reference
         
          * Configure costs
             * Step 1: Allocate a cost to product and delivery options
             * Step 2: Setting up draft products
             * Step 3: Create or change a cost script
                * About the estimateCost(order) function
                * Using functions
                   * Description functions (conditional statement)
                   * Cost calculation functions (For Loop)
                   * Date comparison functions (dateDiff)
               
                * Using variables
                * Using Order object attributes
                * Using the Cost Script editor
                * Using JavaScript
                * Example cost scripts
            
             * Step 4: Assign a cost script to each product
         
          * Go live
             * Test order submission
             * Test order processing
             * Publish your products
             * Assign access to the Operator interface
             * Enable Job Ticketing in the PaperCut MF User interface
             * Share Job Ticketing with your customers
         
          * System management
             * Configure the maximum uploaded file size
             * Configure the file storage location
             * Change the currency symbol
             * Configure the number of decimal places used for prices
             * Enable or disable Gravatar
             * Configure PDF page counter mode
             * Prevent specific file types from being uploaded
             * Configure the server address for links in emails
             * Configure the database storage location
             * Start and stop the Job Ticketing service
             * Define your data backup strategy
             * Archiving print job files
             * Exporting data
         
          * Troubleshooting
      
       * Managing orders
          * Submit an order for a customer
          * Process an order
             * Change the status of an order
             * Send comments to a customer
             * Add an internal note to an order
             * View notifications
             * Download the file to print
             * Print a job ticket
             * Charge an order to an account
             * Cancel an order
             * Refund an order
             * Order processing examples
         
          * View order details
             * View a summary of orders
                * Workflow view
                * Order List view
            
             * View individual order details
         
          * Manage customer announcements
      
       * Placing an order
          * Place a Print Room or FabLab order
          * Approve a quote or proof
          * Add comments to an order
          * View comments from the print room
          * Cancel an order
      
       * Release notes
       * Video tutorials
       * FAQs

 * Knowledge base
    * KB Home
    * FAQs
    * How-to-articles
    * Reference
    * Troubleshooting
    * Known Issues
    * Sales and Licensing
    * End-user articles

 * Release notes
    * PaperCut MF release notes
    * PaperCut NG release notes

 * System requirements
    * PaperCut NG
    * PaperCut MF
    * PaperCut Pocket and Hive

 * Support

 * Home
 * 
 * PaperCut NG and MF
 * 
 * Common
 * 
 * Tools web services

 * Home
 * 
 * PaperCut NG and MF
 * 
 * Common
 * 
 * Tools web services

 * Home
 * 
 *  * PaperCut NG and MF
    * Common

 * 
 * Tools web services


THE XML WEB SERVICES API


THIS PAGE APPLIES TO:


Contents
 * Overview
 * Web Services example code
 * Security

Contents
 * Overview
 * Web Services example code
 * Security

Contents
 * Overview
 * Web Services example code
 * Security

Any quality software product comes with a comprehensive API for deep
integration, and PaperCut NG/MF is no exception! Our industry standard Web
Services API allows you to integrate with PaperCut NG/MF with a programming
language of your choice. Web Services data is transmitted over standard HTTP or
HTTPS and uses standardized XML mark-up.

Our Web Services API uses XML-RPC (Remote Procedure Call). XML-RPC is a
lightweight web services implementation and has good support for all major
programming and scripting languages such as C#, Java, Visual Basic, Perl, Ruby
and Python.

API methods are accessed by the URL:

 * http://[server_name]:9191/rpc/api/xmlrpc - HTTP
 * https://[server_name]:9192/rpc/api/xmlrpc - HTTPS
 * https://[server_name]:9195/rpc/api/xmlrpc - HTTPS

Ensure you are making your API call from an authorized address. More information
on API usage is provided below .

In the following table, parameters are provided with their respective data type
(string, int, double, boolean, etc), followed by their valid inputs in square
brackets (for example [0,1], or [‘default’,‘individual’]). Most XML-RPC
parameters will need a data type included in the XML formatting (see included
examples). When forming commands, the auth token should always be the first
parameter passed in your command. Arguments supplied in the table below are to
be included after the auth token unless otherwise specified.


XML METHOD

INPUTS*

NOTES/OUTPUTS

--------------------------------------------------------------------------------


API.ISUSEREXISTS

Test to see if a user exists in the system/database.

Input(s):
Username - string
Output(s):
Boolean (1 if exists)

Example

<methodCall> <methodName>api.isUserExists</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>user.name</string> </value> </param> </params> </methodCall>

--------------------------------------------------------------------------------


API.GETUSERACCOUNTBALANCE

Get the user’s current account balance.

Input(s):
Username - string
Account name - string (optional, defaults to primary)
Output(s):
double

--------------------------------------------------------------------------------


API.GETUSERPROPERTY

Gets a user property. Properties include the user’s full name, department,
email, home folder, notes, office, and restriction status among others.

Input(s):
Username - string
Property name - string, see Example for valid property names
Output(s):
value

Example

Valid Properties Read/Write: - balance: the user's balance, unformatted, e.g.
"1234.56". - primary-card-number - secondary-card-number - department -
disabled-print: true if the user's printing is disabled, otherwise false - email
- full-name - internal: true if this is an internal user, otherwise false -
notes - office - delegated-users: the user names the given user can release
print jobs for - delegated-groups: the group names the given user can release
print jobs for - print-stats.job-count: total number of print jobs from this
user, unformatted, e.g. "1234" - print-stats.page-count: total number of pages
printed by this user, unformatted, e.g. "1234" - net-stats.data-mb: total 'net
MB used by this user, unformatted, e.g. "1234.56" - net-stats.time-hours: total
'net hours used by this user, unformatted, e.g. "1234.56" - restricted: true if
this user's printing is restricted, false if they are unrestricted. - home: the
user's home folder (a double-quoted UNC path) - unauthenticated: true if the
user is an unauthenticated user, {otherwise false - username-alias: The alias
for a given user - dont-hold-jobs-in-release-station: true if the user's jobs
will bypass all release station queues, otherwise false -
dont-apply-printer-filter-rules: true if the user's jobs will bypass printer
filter settings, otherwise false - printer-cost-adjustment-rate-percent: The
percentage modifier for the user's job costs, unformatted, e.g. "123.45". If the
flag to enable adjustment is not set, returns -1 - dont-archive: true if the
user's jobs will not be archived, false otherwise. - auto-release-jobs: true if
the user's jobs will always release on device login, otherwise false -
overdraft-amount: the user's individual overdraft amount, unformatted, e.g.
"1234.56". Note this amount is in use only when the user account is restricted
and overdraft mode is set to 'individual' Valid Read-only properties (can't use
with setUserPropert[y/ies]): - account-selection.mode: the user's account
selection mode. One of the following: AUTO_CHARGE_TO_PERSONAL_ACCOUNT
CHARGE_TO_PERSONAL_ACCOUNT_WITH_CONFIRMATION AUTO_CHARGE_TO_SHARED
SHOW_ACCOUNT_SELECTION_POPUP SHOW_ADVANCED_ACCOUNT_SELECTION_POPUP
SHOW_MANAGER_MODE_POPUP - account-selection.can-charge-personal: true if the
user's account selection settings allow them to charge jobs to their personal
account, otherwise false. - account-selection.can-charge-shared-from-list: true
if the user's account selection settings allow them to select a shared account
to charge from a list of shared accounts, otherwise false. -
account-selection.can-charge-shared-by-pin: true if the user's account selection
settings allow them to charge a shared account by PIN or code, otherwise false.
- other-emails: user's other emails. - auto-shared-account: the shared account
to auto charge to. Will be blank if the user's account selection mode is not
AUTO_CHARGE_TO_SHARED)

--------------------------------------------------------------------------------


API.GETUSERPROPERTIES

Get multiple user properties at once. Properties include the user’s full name,
department, email, home folder, notes, office, and restriction status among
others.

Input(s):
Username - string
Array of property names - array of strings see ‘getUserProperty’ example for
list of valid properties
Output(s):
array of values

Example

<?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.getUserProperties</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>user.name</string> </value> </param> <param> <value> <array> <data>
<value> <string>department</string> </value> <value> <string>office</string>
</value> </data> </array> </value> </param> </params> </methodCall>

--------------------------------------------------------------------------------


API.SETUSERPROPERTY

Sets a user property. Properties include the user’s full name, department,
email, home folder, notes,office, password (for internal users), and restriction
status among others.

Input(s):
Username - string
Property name - string
Property value - string
Output(s):
boolean (1 if success)

Example

Valid Properties Read/Write: - balance: the user's balance, unformatted, e.g.
"1234.56". - primary-card-number - secondary-card-number - department -
disabled-print: true if the user's printing is disabled, otherwise false - email
- full-name - internal: true if this is an internal user, otherwise false -
notes - office - delegated-users: the user names the given user can release
print jobs for - delegated-groups: the group names the given user can release
print jobs for - print-stats.job-count: total number of print jobs from this
user, unformatted, e.g. "1234" - print-stats.page-count: total number of pages
printed by this user, unformatted, e.g. "1234" - net-stats.data-mb: total 'net
MB used by this user, unformatted, e.g. "1234.56" - net-stats.time-hours: total
'net hours used by this user, unformatted, e.g. "1234.56" - restricted: true if
this user's printing is restricted, false if they are unrestricted. - home: the
user's home folder (a double-quoted UNC path) - unauthenticated: true if the
user is an unauthenticated user, {otherwise false - username-alias: The alias
for a given user - dont-hold-jobs-in-release-station: true if the user's jobs
will bypass all release station queues, otherwise false -
dont-apply-printer-filter-rules: true if the user's jobs will bypass printer
filter settings, otherwise false - printer-cost-adjustment-rate-percent: The
percentage modifier for the user's job costs, unformatted, e.g. "123.45". If the
flag to enable adjustment is not set, returns -1 - dont-archive: true if the
user's jobs will not be archived, false otherwise. - auto-release-jobs: true if
the user's jobs will always release on device login, otherwise false -
overdraft-amount: the user's individual overdraft amount, unformatted, e.g.
"1234.56". Note this amount is in use only when the user account is restricted
and overdraft mode is set to 'individual'

--------------------------------------------------------------------------------


API.SETUSERPROPERTIES

Set multiple user properties at once. Properties include the user’s full name,
department, email, homefolder, notes, office, password (for internal users), and
restriction status among others. See ‘setUserProperty’ example for list of valid
properties

Input(s):
Username - string
Array of arrays
Arrays In each nested array: Property name - string
Property value - string
Output(s):
boolean (1 if success)

Example

<?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.setUserProperties</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>testuser</string> </value> </param> <param> <value> <array> <data>
<value> <array> <data> <value> <string>department</string> </value> <value>
<string>newdept</string> </value> </data> </array> </value> <value> <array>
<data> <value> <string>office</string> </value> <value>
<string>newoffice</string> </value> </data> </array> </value> </data> </array>
</value> </param> </params> </methodCall>

--------------------------------------------------------------------------------


API.ADJUSTUSERACCOUNTBALANCE

Adjust a user’s account balance by an adjustment amount. An adjustment can be
positive (add to the user’s account) or negative (subtract from the account).

Input(s):
Username - string
Adjustment - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADJUSTUSERACCOUNTBALANCEIFAVAILABLE

Adjust a user’s account balance if there is enough credit available.

Input(s):
Username - string
Adjustment - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADJUSTUSERACCOUNTBALANCEIFAVAILABLELEAVEREMAINING

Adjust a user’s account balance if there is enough credit available to leave the
given amount availablein the account.

Input(s):
Username - string
Adjustment - double (+/-) Leave remaining - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADJUSTUSERACCOUNTBALANCEBYGROUP

Adjust the account balance for all users in a group by an adjustment amount. An
adjustment can bepositive (add to the user’s account) or negative (subtract from
the account).

Input(s):
Group name - string
Adjustment - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADJUSTUSERACCOUNTBALANCEBYGROUPUPTO

Adjust the account balance for all users in a group by an adjustment amount, but
not above the givenlimit. An adjustment can be positive (add to the user’s
account) or negative (subtract from theaccount).

Input(s):
Group name - string
Adjustment - double (+/-) Limit - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSERACCOUNTBALANCE

Set the balance on a user’s account to a set value. This is conducted as a
transaction.

Input(s):
Username - string
Balance - double (+/-) Comment - string
Account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSERACCOUNTBALANCEBYGROUP

Set the balance for each member of a group to the given value.

Input(s):
Group name - string
Balance - double (+/-) Comment - string
Account name - string
Output(s):
*boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSEROVERDRAFTMODE

Set a restricted user’s overdraft mode.

Input(s):
Username - string
Mode - string [‘default’,‘individual’]
Output(s):
boolean (1 if success)
Note: Input ‘DEFAULT’ - same amount is applied to all users.
Input ‘INDIVIDUAL’ - the user has their own individual overdraft amount.

--------------------------------------------------------------------------------


API.GETUSEROVERDRAFTMODE

Get a restricted user’s overdraft mode. The mode can be either ‘DEFAULT’ (same
amount isapplied to all users) or ‘INDIVIDUAL’ (the user has their own
individual overdraft amount).

Input(s):
Username - string
Output(s):
‘default’, ‘individual’

--------------------------------------------------------------------------------


API.RESETUSERCOUNTS

Reset the counts (pages and job counts) associated with a user account. Can
include the name of theuser/script/process resetting the counts.

Input(s):
Username - string
Reset by - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REAPPLYINITIALUSERSETTINGS

Re-applies initial settings on the user. Initial user settings are based on
group membership.

Input(s):
Username - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DISABLEPRINTINGFORUSER

Disable printing for a user for selected period of time.

Input(s):
Username - string
Disable duration minutes - int
Output(s):
boolean (1 if success)

Example

Request: <!-- I never want this user to print ever again. EVER.--> <?xml
version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.disablePrintingForUser</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>baduser</string> </value> </param> <param> <value> <int>-1</int>
</value> </param> </params> </methodCall>

--------------------------------------------------------------------------------


API.ADDNEWUSER

Triggers the process of adding a new user account defined by a given username.
Assuming the user exists in the OS/Network/Domain user directory, the account is
created with the correct initial settings as defined by the rules set up in the
Admin web interface on the Groups page. Calling this method is equivalent to
triggering the ’new user’ event when a new user performs printing for the first
time.

Input(s):
Username - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.RENAMEUSERACCOUNT

Rename a user account. Useful when the user has been renamed in the
domain/directory, so that usage history can be maintained for the new username.
Perform this in conjunction with a rename of the user in the domain/user
directory, as all future usage and authentication will use the new username.

Input(s):
Current Username - string
New Username - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETUSERGROUPS

Retrieves all groups a single user is a member of.

Input(s):
Username - string
Output(s):
array of values

--------------------------------------------------------------------------------


API.GETGROUPMEMBERS

Lists all members of a designated group. Can be used to enumerate all user
groups in ‘pages’. When retrieving a list of all user groups, the recommended
page size/limit is 1000. Batching in groups of 1000 ensures efficient transfer
and processing.

Input(s):
Group Name - string
Offset/starting user index - int
Limit/batch size - int
Output(s):
array of values

Example

listUserAccounts('authtoken', 0, 1000) - returns group members 0 through 999
listUserAccounts('authtoken', 1000, 1000) - returns group members 1000 through
1999

--------------------------------------------------------------------------------


API.DELETEEXISTINGUSER

Delete/remove an existing user from the user list. Use this method with care.
Calling this permanently deletes the user account from the user list (print and
transaction history recordsremain).

Input(s):
Username - string
Redact user data - boolean [0,1]
Output(s):
boolean (1 if success)
Note: To comply with the EU General Data Protection Regulation (GDPR) Right to
be Forgotten, the permanently-redact-user-data flag permanently removes
(redacts) identifiable user information (username, account, document name,
document size, client machine, comments, digital signature)

--------------------------------------------------------------------------------


API.EXPORTUSERDATAHISTORY

To comply with the EU General Data Protection Regulation (GDPR) Right to Access,
export user data fromreports into CSV files.

Input(s):
Username - string
Save location - string [filepath formatted for PaperCut HostOS]
Output(s):
boolean (1 if success)
Note: The files will be owned by the system account running the PaperCut NG/MF
process. The output foldermust also have write permissions for this user

--------------------------------------------------------------------------------


API.ADDNEWINTERNALUSER

Creates and sets up a new internal user account.

Input(s):
Username - string
Password - string
Full name - string
Email - string
Card ID - string
PIN - string
Send email? - boolean [0,1]
Output(s):
boolean (1 if success)
Note: In PaperCut NG/MF all internal usernames must contain only characters that
can be printed (e.g. notnewline) and must not contain /, \ or @.

--------------------------------------------------------------------------------


API.LOOKUPUSERNAMEBYIDNO

Looks up the user with the given user id number and returns their user name. If
no match was found an empty string is returned.

Input(s):
ID ’number’ - string
Output(s):
string (empty if no match)

--------------------------------------------------------------------------------


API.LOOKUPUSERNAMEBYCARDNO

Looks up the user with the given user card number and returns their user name.
If no match was found an empty string is returned.

Input(s):
Card ’number’ - string
Output(s):
string (empty if no match)

--------------------------------------------------------------------------------


API.ADDADMINACCESSUSER

Add a user as an admin with default admin rights.

Input(s):
Username - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVEADMINACCESSUSER

Remove an admin user from the list of admins.

Input(s):
Username - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDADMINACCESSGROUP

Add a group as an admin group with default admin rights.

Input(s):
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVEADMINACCESSGROUP

Remove a group from the list of admin groups.

Input(s):
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSERACCOUNTSELECTIONAUTOSELECTSHAREDACCOUNT

Sets a user’s account selection to charge to a single shared account.

Input(s):
Username - string
Shared Account name - string
Charge to personal account? - boolean
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSERACCOUNTSELECTIONAUTOCHARGEPERSONAL

Sets a user’s account selection to automatically charge to personal account.

Input(s):
Username - string
Use popup confirmation? - boolean [0,1]
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETUSERACCOUNTSELECTIONSTANDARDPOPUP

Sets a user’s account selection to standard account selection popup.

Input(s):
Username - string
Allow personal account? - boolean [0,1]
Allow list selection? - boolean [0,1]
Allow PIN code? - boolean [0,1]
Allow Printing as other user? - boolean [0,1]
Charge to personal when shared accountselected? - boolean [0,1]
Output(s):
boolean (1 if success)

Example

<?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.setUserAccountSelectionStandardPopup</methodName> <params>
<param> <value> <string>SecretToken</string> </value> </param> <param> <value>
<string>user.name</string> </value> </param> <param> <value>
<boolean>1</boolean> </value> </param> <param> <value> <boolean>1</boolean>
</value> </param> <param> <value> <boolean>1</boolean> </value> </param> <param>
<value> <boolean>0</boolean> </value> </param> <param> <value>
<boolean>1</boolean> </value> </param> </params> </methodCall>

--------------------------------------------------------------------------------


API.LISTUSERACCOUNTS

List all user accounts (sorted by username) starting at offset and ending at
limit. Use this to enumerate all user accounts in pages. When retrieving a list
of all user accounts, the recommended page size/limit is 1000. Batching in
groups of 1000 ensures efficient transfer and processing.

Input(s):
Offset/starting user - int
Limit/batch size - int
Output(s):
array of values

Example

listUserAccounts('authtoken', 0, 1000) - returns users 0 through 999
listUserAccounts('authtoken', 1000, 1000) - returns users 1000 through 1999

--------------------------------------------------------------------------------


API.GETTOTALUSERS

Gets a count of all the users in the system.

Input(s):
No additional inputs (token only)
Output(s):
int

--------------------------------------------------------------------------------


API.LISTSHAREDACCOUNTS

List all shared accounts (sorted by account name) starting at offset and ending
at limit. Use this to enumerate all shared accounts in pages. When retrieving a
list of all accounts, the recommended page size / limit is 1000. Batching in
groups of 1000 ensures efficient transfer and processing.

Input(s):
Offset/starting account - int
Limit/batch size - int
Output(s):
array of values (child accounts will begin with the parent account name,
followed by a \ mark)

Example

listSharedAccounts('authtoken', 0, 1000) - returns shared accounts 0 through 999
listSharedAccounts('authtoken', 1000, 1000) - returns shared accounts 1000
through 1999

--------------------------------------------------------------------------------


API.LISTUSERSHAREDACCOUNTS

List all shared accounts the user has access to (sorted by account name),
starting at offset and ending at limit. Use this to enumerate the accounts in
pages. When retrieving a list of all accounts, the recommended page size/limit
is 1000. Batching in groups of 1000 ensures efficient transfer and processing.
You can optionally specify TRUE to list accounts even if the user is currently
not configured to charge to a shared account.

Input(s):
Username - string
Offset/starting account - int
Limit/batch size - int
Ignore user account selection config - boolean [0,1](optional)
Output(s):
array of values

Example

listUserSharedAccounts('authtoken', 'username', 0, 1000) - returns shared
accounts 0 through 999 listUserSharedAccounts('authtoken', 'username', 1000,
1000) - returns shared accounts 1000 through 1999
listUserSharedAccounts('authtoken', 'username', 0, 1000, TRUE) - returns shared
accounts 0 through 999 even if 'username' is not configured to charge to a
shared account

--------------------------------------------------------------------------------


API.ISSHAREDACCOUNTEXISTS

Test to see if a shared account exists in the system/database.

Input(s):
Shared account name - string
Output(s):
boolean (1 if exists)

--------------------------------------------------------------------------------


API.SETSHAREDACCOUNTACCOUNTBALANCE

Sets a shared account’s current account balance.

Input(s):
Shared account name - string
Balance - double (+/-)
Comment - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETSHAREDACCOUNTACCOUNTBALANCE

Gets a shared account’s current account balance.

Input(s):
Shared account name - string
Output(s):
double

--------------------------------------------------------------------------------


API.GETSHAREDACCOUNTPROPERTY

Gets a shared account property. Properties include access groups, balance,
comment options, disabledstatus, notes, pin, and restriction status among
others.

Input(s):
Shared account name - string Shared account Property name - string See Example
for valid property names.
Output(s):
boolean (1 if success)

Example

Valid properties include: - access-groups - access-users - account-id - balance
- comment-option - disabled - invoice-option - notes - overdraft-amount - pin -
restricted

--------------------------------------------------------------------------------


API.SETSHAREDACCOUNTPROPERTY

Sets a shared account property. Properties include access groups, balance,
comment options, disabled status, notes, pin and restriction status among
others.

Input(s):
Shared account name - string
Property name - string See ‘getSharedAccountProperty’ example for list of valid
properties
Property value - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETSHAREDACCOUNTPROPERTIES

Sets multiple shared account properties at once. Properties include access
groups, balance, comment options, disabled status, notes, pin, and restriction
status among others.

Input(s):
Shared account name - string Array of arrays
Arrays In each nested array:
Shared account Property name - string
Property value - string
See ‘getSharedAccountProperty’ example for list of valid properties
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETSHAREDACCOUNTPROPERTIES

Gets multiple shared account properties at once. Properties include access
groups, balance, comment options, disabled status, notes, pin and restriction
status among others.

Input(s):
Shared account name - string
Array of shared account property names - Array of strings
Output(s):
array of values

Example

Request: <?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.getSharedAccountProperties</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>Skynet</string> </value> </param> <param> <value> <array> <data> <value>
<string>access-users</string> </value> <value> <string>balance</string> </value>
</data> </array> </value> </param> </params> </methodCall> Response: <?xml
version="1.0"?> <methodResponse> <params> <param> <value> <array> <data>
<value>user1, user2</value> <value>0.0</value> </data> </array> </value>
</param> </params> </methodResponse>

--------------------------------------------------------------------------------


API.ADJUSTSHAREDACCOUNTACCOUNTBALANCE

Adjust a shared account’s account balance by an adjustment amount. An adjustment
can be positive (add to the account) or negative (subtract from the account).

Input(s):
Shared account name - string
Adjustment - double (+/-) Comment - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETSHAREDACCOUNTACCOUNTBALANCE

Set the balance on a shared account to a set value. This is conducted as a
transaction.

Input(s):
Shared account name - string
Balance - double
Comment - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETSHAREDACCOUNTOVERDRAFTMODE

Set a shared account’s overdraft mode to either Default or Individual

Input(s):
Shared account name - string
Mode - string [‘default’,‘individual’]
Output(s):
boolean (1 if success)
Note: Input ‘DEFAULT’ - same amount is applied to all users.
Input ‘INDIVIDUAL’ - the user has their own individual overdraft amount.

--------------------------------------------------------------------------------


API.GETSHAREDACCOUNTOVERDRAFTMODE

Get a shared account’s overdraft mode configuration

Input(s):
Shared account name - string
Output(s):
‘default’, ‘individual’
Note: Output ‘DEFAULT’ - same amount is applied to all users.
Output ‘INDIVIDUAL’ - the user has their own individual overdraft amount.

--------------------------------------------------------------------------------


API.ADDNEWSHAREDACCOUNT

Create a new shared account with the given name.

Input(s):
Shared account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DELETEEXISTINGSHAREDACCOUNT

Delete a shared account from the system. Use this method with care. Deleting a
shared account permanently deletes it from the shared account list (print
history records remain).

Input(s):
Shared account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDSHAREDACCOUNTACCESSUSER

Allow the given user access to the given shared account without using a pin.

Input(s):
Shared account name - string
Username to add - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.RENAMESHAREDACCOUNT

Rename an existing shared account.

Input(s):
Current Shared account name - string
New shared account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DELETEEXISTINGSHAREDACCOUNT

Delete a shared account from the system. Use this method with care. Calling this
permanently deletes itfrom the shared account list.

Input(s):
Shared account name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDSHAREDACCOUNTACCESSGROUP

Allow the given group access to the given shared account without using a pin.

Input(s):
Shared account name - string
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVESHAREDACCOUNTACCESSUSER

Revoke the given user’s access to the given shared account.

Input(s):
Shared account name - string
Username to remove - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVESHAREDACCOUNTACCESSGROUP

Revoke the given group’s access to the given shared account.

Input(s):
Shared account name - string
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DISABLESHAREDACCOUNT

Disables a shared account for a selected period of time.

Input(s):
Shared account name - string
Disable duration minutes - int
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETPRINTERPROPERTY

Gets a printer property.

Input(s):
Server name - string
Printer name - string
Property name - string
Output(s):
value

--------------------------------------------------------------------------------


API.SETPRINTERPROPERTY

Sets a printer property.

Input(s):
Server name - string
Printer name - string
Property name - string
Property value - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.LISTPRINTERS

List all printers (sorted by printer name), starting at offset and ending at
limit. Use this to enumerate the printers in pages. When retrieving a list of
all printers, the recommended page size/limit is 1000. Batching in groups of
1000 ensures efficient transfer and processing.

Input(s):
Offset/starting printer - int
Limit/batch size - int
Output(s):
array of values (ServerName\PrinterName

Example

listPrinters('authtoken', 0, 1000) - returns printers 0 through 999
listPrinters('authtoken', 1000, 1000) - returns printers 1000 through 1999
Request: <!--Give me the first ten printers --> <?xml version="1.0"
encoding="UTF-8"?> <methodCall> <methodName>api.listPrinters</methodName>
<params> <param> <value> <string>SecretToken</string> </value> </param> <param>
<value> <int>0</int> </value> </param> <param> <value> <int>10</int> </value>
</param> </params> </methodCall> Response: <?xml version="1.0"?>
<methodResponse> <params> <param> <value> <array> <data>
<value>papercutserver1\HP LaserJet 400 M401 PCL 6</value>
<value>papercutserver2\My Printer</value> <value>papercutserver2\PaperCut Global
PostScript</value> </data> </array> </value> </param> </params>
</methodResponse>

--------------------------------------------------------------------------------


API.SETPRINTERCOSTSIMPLE

Set a page cost using the Simple Charging Model.

Input(s):
Server name - string
Printer name - string
Cost per page - double
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETPRINTERCOSTSIMPLE

Get the page cost if, and only if, the printer is using the Simple Charging
Model.

Input(s):
Server name - string
Printer name - string
Output(s):
double (if configured to simple charging)
Fault code 292 (if configured to other charging method)

--------------------------------------------------------------------------------


API.RESETPRINTERCOUNTS

Reset the counts (pages and job counts) associated with a printer. Can include
the name of theuser/script/process resetting the counts.

Input(s):
Server name - string
Printer name - string
Reset by - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDPRINTERGROUP

Add a printer to a single printer group.

Input(s):
Server name - string
Printer name - string
Printer Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETPRINTERGROUPS

Set the printer groups a printer belongs to, overwriting any existing group.

Input(s):
Server name - string
Printer name - string
Printer group names - string [comma-separated list ofprinter groups]
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ENABLEPRINTER

Enables a printer.

Input(s):
Server name - string
Printer name - string
Disable duration minutes - int
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DISABLEPRINTER

Disable a printer for select period of time.

Input(s):
Server name - string
Printer name - string
Disable duration minutes - int
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.DELETEPRINTER

Delete a printer. Use the special text ‘[All Printers]’ to delete all printers
on the specified server.

Input(s):
Server name - string
Printer name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.RENAMEPRINTER

Rename a printer. This is useful after migrating a print queue or print server
(that is, the printer retains its history and settings under the new name). Note
that in some cases case sensitivity is important, so take care to enter the name
exactly as it is displayed in the OS.

Input(s):
Current server name - string
Current printer name - string
New Server name - string
New printer name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDPRINTERACCESSGROUP

Add a user group to the printer’s access group list.

Input(s):
Server name - string
Printer name - string
User Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVEPRINTERACCESSGROUP

Remove a user group from the printer’s access group list.

Input(s):
Server name - string
Printer name - string
User Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.ADDNEWGROUP

Add a new group to system’s group list.

Input(s):
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.REMOVEGROUP

Remove a group.

Input(s):
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.LISTUSERGROUPS

List all groups (sorted by group name), starting at offset and ending at limit.
Use this to enumerate the groups in pages. When retrieving a list of all groups,
the recommended page size / limit is 1000. Batching in groups of 1000 ensures
efficient transfer and processing.

Input(s):
Offset/starting group - int
Limit/batch size - int
Output(s):
array of values

Example

listPrinters('authtoken', 0, 1000) - returns printers 0 through 999
listPrinters('authtoken', 1000, 1000) - returns printers 1000 through 1999

--------------------------------------------------------------------------------


API.ISGROUPEXISTS

Test to see if a group exists in the system.

Input(s):
Group name - string
Output(s):
boolean (1 if exists)

--------------------------------------------------------------------------------


API.ADDUSERTOGROUP

Adds a user to a specified group. Changes the group membership within the
application, not in the OS/Network/Domain user directory.

Input(s):
Username - string
Group name - string
Output(s):
boolean (1 if success)
Note: These changes will be overwritten during the next scheduled User/Group
sync unless the membership is changed in the directory source.

--------------------------------------------------------------------------------


API.REMOVEUSERFROMGROUP

Removes a user from a specified group. Changes the group membership within the
application, not in the OS/Network/Domain user directory.

Input(s):
Username - string
Group name - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.SETGROUPQUOTA

Set the group quota allocation settings on a given group.

Input(s):
Group name - string
Quota amount - double
Interval - string [‘DAILY’, ‘WEEKLY’, ‘MONTHLY’, comma-separated value of custom
dates]
Output(s):
boolean (1 if success)
Note: Example of comma separated list of dates
(YYYY-MM-DD):2010-03-15,2010-08-20,-08-01,-*-0

--------------------------------------------------------------------------------


API.GETGROUPQUOTA

Get the group quota allocation settings on a given group.

Input(s):
Group name - string
Output(s):
QuotaAmount,- double
QuotaMaxAccumulation- double
QuotaPeriod- (DAILY , WEEKLY, MONTHLY, CUSTOM)

Example

Request: <?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.getGroupQuota</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>myUserGroup</string> </value> </param> </params> </methodCall> Response:
Users in group 'myUserGroup' get 50 cents every August 1st (a custom date
interval) unless their account has a balance of 2 dollars or more. <?xml
version="1.0"?> <methodResponse> <params> <param> <value> <struct> <member>
<name>QuotaAmount</name> <value> <double>0.5</double> </value> </member>
<member> <name>QuotaMaxAccumulation</name> <value> <double>2.0</double> </value>
</member> <member> <name>QuotaPeriod</name> <value>CUSTOM</value> </member>
</struct> </value> </param> </params> </methodResponse>

--------------------------------------------------------------------------------


API.USECARD

Redeem a pre-paid card and place the credit on the user’s account.

Input(s):
Username - string
Card number - string
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.PERFORMONLINEBACKUP

Instigate an online backup. This process is equivalent to clicking Manual Backup
in the web-based Admin web interface. The data is exported into the
server/data/backups directory as a timestamped, zipped XML file.

Input(s):
No additional inputs (token only)
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.PERFORMGROUPSYNC

Start the process of synchronizing the system’s group membership with the
OS/Network/Domain’s group membership. A call to this method starts the sync
process and the operation completes in the background.

Input(s):
No additional inputs (token only)
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.PERFORMUSERANDGROUPSYNC

Start a full user and group synchronization. This is equivalent to clicking
Synchronize Now in the Admin web interface. No existing users are removed.
Whether or not full details for existing users are updated depends on the
current user/group sync settings as defined in the Admin web interface. A call
to this method starts the sync process and the operation completes in the
background.

Input(s):
No additional inputs (token only)
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.PERFORMUSERANDGROUPSYNCADVANCED

An advanced version of the user and group synchronization process providing
control over the sync settings. A call to this method starts the sync process
and the operation completes in the background.

Input(s):
Delete non-existent users? - boolean [0,1]
Update user details? - boolean [0,1]
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.ADDNEWUSERS

Calling this method starts a specialized user and group synchronization process
optimized for tracking down and adding any new users who exist in the
OS/Network/Domain user directory and not in the system. Any existing user
accounts are not modified. A group synchronization is to be performed only if
new users are actually added to the system.

Input(s):
No additional inputs (token only)
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.GETTASKSTATUS

Return the status (completed flag and a status message) associated with a
backgrounded task such as async operation started by the ‘performGroupSync’ API
call.

Input(s):
No token required No parameters necessary
Output(s):
struct (hashtable/map) containing elements with keys completed and message. This
method can be polled to determine if a sync has completed

--------------------------------------------------------------------------------


API.BATCHIMPORTSHAREDACCOUNTS

Import the shared accounts contained in the given tab separated import file
(located on the server).

Input(s):
Import file - string [filepath formatted for PaperCut HostOS]
Run as test? - boolean [0,1]
Delete shared accounts not in file? - boolean [0,1]
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.BATCHIMPORTUSERS

Import the users contained in the given tab-delimited import file (located on
the server). See ‘Batch import and update user dat’ for a description of the
file format.

Input(s):
Import file - string [filepath formatted for PaperCut HostOS]
Create new users? - boolean [0,1]
Email new users? - boolean [0,1]
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)
Note: If ‘Create new users’ is set ‘TRUE’, users will be created similarly to
on-demand users (no credentials stored in PaperCut).
If ‘Create new users’ is set to ‘false’, process will only update existing
users’ details (will be overwritten in next schedule User/Group sync)

--------------------------------------------------------------------------------


API.BATCHIMPORTINTERNALUSERS

Import the internal users contained in the given tab-delimited import file
(located on the server). See Batch internal user import and update for details
of the required file format.

Input(s):
Import file - string [filepath formatted for PaperCut HostOS]
Overwrite existing passwords? - boolean [0,1]
Overwrite existing PINs? - boolean [0,1]
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.BATCHIMPORTUSERCARDIDNUMBERS

Import the user card/ID numbers and PINs contained in the given tab-delimited
import file.

Input(s):
Import file - string [filepath formatted for PaperCut HostOS]
Overwrite existing PINs? - boolean [0,1]
Output(s):
boolean (1 if successfully initiated, use ‘api.getTaskStatus’ for sync
success/failure)

--------------------------------------------------------------------------------


API.CREATEUSERCLIENTACCOUNTSFILE

Saves a file containing shared accounts data for the User Client. See the manual
for more information on how you can use this feature. The file is saved on the
server to the location:[app-path]\server\data\client\client-accounts.dat
If this file already exists it is over-written.

Input(s):
No additional inputs (token only)
Output(s):
boolean (1 if success)

--------------------------------------------------------------------------------


API.GETCONFIGVALUE

Gets the value of a configuration settings.

Input(s):
Config name - string
Output(s):
value

--------------------------------------------------------------------------------


API.SETCONFIGVALUE

Sets the value of a configuration setting.
Take care updating config values. You can cause serious problems that can only
be fixed by reinstalling the application. Use the setConfigValue API at your own
risk.

Input(s):
Config name - string
Config value - string
Output(s):
boolean (1 if success)
Note: See ‘Config Editor (Advanced)’ in your PaperCut admin interface for
reference of available config keys

--------------------------------------------------------------------------------


API.PROCESSJOB

Takes the details of a job and logs and charges as if it were a ‘real’ job. Jobs
processed via this method are not susceptible to filters, popups, hold/release
queues etc., they are only logged. See the user manual section ‘Importing Print
Job Details’ for more information and the format.

Input(s):
Job details - string [comma-separated key=value pairs of job details]
Output(s):
boolean (1 if success)
Note: See example for full input. Note that these details are arbitrary - any
username, any time, any document name, and any server/printer name will be
valid! Check your spelling!

Example

Example of a simple job input:
user=bob,server=papercut,printer=MyPrinter,time=20091224T133602,cost=1.00,total-pages=4,document-name=testdoc
Request: <?xml version="1.0" encoding="UTF-8"?> <methodCall>
<methodName>api.getGroupQuota</methodName> <params> <param> <value>
<string>SecretToken</string> </value> </param> <param> <value>
<string>user=bob,server=papercut,printer=MyPrinter,time=20091224T133602,cost=1.00,total-pages=4,
document-name=testdoc</string> </value> </param> </params> </methodCall>

--------------------------------------------------------------------------------

*Inputs will always come after the auth token for your application. Pass your
auth token as the first parameter in your request.


WEB SERVICES EXAMPLE CODE

The best way to demonstrate how to use the Web Services interface is using
example code. PaperCut NG/MF ships with example code for Java, C#, Python and
Ruby located in:

[app-path]/server/examples/webservices/



The C# and Java examples also include a full documented Proxy class - a proxy is
a common program design pattern. The Proxy wraps and exposes the Web Services
methods as standard methods. The setup and use of the underlying XML-RPC library
is all handled in the proxy class meaning you can just focus on calling the
methods.

See the README.txt files in the examples directories for more information. The
Java example includes full JavaDoc style documentation under

[app-path]/server/examples/webservices/java/docs/api



Developers using other languages, such as Perl or Python need to use an XML-RPC
library to call the methods directly. All methods are exposed via the URL
http://[server_name]:9191/rpc/api/xmlrpc.

Note
 * All the XML Web Services commands are also accessible via the server-command
   program. An alternative to using a full programming environment to automate
   PaperCut NG/MF via Web Services is to use the server-command program to call
   the commands via a script such as a batch file or shell script. This is a
   simpler solution for common automation tasks such as scheduling a User/Group
   synchronization each night. For more information on the server-command
   program, see Server commands (server-command) .
 * Programmers often report that they get an error message “ERROR:
   java.lang.NoSuchMethodException:” and this is frequently because they are
   calling the API method with the wrong number or type of parameters. Consult
   the Javadoc API documentation (see above) for information on what parameters
   to use.


SECURITY

The Web Services APIs provide full access to the system’s internals so they must
be secured. PaperCut NG/MF secures access using two security layers:

 * IP address level security

 * Authentication tokens - required for each method call.

The IP address level security is used to control which systems, denoted by IP
addresses, are allowed to connect to the server and call the APIs. By default,
this is restricted to localhost (127.0.0.1) only. If the program/script making
use of the APIs resides on another system, then add this system’s IP address to
the list of approved addresses under Options > Advanced > Allowed XML Web
Services callers.

The first argument to all method calls is an authentication token (authToken).

Define Web Services authentication tokens with the advanced configuration editor
(see below). A valid token must be supplied with all method calls.

To configure a web service authentication:

 1. Click the Options tab. The General page is displayed.

 2. In the Actions menu, click Config editor (advanced).
    
    
    
    The Config Editor page is displayed.

 3. Find the auth.webservices.auth-token config key.

 4. In Value, enter the new Web Services authentication token. See below for the
    supported formats.

 5. Click Update to the right of Value to apply the change.
    
    This authentication token can now be used in addition to the built-in admin
    user’s password.

Auth tokens can be configured in three different formats

 * The most flexible, and recommended, approach is a JSON object that lists the
   name of the applications and the tokens they use. For example:
   
   {"payments":"Zuj0hiazoo5hahwa","userUpdate":"heitieGuacoh8zo6"}
   
   PaperCut NG/MF ignores the application names ("payments" and "userUpdate" in
   the above example) during validation. They are supported to help the PaperCut
   NG/MF administrator keep a record of which API applications are using the
   various tokens. A token value can be used by more than one application, but
   the application name must be unique. When an API call is made PaperCut NG/MF
   will record the application name in the server log for auditing purposes when
   debug is enabled. Debug can be enabled in the Application server logs via
   Options > Advanced.

 * If you don’t need to keep a record of which applications are using the
   various tokens, you can specify the tokens as a simple JSON array. For
   example:
   
   ["Zuj0hiazoo5hahwa","heitieGuacoh8zo6"]

 * The simplest option is to provide a single token as a string that is shared
   across all API applications. This feature is provided for backwards
   compatibility. For example:
   
   Zuj0hiazoo5hahwa

If you are using an external system to manage your API auth tokens, then these
values can be managed from the PaperCut NG/MF server-command utility (or the Web
Services API) via the set-config subcommand. For example:

From the Linux or macOS command line.

  ~papercut/server/bin/linux-x64/server-command set-config auth.webservices.auth-token \\ '\{"payments":"Zuj0hiazoo5hahwa","userUpdate":"heitieGuacoh8zo6"\}'


From the Windows Powershell command line:

  &'C:\\Program Files\\PaperCut MF\\server\\bin\\win\\server-command.exe' set-config auth.webservices.auth-token \` --% "\{""payments"":""Zuj0hiazoo5hahwa"",""userUpdate"":""heitieGuacoh8zo6""\}"


(Note: In the Powershell the last line cannot contain a line break.)

You can verify the contents with the get-config subcommand. Refer to the
server-command documentation for more details.

If a Web Services authentication token (as described above) is not available,
then you can use the built-in admin user’s password. This is the password
defined for the SysAdmin during the initial configuration wizard).

Using the admin password could be a security risk if the password leaks. The
admin password is also approximately ten time slower because the auth token
requires additional processing on each call.


COMMENTS


Please enable JavaScript to view the comments powered by Disqus.

Subscribe to PaperCut communications

Amplitude Device ID


 * Yes, subscribe me to PaperCut news, offers, product updates, newsletters and
   events.
   
   *

By filling out and submitting this form, you agree that you have read our
Privacy Policy, and agree to PaperCut handling your data in accordance with its
terms.




This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of
Service apply.

Products

 * Product Overview
 * PaperCut NG
 * PaperCut MF
 * PaperCut Pocket
 * PaperCut Hive
 * Product comparison

Free Tools

 * PaperCut Mobility Print
 * PaperCut QRDoc
 * PaperCut Views

Beta

 * In the Percolator

Solutions for Industries

 * High school/K-12
 * Higher education
 * Healthcare
 * Coworking
 * Life sciences
 * Legal
 * Small businesses
 * Large enterprise
 * Local government

What our customers say

 * Customer Stories
 * Testimonials

Discover

 * Discover overview
 * Easy printing
 * Print security
 * Cloud and Print
 * Waste control
 * Scanning
 * Integrations
 * Products at a Glance
 * Best practices
 * Forest Positive

Have a Read

 * Blog
 * Resources

Support

 * Support Overview

Get PaperCut

 * Contact Sales

About

 * About us
 * Careers

Misc

 * Become a Reseller
 * Privacy Policy
 * Cookie Settings
   
   Hey there!  We use cookies.  Why? They let us personalize content, track
   usage, and analyze data on our end to improve your experience.  To learn more
   about the different cookies we’re using, check out our Privacy Policy.
   
   OK, I understand



PaperCut, the P symbol, and PaperCut products are trademarks of the PaperCut
group of companies.

© PaperCut Software Pty Ltd

Survey

SHARE YOUR THOUGHTS

How easy was it to find what you were looking for on our website?

Submit now







Feedback