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
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&k=6Ld_ad8ZAAAAAAqr0ePo1dUfAi0m4KPkCMQYwPPm&co=aHR0cHM6Ly93d3cucGFwZXJjdXQuY29tOjQ0Mw..&hl=en&v=vjbW55W42X033PfTdVf6Ft4q&size=invisible&badge=inline&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="{"embedAtTimestamp":"1715564948003","formDefinitionUpdatedAt":"1658376130808","lang":"en","legalConsentOptions":"{\"communicationConsentCheckboxes\":[{\"communicationTypeId\":20660050,\"label\":\"<p>Yes, subscribe me to PaperCut news, offers, product updates, newsletters and events.</p>\",\"required\":true}],\"legitimateInterestLegalBasis\":\"LEGITIMATE_INTEREST_PQL\",\"processingConsentType\":\"IMPLICIT\",\"processingConsentText\":\"<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>\",\"processingConsentCheckboxLabel\":\"<p>Yes, subscribe me to PaperCut news, offers, product updates, newsletters and events.</p>\",\"isLegitimateInterest\":false}","embedType":"REGULAR","renderRawHtml":"true","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","pageTitle":"The XML Web Services API | PaperCut","pageUrl":"https://www.papercut.com/help/manuals/ng-mf/common/tools-web-services/","isHubSpotCmsGeneratedPage":false,"hutk":"74836803f5e3af0dbc24e4a7cfefe8cf","__hsfp":3914766532,"__hssc":"154692263.1.1715564954126","__hstc":"154692263.74836803f5e3af0dbc24e4a7cfefe8cf.1715564954125.1715564954125.1715564954125.1","formTarget":"#hbspt-form-42b10132-9209-4337-ac8b-f9bed9127480","boolCheckBoxFields":"LEGAL_CONSENT.subscription_type_20660050","rumScriptExecuteTime":826.7000000476837,"rumTotalRequestTime":1239.4000000357628,"rumTotalRenderTime":1336.1000000238419,"rumServiceResponseTime":412.69999998807907,"rumFormRenderTime":96.69999998807907,"connectionType":"4g","firstContentfulPaint":0,"largestContentfulPaint":0,"locale":"en","timestamp":1715564954147,"originalEmbedContext":{"portalId":"8186336","formId":"525b820a-c332-44a2-b743-cfacfa396ead","region":"na1","target":"#hbspt-form-42b10132-9209-4337-ac8b-f9bed9127480","isBuilder":false,"isTestPage":false,"isPreview":false,"isMobileResponsive":true},"correlationId":"42b10132-9209-4337-ac8b-f9bed9127480","renderedFieldsIds":["email","amplitude_device_id","LEGAL_CONSENT.subscription_type_20660050"],"captchaStatus":"LOADED","emailResubscribeStatus":"NOT_APPLICABLE","isInsideCrossOriginFrame":false,"source":"forms-embed-1.5064","sourceName":"forms-embed","sourceVersion":"1.5064","sourceVersionMajor":"1","sourceVersionMinor":"5064","allPageIds":{},"_debug_embedLogLines":[{"clientTimestamp":1715564948193,"level":"INFO","message":"Retrieved pageContext values which may be overriden by the embed context: {\"pageTitle\":\"The XML Web Services API | PaperCut\",\"pageUrl\":\"https://www.papercut.com/help/manuals/ng-mf/common/tools-web-services/\",\"userAgent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36\",\"isHubSpotCmsGeneratedPage\":false}"},{"clientTimestamp":1715564948195,"level":"INFO","message":"Retrieved countryCode property from normalized embed definition response: \"AU\""},{"clientTimestamp":1715564954142,"level":"INFO","message":"Retrieved analytics values from API response which may be overriden by the embed context: {\"hutk\":\"74836803f5e3af0dbc24e4a7cfefe8cf\"}"}]}"><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