{"id":24279,"date":"2024-02-15T14:53:34","date_gmt":"2024-02-15T22:53:34","guid":{"rendered":"https:\/\/docs.extraview.com\/v25\/book\/concepts-4\/"},"modified":"2025-03-05T16:49:52","modified_gmt":"2025-03-06T00:49:52","slug":"concepts-4","status":"publish","type":"page","link":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/","title":{"rendered":"Concepts"},"content":{"rendered":"<p>The Command Line Interface is a set of Perl scripts implemented using ExtraView\u2019s API. These commands provide an alternative to the Browser GUI, for accessing many of ExtraView\u2019s features. Many of the CLI commands can be executed either interactively, where the CLI command prompts for parameters or it can be executed with a single command line, with all the required arguments provided as command line options.<\/p>\n<p>Although the CLI provides access to most of the features that are available through the GUI, a few features are not supported through the CLI. These include:<\/p>\n<ul>\n<li>Repeating records may not be added or edited through the CLI<\/li>\n<li>Multi-value list fields may not be edited through the CLI. If more than one value for a multi-value list field is specified with the evadd command, only the last value entered will be used. evupdate is not able to modify multi-value list fields at all. The behavior setting CLI_EDIT_MULTI_VALUE_FIELDS should always be set to NO. If this setting has a value of YES, issues containing multi-value field data will lose this data any time those issues are edited with evupdate.<\/li>\n<\/ul>\n<h3>CLI command summary<\/h3>\n<table>\n<tbody>\n<tr>\n<td width=\"100\">evadd<\/td>\n<td>inserts new records into the ExtraView database<\/td>\n<\/tr>\n<tr>\n<td>evadd2group<\/td>\n<td>adds an existing user to a user role<\/td>\n<\/tr>\n<tr>\n<td>evaddlist<\/td>\n<td>provides an ordered list of fields that are used to insert records<\/td>\n<\/tr>\n<tr>\n<td>evaddudfvalues<\/td>\n<td>add one or more values to a UDF field<\/td>\n<\/tr>\n<tr>\n<td>evadduser<\/td>\n<td>adds a new user to ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evcheck<\/td>\n<td>displays the existing configuration settings<\/td>\n<\/tr>\n<tr>\n<td>evdebug<\/td>\n<td>turns on debug mode<\/td>\n<\/tr>\n<tr>\n<td>evdefaults<\/td>\n<td>fields and values which have a default in the data dictionary<\/td>\n<\/tr>\n<tr>\n<td>evdelete<\/td>\n<td>deletes existing issues from the database<\/td>\n<\/tr>\n<tr>\n<td>evdeleteuser<\/td>\n<td>deactivate an existing user<\/td>\n<\/tr>\n<tr>\n<td>evdownload<\/td>\n<td>downloads a copy of a file from an issue attachment<\/td>\n<\/tr>\n<tr>\n<td>eveditlist<\/td>\n<td>displays a list of fields that are used to update records<\/td>\n<\/tr>\n<tr>\n<td>evfields<\/td>\n<td>displays a list of available fields and their screen names<\/td>\n<\/tr>\n<tr>\n<td>evfiles<\/td>\n<td>retrieves a list of file attachments against a single issue<\/td>\n<\/tr>\n<tr>\n<td>evget<\/td>\n<td>retrieves a single record from the database<\/td>\n<\/tr>\n<tr>\n<td>evgetfields<\/td>\n<td>download a specific field or fields from an existing issue<\/td>\n<\/tr>\n<tr>\n<td>evheartbeat<\/td>\n<td>checks the health of an ExtraView database<\/td>\n<\/tr>\n<tr>\n<td>evhelp<\/td>\n<td>help pages on the CLI<\/td>\n<\/tr>\n<tr>\n<td>evhist<\/td>\n<td>searches for records updated since a given date<\/td>\n<\/tr>\n<tr>\n<td>evimport<\/td>\n<td>imports records into ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evimportav<\/td>\n<td>import allowed value combinations into ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evimportJIS<\/td>\n<td>imports records with Japanese text into ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evmail<\/td>\n<td>the email interface to ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evmeta<\/td>\n<td>retrieves a list of valid metadata for an issue<\/td>\n<\/tr>\n<tr>\n<td>evpasswd<\/td>\n<td>updates a user\u2019s password<\/td>\n<\/tr>\n<tr>\n<td>evproj<\/td>\n<td>allows a user to reset their default area and project<\/td>\n<\/tr>\n<tr>\n<td>evreport<\/td>\n<td>runs a pre-defined ExtraView report or returns a list of reports<\/td>\n<\/tr>\n<tr>\n<td>evrole<\/td>\n<td>sets a user\u2019s role<\/td>\n<\/tr>\n<tr>\n<td>evsearch<\/td>\n<td>provides a general search and retrieval mechanism<\/td>\n<\/tr>\n<tr>\n<td>evsearchlist<\/td>\n<td>displays a list of the available column names and titles<\/td>\n<\/tr>\n<tr>\n<td>evset<\/td>\n<td>sets user details so they do are not entered with each command<\/td>\n<\/tr>\n<tr>\n<td>evsh<\/td>\n<td>a shell optimized to run CLI and system commands<\/td>\n<\/tr>\n<tr>\n<td>evtemplate<\/td>\n<td>produces a template for the evadd and evupdate commands<\/td>\n<\/tr>\n<tr>\n<td>evupdate<\/td>\n<td>updates existing records in the ExtraView database<\/td>\n<\/tr>\n<tr>\n<td>evupload<\/td>\n<td>uploads a file as a new issue attachment<\/td>\n<\/tr>\n<tr>\n<td>evuserfields<\/td>\n<td>displays an ordered list of fields for the user record<\/td>\n<\/tr>\n<tr>\n<td>evusergroups<\/td>\n<td>displays a list of user groups<\/td>\n<\/tr>\n<tr>\n<td>evusers<\/td>\n<td>displays a list of users<\/td>\n<\/tr>\n<tr>\n<td>evversion<\/td>\n<td>displays the version of ExtraView<\/td>\n<\/tr>\n<tr>\n<td>evxmlc<\/td>\n<td>neatly formats XML output in a columnar form<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Authentication<\/h3>\n<p>CLI commands require an active ExtraView username and password. The CLI provides four different mechanisms for providing this information:<\/p>\n<ol>\n<li><b>Interactive prompt from the CLI command<\/b> If neither a username nor a password is provided, the CLI command will prompt for them. If a username is provided with no password, the CLI command will prompt for just the password<\/li>\n<li><b>Command line options<\/b> A username, or username and password may be provided as command line options using the <span class=\"fixedWithFont\">-U<\/span> and <span class=\"fixedWithFont\">-P<\/span> options, respectively. If only the <span class=\"fixedWithFont\">-U<\/span> option is provided, the CLI command will prompt for just the password.<\/li>\n<li><b>evsh<\/b> The evsh command requests the user to enter their &#8220;login&#8221; information once, when the command is first run. After authentication, the user may interactively run CLI commands without needing to re-enter their login information each time they run a CLI command. Refer to the <span class=\"fixedWithFont\">evsh<\/span> man page for complete information<\/li>\n<li><b>.evrc<\/b> The evset command may be used to create a configuration file containing the user\u2019s name and password. The most significant drawback to this approach is that this login information is stored in a plain text file, protected only by the operating system\u2019s file permissions. Refer to the <span class=\"fixedWithFont\">evset<\/span> man page for the complete description. Note that you may use an alternative user ID in place of a user ID. Throughout this document, all command line examples assume that the user name and password are stored in the $HOME\/.evrc (evrc.txt on Windows) configuration file.<\/li>\n<\/ol>\n<h3>XML Data Returned From CLI Commands<\/h3>\n<p>Much of the data returned by a CLI\/API call is in XML format. This has some significance to the user of the CLI, in that Extraview&#8217;s XML data may embed your own XML within its results. To accommodate this, ExtraView uses Base64 encoding whenever it sees XML data returned from the application to ensure that the XML returned by CLI commands through the API must be well-formed. This means that the contents of a CDATA string must not contain the character string &#8220;]]&gt;&#8221;, because that is the end sentinel for a CDATA section. So, if the original data contains this string, there must be some way to escape the data.<\/p>\n<p>For easy recognition of an escaped CDATA string, ExtraView prepend the characters %25S to the front of the string. These characters are merely a sentinel and are not part of the output string. The encoding used for the rest of the CDATA string is called Base64, and algorithms for encoding\/decoding are widely available. Furthermore, ExtraView ensures that the %25S sentinel string does not appear in the CDATA raw character string by encoding any CDATA raw character string to Base64 as well. It is the responsibility of the receiver, therefore, to test each CDATA section for the sentinel characters %25S at the beginning of the CDATA, and, if present, perform the Base64 decode function on the remainder of the character data to get the raw character values in the field.<\/p>\n<h3>Fixed Database Names vs. Display Titles<\/h3>\n<p>In order to provide flexibility, many of the CLI commands allow users to refer to fields by either their fixed database names, or by their display titles. Every field defined in the Data Dictionary has both a fixed database name, and a display title. The documentation for the individual CLI commands indicates which naming convention should be used.<\/p>\n<h3>The CLI and Image Display Type Fields<\/h3>\n<p>As the CLI is a character-based interface, fields with a display type of image are not supported. These fields are ignored in the CLI.<\/p>\n<h3>The CLI and Business Rules<\/h3>\n<p>When in the ExtraView web-based interface business rules are executed as part of loading screens, making AJAX calls and refreshing screens, as well as when updating the database. When you are working in the CLI, there is no concept of screens, so business rules that are triggered in the web interface for loading and refreshing screens cannot be executed. Rules that are applied pre- and post-update and the email rules are applied however.<\/p>\n<table class=\"tableWithBorder\">\n<tbody>\n<tr class=\"tableHeaderRow\">\n<td width=\"200\">Rule Directive<\/td>\n<td align=\"center\" width=\"200\">Through Web Interface<\/td>\n<td align=\"center\" width=\"200\">Through CLI<\/td>\n<\/tr>\n<tr>\n<td>Load<\/td>\n<td align=\"center\">Yes<\/td>\n<td align=\"center\">No<\/td>\n<\/tr>\n<tr>\n<td>Onchange \/ Refresh<\/td>\n<td align=\"center\">Yes<\/td>\n<td align=\"center\">No<\/td>\n<\/tr>\n<tr>\n<td>Preupdate<\/td>\n<td align=\"center\">Yes<\/td>\n<td align=\"center\">Yes<\/td>\n<\/tr>\n<tr>\n<td>Postupdate<\/td>\n<td align=\"center\">Yes<\/td>\n<td align=\"center\">Yes<\/td>\n<\/tr>\n<tr>\n<td>Email<\/td>\n<td align=\"center\">Yes<\/td>\n<td align=\"center\">Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Common CLI Options<\/h3>\n<p>Several command line options are common to almost every CLI command. For clarity, these options are not documented on the individual manual pages for the CLI commands.<\/p>\n<p class=\"fixedWidthFont\">-F alt-config-file<\/p>\n<p>This option allows the user to specify an alternate evconfig.txt file, for the current CLI command. The full pathname must be specified. When used, this option must be the first option on the command line.<\/p>\n<p class=\"fixedWidthFont\">-S servername<\/p>\n<p>Most of the CLI commands support the <span class=\"fixedWidthFont\">-s<\/span> option:<\/p>\n<p class=\"fixedWidthFont\">evcommand -s servername<\/p>\n<p>This option allows you to override the servername specified in the <span class=\"fixedWidthFont\">evconfig.txt<\/span> file. <span class=\"fixedWidthFont\">evupload<\/span> and <span class=\"fixedWidthFont\">evdownload<\/span> use a capitalized <span class=\"fixedWidthFont\">-S<\/span>: <span class=\"fixedWidthFont\">command -S servername<\/span> <span class=\"fixedWidthFont\">-H<\/span> or <span class=\"fixedWidthFont\">-?<\/span><\/p>\n<p>All commands support a <span class=\"fixedWidthFont\">-H<\/span> option (or <span class=\"fixedWidthFont\">-?<\/span>), which prints the documentation for that command.<\/p>\n<p><span class=\"fixedWidthFont\">-U<\/span> and <span class=\"fixedWidthFont\">-P<\/span> These command line options are used for specifying a username and password on the command line.<\/p>\n<p><span class=\"fixedWidthFont\">-A<\/span> If ExtraView has been configured to support anonymous logins, this option specifies that the CLI command should be run using the ANONYMOUS_API_USER_ID login. This functionality is enabled when the behavior setting ALLOW_ANONYMOUS_API_ACCESS has a value of YES.<\/p>\n<h3>CLI Templates<\/h3>\n<p>Templates are stored on the server, and can be used to format the output of CLI commands. The following commands support an optional <span class=\"fixedWidthFont\">-T templatefile<\/span> command line option:<\/p>\n<table class=\"tableWithBorder fixedWidthFont\">\n<tbody>\n<tr class=\"tableHeaderRow\" style=\"font-family: sans-serif;\">\n<td>CLI Command<\/td>\n<td>API statevar (if using a direct API call)<\/td>\n<\/tr>\n<tr>\n<td width=\"300\">evadd<\/td>\n<td width=\"300\">INSERT<\/td>\n<\/tr>\n<tr>\n<td>evadduser<\/td>\n<td>INSERT_USER<\/td>\n<\/tr>\n<tr>\n<td>evdelete<\/td>\n<td>DELETE<\/td>\n<\/tr>\n<tr>\n<td>evfiles<\/td>\n<td>LIST_ATTACHMENT<\/td>\n<\/tr>\n<tr>\n<td>evgetuser<\/td>\n<td>GET_USER<\/td>\n<\/tr>\n<tr>\n<td>evpasswd<\/td>\n<td>UPDATE_USER_PASSWORD<\/td>\n<\/tr>\n<tr>\n<td>evget<\/td>\n<td>GET<\/td>\n<\/tr>\n<tr>\n<td>evsearch<\/td>\n<td>SEARCH<\/td>\n<\/tr>\n<tr>\n<td>evupdate<\/td>\n<td>UPDATE<\/td>\n<\/tr>\n<tr>\n<td>evupload<\/td>\n<td>ADD_ATTACHMENT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The second column contains statevar parameters that can be used when requests are submitted to ExtraView\u2019s RESTful API through a URL. The URL must include a <span class=\"fixedWidthFont\">p_template_file<\/span> parameter with the name of the template file. <a href=\"v25\/manage-server-side-templates-1\/\">The API guide<\/a> has additional information on the use of templates.<\/p>\n<p>Example usage: <span class=\"fixedWidthFont\">evget -T get.html 12341<\/span><\/p>\n<p>This will cause ExtraView to look for a file named <span class=\"fixedWidthFont\">get.html<\/span> in the <span class=\"fixedWidthFont\">user_templates<\/span> directory on the server. This directory is at the same level as the <span class=\"fixedWidthFont\">&#8230;\/webapps\/evj\/WEB-INF\/templates<\/span> directory.<\/p>\n<p>Filling in the template <span class=\"fixedWidthFont\">get.html<\/span> and then displaying the result will complete the output of the evget command. This template will have tags marked like so: <span class=\"fixedWidthFont\">__NAME__<\/span><\/p>\n<p>These entries are data dictionary names within ExtraView, as returned by evfields or equivalently those names that were placed in <span class=\"fixedWidthFont\">get.txt<\/span> and <span class=\"fixedWidthFont\">search.txt<\/span> by the CLI command <span class=\"fixedWidthFont\">evfields -g<\/span>. Exceptions to this convention are fields with a display type of text area and log area.<\/p>\n<p>These fields are stored within ExtraView with additional information and are used as follows, where <span class=\"fixedWidthFont\">DDNAME<\/span> is replaced with the data dictionary name:<\/p>\n<table class=\"tableWithBorder table.border\">\n<tbody>\n<tr class=\"tableHeaderRow\">\n<td>Field name<\/td>\n<td>Requiredness<\/td>\n<td>Purpose<\/td>\n<\/tr>\n<tr>\n<td class=\"fixedWidthFont\" valign=\"top\" width=\"200\">__DDNAME__<\/td>\n<td valign=\"top\" width=\"170\">Mandatory<\/td>\n<td valign=\"top\">No data is returned with this field, but it is required in order that ExtraView can set up the retrieval of the remainder of the fields. If you are designing an HTML template, it is recommended that you include this within a comment, e.g. <span class=\"fixedWidthFont\">&lt;!&#8211; __DESCRIPTION__ &#8211;&gt;<\/span><\/td>\n<\/tr>\n<tr>\n<td class=\"fixedWidthFont\" valign=\"top\" width=\"200\">__DDNAME.TEXT__<\/td>\n<td valign=\"top\" width=\"170\">Optional<\/td>\n<td valign=\"top\">This field contains the actual text and is normally used in the template<\/td>\n<\/tr>\n<tr>\n<td class=\"fixedWidthFont\" valign=\"top\" width=\"200\">__DDNAME.USER__<\/td>\n<td valign=\"top\" width=\"170\">Optional<\/td>\n<td valign=\"top\">The user\u2019s name who created or last updated the text field<\/td>\n<\/tr>\n<tr>\n<td class=\"fixedWidthFont\" valign=\"top\" width=\"200\">__DDNAME.TIMESTAMP__<\/td>\n<td valign=\"top\" width=\"170\">Optional<\/td>\n<td valign=\"top\">The timestamp of the last update to the field<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>An HTML fragment that displays the field named DESCRIPTION may look like this:<\/p>\n<table class=\"tableWithBorder fixedWidthFont\" width=\"60%\">\n<tbody>\n<tr>\n<td>&lt;TABLE&gt;<br \/>\n&lt;TR&gt;<br \/>\n&lt;TD&gt;Description&lt;\/TD&gt; &lt;!&#8211; __DESCRIPTION__ &#8211;&gt;<br \/>\n&lt;TD&gt;__DESCRIPTION.TEXT__&lt;\/TD&gt;<br \/>\n&lt;\/TR&gt;<br \/>\n&lt;\/TABLE&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If the requested issue in the evget example command does not exist, we have this result:<\/p>\n<p><span class=\"fixedWidthFont\">ERR_RESULTS Problem #12341 does not exist.<\/span><\/p>\n<p>The command <span class=\"fixedWidthFont\">evsearch<\/span> is very similar. The difference is that <span class=\"fixedWidthFont\">evsearch<\/span> may use three template files; a header file (optional), a body file that is used in a repeating fashion for each record returned by the search, and a footer file (optional). For example:<\/p>\n<p><span class=\"fixedWidthFont\">evsearch -T search.html keywords=test q<\/span><\/p>\n<p>This will use the files <span class=\"fixedWidthFont\">hsearch.html<\/span>, <span class=\"fixedWidthFont\">bsearch.html<\/span> and <span class=\"fixedWidthFont\">fsearch.html<\/span> for the display. The <span class=\"fixedWidthFont\">hsearch.html<\/span> and <span class=\"fixedWidthFont\">fsearch.html<\/span> files are optional. If there is no file named <span class=\"fixedWidthFont\">bsearch.html<\/span>, ExtraView will search for a file named search.html for the display of each record. If this file is also not found an error is returned to the CLI user.<\/p>\n<p>The tag <span class=\"fixedWidthFont\">RECORD_COUNT<\/span> is available in the header and footer template files. This contains the total record count for the search. The following list describes all the supported template <span class=\"fixedWidthFont\">__NAME__<\/span> tags, organized by CLI command.<\/p>\n<ul>\n<li><span class=\"fixedWidthFont\">evadd<\/span>\n<ul>\n<li>The same fields for <span class=\"fixedWidthFont\">evget<\/span> &#8211; see above.<\/li>\n<li>ERR_RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;An error occurred while inserting an issue<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evupdate<\/span>\n<ul>\n<li>ID \u2013 the ID of the inserted record<\/li>\n<li>RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;Problem #12341 updated.&#8221;<\/span><\/li>\n<li>ERR_RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;An error occurred while updating the issue.&#8221;<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evdelete<\/span>\n<ul>\n<li>ID \u2013 the ID of the deleted record<\/li>\n<li>RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;Problem #12341 deleted.&#8221;<\/span><\/li>\n<li>ERR_RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;You do not have permission to delete.&#8221;<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evadduser<\/span>\n<ul>\n<li>RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;User xxx inserted.&#8221;<\/span><\/li>\n<li>ERR_RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;Error during adding of user: &lt;error message&gt;&#8221;<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evpasswd<\/span>\n<ul>\n<li>RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;Password changed for xxx.&#8221;<\/span><\/li>\n<li>ERR_RESULTS \u2013 <span class=\"fixedWidthFont\">&#8220;User xxx does not exist.&#8221;<\/span> or <span class=\"fixedWidthFont\">&#8220;Incorrect old password.&#8221;<\/span> or some other exception<\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evfiles<\/span>\n<ul>\n<li>ID \u2013 the ID of the record you requested<\/li>\n<li>NFILES \u2013 the number of attached files<\/li>\n<li>DATE_CREATED \u2013 repeating field<\/li>\n<li>FILE_NAME \u2013 repeating field<\/li>\n<li>FILE_SIZE \u2013 repeating field<\/li>\n<li>CREATED_BY_USER \u2013 repeating field<\/li>\n<li>ATTACHMENT_ID \u2013 repeating field<\/li>\n<li>FILE_DESC \u2013 repeating field<\/li>\n<li>Repeating fields are used within a <span class=\"fixedWidthFont\">__REPEAT_START__ &#8230; __REPEAT_STOP__<\/span> block like this:<br \/>\n<table class=\"tableWithBorder fixedWidthFont\" width=\"60%\">\n<tbody>\n<tr>\n<td>&lt;TABLE&gt;<br \/>\n&lt;TR&gt;<br \/>\n&lt;TD&gt;Date Created&lt;\/TD&gt;<br \/>\n&lt;TD&gt;File Name&lt;\/TD&gt;<br \/>\n&lt;TD&gt;File Size&lt;\/TD&gt;<br \/>\n&lt;TD&gt;Created by User&lt;\/TD&gt;<br \/>\n&lt;TD&gt;Attachment ID&lt;\/TD&gt;<br \/>\n&lt;TD&gt;File Description&lt;\/TD&gt;<br \/>\n&lt;\/TR&gt;<br \/>\n__REPEAT_START__<br \/>\n&lt;TR&gt;<br \/>\n&lt;TD&gt;__DATE_CREATED__&lt;\/TD&gt;<br \/>\n&lt;TD&gt;__FILE_NAME__&lt;\/TD&gt;<br \/>\n&lt;TD&gt;__FILE_SIZE__&lt;\/TD&gt;<br \/>\n&lt;TD&gt;__CREATED_BY_USER__&lt;\/TD&gt;<br \/>\n&lt;TD&gt;__ATTACHMENT_ID__&lt;\/TD&gt;<br \/>\n&lt;TD&gt;__FILE_DESC__&lt;\/TD&gt;<br \/>\n&lt;\/TR&gt;<br \/>\n__REPEAT_STOP__<br \/>\n&lt;\/TABLE&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li>ERR_RESULTS <span class=\"fixedWidthFont\">&#8220;Problem #12341 does not exist.&#8221;<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evupload<\/span>\n<ul>\n<li>This uploads the file and then displays the record itself with the template file (see evget). It then prepends an &#8216;<span class=\"fixedWidthFont\">f<\/span>&#8216; to the template filename and displays all the attached files (including the one just attached) (see evfiles).Either of these can be an empty file but they both must exist. The URL statevar of <span class=\"fixedWidthFont\">ADD_ATTACHMENT<\/span> requires some special care. Here is some sample HTML:<br \/>\n<table class=\"tableWithBorder fixedWidthFont\">\n<tbody>\n<tr>\n<td>&lt;FORM METHOD=post action=&#8221;http:\/\/test.extraview.net\/evj\/ExtraView\/ev_api.action?p_user_id=mary&amp;p_password=smith&amp; statevar=add_attachment&amp;id=15948&amp;p_template_file=get.html&#8221; enctype=&#8221;multipart\/form-data&#8221;&gt;<br \/>\nFile: &lt;input type=&#8221;file&#8221; size=&#8221;40&#8243; name=&#8221;file&#8221;&gt;<br \/>\n&lt;BR \/&gt;<br \/>\nDescription: &lt;input type=&#8221;text&#8221; size=&#8221;40&#8243; name=&#8221;p_attach_desc&#8221;&gt;<br \/>\n&lt;BR \/&gt;<br \/>\n&lt;INPUT type=&#8221;hidden&#8221; name=&#8221;p_problem_id&#8221; value=&#8221;15948&#8243;&gt;<br \/>\n&lt;INPUT type=&#8221;hidden&#8221; name=&#8221;p_called_from&#8221; value=&#8221;pr_edit_problem&#8221;&gt;<br \/>\n&lt;INPUT type=&#8221;hidden&#8221; name=&#8221;p_user_id&#8221; value=&#8221;system&#8221;&gt;<br \/>\n&lt;input type=&#8221;Submit&#8221;&gt;<br \/>\n&lt;\/FORM&gt;<br \/>\n&lt;\/BODY&gt;<br \/>\n&lt;\/HTML&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<\/li>\n<li><span class=\"fixedWidthFont\">evgetuser<\/span>\n<ul>\n<li>There is actually no such API command&#8230; This is for internal purposes \u2013- you pass the command <span class=\"fixedWidthFont\">get_user<\/span> with an email address. You are returned the user ID and the company name with that email address.\n<ul>\n<li>ID \u2013 the user ID<\/li>\n<li>COMPANY_NAME \u2013 the company name<\/li>\n<li>ERR_RESULTS \u2013 &#8220;missing email parameter&#8221;<\/li>\n<\/ul>\n<p>For all the above commands the name <span class=\"fixedWidthFont\">ERR_RESULTS<\/span> is not displayed using the specified template file. ExtraView will use the template file <span class=\"fixedWidthFont\">error.html<\/span> if it exists or, if it does not, simply displays the string on the output. This obviates the need for normal display templates to deal with error conditions.<\/p>\n<p>The URL statevar of <span class=\"fixedWidthFont\">FILL_IN<\/span> takes a <span class=\"fixedWidthFont\">p_template_file<\/span> parameter and fills in the template with the other parameters passed. For example:<\/p>\n<p><span class=\"fixedWidthFont\">http:\/\/www.extraview.net\/evj\/ExtraView\/ev_api.action?user_id=myname&amp;password=secret&amp;statevar=fill_in&amp;p_template_file=files.html &amp;ID=1234&amp;NAME=Harriette<\/span><\/p>\n<p>Where <span class=\"fixedWidthFont\">files.html<\/span> contains the tags <span class=\"fixedWidthFont\">__ID__<\/span> and <span class=\"fixedWidthFont\">__NAME__<\/span>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The Command Line Interface is a set of Perl scripts implemented using ExtraView\u2019s API. These commands provide an alternative to the Browser GUI, for accessing many of ExtraView\u2019s features. Many of the CLI commands can be executed either interactively, where the CLI command prompts for parameters or it can be executed with a single command&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":24277,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_lmt_disableupdate":"no","_lmt_disable":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-24279","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Concepts - Product Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Concepts - Product Documentation\" \/>\n<meta property=\"og:description\" content=\"The Command Line Interface is a set of Perl scripts implemented using ExtraView\u2019s API. These commands provide an alternative to the Browser GUI, for accessing many of ExtraView\u2019s features. Many of the CLI commands can be executed either interactively, where the CLI command prompts for parameters or it can be executed with a single command...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Product Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-06T00:49:52+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/\",\"url\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/\",\"name\":\"Concepts - Product Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\"},\"datePublished\":\"2024-02-15T22:53:34+00:00\",\"dateModified\":\"2025-03-06T00:49:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ExtraView 25\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Command Line Interface\",\"item\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Concepts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"name\":\"ExtraView Product Documentation\",\"description\":\"ExtraView Documentation\",\"publisher\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\",\"name\":\"ExtraView Corporation\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"contentUrl\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"width\":512,\"height\":512,\"caption\":\"ExtraView Corporation\"},\"image\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Concepts - Product Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/","og_locale":"en_US","og_type":"article","og_title":"Concepts - Product Documentation","og_description":"The Command Line Interface is a set of Perl scripts implemented using ExtraView\u2019s API. These commands provide an alternative to the Browser GUI, for accessing many of ExtraView\u2019s features. Many of the CLI commands can be executed either interactively, where the CLI command prompts for parameters or it can be executed with a single command...","og_url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/","og_site_name":"Product Documentation","article_modified_time":"2025-03-06T00:49:52+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/","url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/","name":"Concepts - Product Documentation","isPartOf":{"@id":"https:\/\/docs.extraview.com\/v25\/#website"},"datePublished":"2024-02-15T22:53:34+00:00","dateModified":"2025-03-06T00:49:52+00:00","breadcrumb":{"@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/concepts-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":2,"name":"ExtraView 25","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":3,"name":"Command Line Interface","item":"https:\/\/docs.extraview.com\/v25\/extraview-25\/command-line-interface-1\/"},{"@type":"ListItem","position":4,"name":"Concepts"}]},{"@type":"WebSite","@id":"https:\/\/docs.extraview.com\/v25\/#website","url":"https:\/\/docs.extraview.com\/v25\/","name":"ExtraView Product Documentation","description":"ExtraView Documentation","publisher":{"@id":"https:\/\/docs.extraview.com\/v25\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/docs.extraview.com\/v25\/#organization","name":"ExtraView Corporation","url":"https:\/\/docs.extraview.com\/v25\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/","url":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","contentUrl":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","width":512,"height":512,"caption":"ExtraView Corporation"},"image":{"@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/"}}]}},"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"carl.koppel","author_link":"https:\/\/docs.extraview.com\/v25\/author\/carl-koppel\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/comments?post=24279"}],"version-history":[{"count":0,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24279\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24277"}],"wp:attachment":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/media?parent=24279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}