<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$Controller->getAppShortName()} :: {$service->_id}</title>
{if $wsCssUri}
<link rel="stylesheet" type="text/css" href="{$wsCssUri}" />
{else}
<style type="text/css">
{php}include(SRA_DIR . '/www/tpl/model/sra-ws-api.css');{/php}
</style>
{/if}
</head>
<body id="wsDetail">
<form>
{if $service->isPublic()}
<h1>{$Controller->getAppShortName()} :: {$service->_id}</h1>
{if $service->_api || ($api && $api.comment)}<p id="wsApi">{if $service->_api}{$appResources->getString($service->_api)}{/if}{if $api && $api.comment}{if $service->_api}<br /><br />{/if}{$api.comment}{/if}</p>
{/if}
{if !$service->_global && ($service->_retrieve || $service->_create || $service->_update)}
<h2 id="entityDesc">{$entity->getEntityType()}</h2>
<p id="wsEntity">
{$apiResources->getString('service.entityDesc')}
{assign var=started value=0}
{if $service->_retrieve}<a href="#retrieve">{$apiResources->getString('text.retrieve')}</a>{if $service->_create || $service->_update || $service->_delete}{if !$service->_update && !$service->_delete} {$apiResources->getString('text.or')} {else}, {/if}{/if}{/if}
{if $service->_create}<a href="#create">{$apiResources->getString('text.create')}</a>{if $service->_update || $service->_delete}{if !$service->_delete} {$apiResources->getString('text.or')} {else}, {/if}{/if}{/if}
{if $service->_update}<a href="#update">{$apiResources->getString('text.update')}</a>{if $service->_delete} {$apiResources->getString('text.or')} {/if}{/if}
{if $service->_delete}<a href="#delete">{$apiResources->getString('text.delete')}</a>{/if}
{$apiResources->getString('service.entityDesc1')}
<span class="wsEntityName">{$entity->getEntityType()}</span>
{$apiResources->getString('service.entityDesc2')}
<table>
<tr>
<th id="wsAttrName">{$apiResources->getString('service.attribute')}</th>
<th id="wsAttrReadOnly">{$apiResources->getString('service.attributeReadOnly')}</th>
<th id="wsAttrSetOnly">{$apiResources->getString('service.attributeSetOnly')}</th>
<th id="wsAttrDataType">{$apiResources->getString('service.attributeDataType')}</th>
{if $service->_create}
<th id="wsAttrRequired">{$apiResources->getString('text.required')}</th>
{/if}
<th id="wsAttrDesc">{$apiResources->getString('service.attributeDesc')}</th>
</tr>
{foreach from=$entity->getWsAttributes() item=attr}
{if $Util->includeAttributeInOutput($attr, $service->_includeAttrs, $service->_excludeAttrs)}
<tr>
<td class="wsAttrName">{$attr}{if $entity->getPrimaryKeyAttribute() eq $attr}<sup>1</sup>{assign var=pkFound value=1}{/if}</td>
<td class="wsAttrReadOnly">{if $entity->isAttributeReadOnly($attr)}{$resources->getString('text.yes')}{else}{$resources->getString('text.no')}{/if}</td>
<td class="wsAttrSetOnly">{if $entity->isAttributeSetOnly($attr)}{$resources->getString('text.yes')}{else}{$resources->getString('text.no')}{/if}</td>
<td class="wsAttrDataType">{if $entity->attributeIsEntity($attr)}<a href="{$Template->strReplace('[entity]', $entity->getAttributeType($attr), $entityUri)}">{/if}{if $entity->getAttributeType($attr)}{$entity->getAttributeType($attr)}{if $entity->attributeIsEntity($attr)}</a>{/if}{if $entity->getAttributeCardinality($attr)}[{$entity->getAttributeCardinality($attr)}]{/if}{else}{$smarty.const.SRA_DATA_TYPE_STRING}{/if}</td>
{if $service->_create}
<td id="wsAttrRequired">{if $entity->isAttributeReadOnly($attr)}{$apiResources->getString('text.na')}{elseif $entity->isAttributeRequired($attr, 1)}{$resources->getString('text.yes')}{else}{$resources->getString('text.no')}{/if}</td>
{/if}
<td class="wsAttrDesc">{if $entity->getHelpContent($attr)}{$entity->getHelpContent($attr)}{else}{$entity->getEntityLabel($attr)}{/if}{if $entity->isAttributeSetOnly($attr)}. {$apiResources->getString('service.attribute.notIncluded')}{/if}</td>
</tr>
{if $entity->getAttributeCardinality($attr) && !$entity->isAttributeReadOnly($attr) && $service->_update}
<tr>
<td class="wsAttrName">{$attr}_remove</td>
<td class="wsAttrReadOnly">{$apiResources->getString('text.na')}</td>
<td class="wsAttrSetOnly">{$apiResources->getString('text.na')}</td>
<td class="wsAttrDataType">{if $entity->attributeIsEntity($attr)}<a href="{$Template->strReplace('[entity]', $entity->getAttributeType($attr), $entityUri)}">{/if}{if $entity->getAttributeType($attr)}{$entity->getAttributeType($attr)}{if $entity->attributeIsEntity($attr)}</a>{/if}{else}{$smarty.const.SRA_DATA_TYPE_STRING}{/if}</td>
{if $service->_create}
<td id="wsAttrRequired">{$resources->getString('text.no')}</td>
{/if}
<td class="wsAttrDesc">{$apiResources->getString('service.attribute.remove')} "{$attr}" {$apiResources->getString('service.attribute.remove1')} {$apiResources->getString('service.attribute.notIncluded')}</td>
</tr>
{/if}
{/if}
{/foreach}
</table>
{if $pkFound}
<sup>1</sup> {$apiResources->getString('service.primaryKey')}
{/if}
</p>
{/if}
<h2 id="input">{$apiResources->getString('service.input')}</h2>
<p id="wsInput">
<p id="inputDesc">
{if $service->_rest && $service->_soap}{$apiResources->getString('service.inputDesc')}{elseif $service->_rest}{$apiResources->getString('service.inputDescRest')}{else}{$apiResources->getString('service.inputDescSoap')}{/if}
<span class="wsUri">{$wsUri}</span>
{if $service->_rest}<p>{$apiResources->getString('service.inputDesc1Rest')}</p>
{/if}
{if $service->_soap}<p>{$apiResources->getString('service.inputDesc1Soap')} <a href="{$service->getWsdlUri()}">{$apiResources->getString('text.wsdl')}</a></p>
{/if}
<p>{$apiResources->getString('service.inputDesc1')}</p>
<table>
<tr>
{if $service->_rest}<th id="wsParam">{$apiResources->getString('service.param')}</th>
<th id="wsParamXml">{$apiResources->getString('service.paramXml')}</th>
{/if}
{if $service->_soap}<th id="wsParamSoap">{$apiResources->getString('service.paramWsdl')}</th>
{/if}
<th id="wsParamDataType">{$apiResources->getString('service.dataType')}</th>
<th id="wsParamRequired">{$apiResources->getString('text.required')}</th>
<th id="wsParamDesc">{$apiResources->getString('service.paramDesc')}</th>
</tr>
{if $service->_rest}
<tr>
{if $service->_rest}<td class="wsParam">&ws={$service->_id}</td>
<td class="wsParamXml"><ws-request<br /> key="{$service->_id}"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamRequired">{$resources->getString('text.yes')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.ws')}: <span class="serviceName">{$service->_id}</span>{if $rewrite && $service->_rest}. {$apiResources->getString('service.param.ws.rewrite')} {$wsUri}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}{/if}</td>
</tr>
{if ($service->_global && (!$api || $api.params.params)) || (!$service->_global && ($service->_create || $service->_update))}
<tr>
{if $service->_rest}<td class="wsParam">ws-paramN=?<br />{$apiResources->getString('service.param.params.getpost')}=?</td>
<td class="wsParamXml"><ws-request...>{if $service->_global}<br /> <ws-param name="?"{else}{if $service->_create}<br /> <ws-create><br /> <ws-param name="?"{/if}{if $service->_update}<br /> <ws-update><br /> <ws-param name="?"{/if}{/if}</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...>{if $service->_global}<br /> <param name="?"{else}{if $service->_create}<br /> <create><br /> <param name="?"{/if}{if $service->_update}<br /> <update><br /> <param name="?"{/if}{/if}</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.yes')}</td>
<td class="wsParamDesc">{if $service->_global}{if $api.params.params.comment}{$api.params.params.comment}{else}{$apiResources->getString('service.param.paramsGlobal')}{/if}{else}{$apiResources->getString('service.param.params')}{/if} {$apiResources->getString('service.param.params1')}{if $service->_rest} {$apiResources->getString('service.param.params2')}{/if}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-paramN-value=?</td>
<td class="wsParamXml"><ws-request...>{if $service->_global}<br /> <ws-param value="?"{else}{if $service->_create}<br /> <ws-create><br /> <ws-param value="?"{/if}{if $service->_update}<br /> <ws-update><br /> <ws-param value="?"{/if}{/if}</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...>{if $service->_global}<br /> <param value="?"{else}{if $service->_create}<br /> <create><br /> <param value="?"{/if}{if $service->_update}<br /> <update><br /> <param value="?"{/if}{/if}</td>
{/if}
<td class="wsParamDataType">{$apiResources->getString('text.mixed')}</td>
<td class="wsParamOptional">{$resources->getString('text.yes')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.paramsValue')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-paramN-value-type=?<br />{$apiResources->getString('service.param.paramsValueType.getpost')}=?</td>
<td class="wsParamXml"><ws-request...>{if $service->_global}<br /> <ws-param value-type="?"{else}{if $service->_create}<br /> <ws-create><br /> <ws-param value-type="?"{/if}{if $service->_update}<br /> <ws-update><br /> <ws-param value-type="?"{/if}{/if}</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...>{if $service->_global}<br /> <param valueType="?"{else}{if $service->_create}<br /> <create><br /> <param valueType="?"{/if}{if $service->_update}<br /> <update><br /> <param valueType="?"{/if}{/if}</td>
{/if}
<td class="wsParamDataType">({$smarty.const.SRA_WS_VALUE_TYPE_CONSTANT}|{$smarty.const.SRA_WS_VALUE_TYPE_GET}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_GLOBAL}|{$smarty.const.SRA_WS_VALUE_TYPE_POST}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_SESSION}|{$smarty.const.SRA_WS_VALUE_TYPE_FILE})</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.paramsValueType')}</td>
</tr>
{/if}
{if !$skipAppId}
<tr>
{if $service->_rest}<td class="wsParam">&ws-app={$Controller->getCurrentAppId()}</td>
<td class="wsParamXml"><ws-request<br /> app="{$Controller->getCurrentAppId()}"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamRequired">{$resources->getString('text.yes')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.app')}: <span class="wsAppName">{$Controller->getCurrentAppId()}</span>{if $rewrite && $service->_rest}. {$apiResources->getString('service.param.ws-app.rewrite')}: {$wsUri}/{$Controller->getCurrentAppId()}{/if}</td>
</tr>
{/if}
<tr>
{if $service->_rest}<td class="wsParam">&ws-asynchronous=?</td>
<td class="wsParamXml"><ws-request<br /> asynchronous="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">(0|1)/0</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.asynchronous')}</td>
</tr>
{/if}
<tr>
{if $service->_rest}<td class="wsParam">&ws-doc=?</td>
<td class="wsParamXml">{$apiResources->getString('text.na')}</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">({$smarty.const.SRA_WS_GATEWAY_DOC_TYPE_API}|{$smarty.const.SRA_WS_GATEWAY_DOC_TYPE_WSDL})</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.doc')}{if $rewrite}. {$apiResources->getString('service.param.ws.rewrite')} {$wsUri}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/({$smarty.const.SRA_WS_GATEWAY_DOC_TYPE_API}|{$smarty.const.SRA_WS_GATEWAY_DOC_TYPE_WSDL}){/if}</td>
</tr>
{if !$service->_global && $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">&ws-exclude=?</td>
<td class="wsParamXml"><ws-request<br /> exclude-attrs="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> excludeAttrs="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.excludeAttrs')}</td>
</tr>
{/if}
<tr>
{if $service->_rest}<td class="wsParam">&ws-format=?</td>
<td class="wsParamXml"><ws-request<br /> format="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> format="?"</td>
{/if}
<td class="wsParamDataType">{if $service->_formatFixed}{$service->_format}{else}({$smarty.const.SRA_WS_FORMAT_JSON}|{$smarty.const.SRA_WS_FORMAT_XML}{if $response->_global}|{$smarty.const.SRA_WS_FORMAT_RAW}{/if}){/if}{if $service->_format}/{$service->_format}{/if}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.format')}{if $rewrite && $service->_rest}. {$apiResources->getString('service.param.ws.rewrite')} {$wsUri}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/({$smarty.const.SRA_WS_FORMAT_JSON}|{$smarty.const.SRA_WS_FORMAT_XML}{if $response->_global}|{$smarty.const.SRA_WS_FORMAT_RAW}{/if}){/if}</td>
</tr>
{if !$service->_global && $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">&ws-include=?</td>
<td class="wsParamXml"><ws-request<br /> include-attrs="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> includeAttrs="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.includeAttrs')}</td>
</tr>
{/if}
<tr>
{if $service->_rest}<td class="wsParam">&ws-js-dates=?</td>
<td class="wsParamXml"><ws-request<br /> js-dates="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> jsDates="?"</td>
{/if}
<td class="wsParamDataType">(0|1)/1</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.jsDates')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-date-format=?</td>
<td class="wsParamXml"><ws-request<br /> date-format="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> dateFormat="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}/"{$Controller->getAppDateOnlyFormat()}"</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.dateFormat')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-time-format=?</td>
<td class="wsParamXml"><ws-request<br /> time-format="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> timeFormat="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}/"{$Controller->getAppDateFormat()}"</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.timeFormat')}</td>
</tr>
{if $usesLimit || $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">&ws-limit=?</td>
<td class="wsParamXml"><ws-request<br /> limit="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> limit="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_INT}{if $service->_limit}/{$service->_limit}{/if}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{if $service->_retrieve || !$api.params.limit.comment}{$apiResources->getString('service.param.limit')}{else}{$api.params.limit.comment}{/if}{if $service->_limitFixed}{$apiResources->getString('service.param.limitFixed')} {$service->_limit}{else}{if $service->_limit} {$apiResources->getString('service.param.limit1')} {$service->_limit}{/if}{/if}</td>
</tr>
{/if}
{if $service->_rest}
<tr>
{if $service->_rest}<td class="wsParam">&ws-meta-format=?</td>
<td class="wsParamXml"><ws-request<br /> meta-format="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">{if $service->_metaFormatFixed}{$service->_metaFormat}{else}({$smarty.const.SRA_WS_META_FORMAT_JSON}|{$smarty.const.SRA_WS_META_FORMAT_XML}|{$smarty.const.SRA_WS_META_FORMAT_NONE}){if $service->_metaFormat}/{$service->_metaFormat}{/if}{/if}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.metaFormat')}</td>
</tr>
{/if}
{if $usesOffset || $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">&ws-offset=?</td>
<td class="wsParamXml"><ws-request<br /> offset="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> offset="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_INT}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{if $service->_retrieve || !$api.params.offset.comment}{$apiResources->getString('service.param.offset')}{else}{$api.params.offset.comment}{/if}</td>
</tr>
{/if}
<tr>
{if $service->_rest}<td class="wsParam">&ws-query=?/td>
<td class="wsParamXml"><ws-request<br /> query="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">(0|1)/0</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.query')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-request-id=?</td>
<td class="wsParamXml"><ws-request<br /> request-id="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> requestId="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.requestId')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-request-id1=?</td>
<td class="wsParamXml"><ws-request<br /> request-id1="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> requestId1="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.requestId1')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-session-id=?</td>
<td class="wsParamXml"><ws-request<br /> session-id="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> sessionId="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.sessionId')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-use-sessions=?</td>
<td class="wsParamXml"><ws-request<br /> use-sessions="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> useSessions="?"</td>
{/if}
<td class="wsParamDataType">(0|1)/0</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.useSessions')}</td>
</tr>
{if !$service->_global && ($service->_create || $service->_update) && $entity->hasNonMandatoryValidator()}
<tr>
{if $service->_rest}<td class="wsParam">&ws-validators=?</td>
<td class="wsParamXml"><ws-request<br /> validators="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> validators="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">
{$apiResources->getString('service.param.validators')}
<ul>
{foreach from=$entity->getEntityValidators() item=validator}{if !$entity->isValidatorMandatory($validator)}
<li>{$validator}</li>
{/if}{/foreach}
</ul>
</td>
</tr>
{/if}
{if !$service->_global && ($service->_create || $service->_delete || $service->_update)}
<tr>
{if $service->_rest}<td class="wsParam">&ws-action=?</td>
<td class="wsParamXml"><ws-request...><br /> ({if $service->_create}<ws-create>{/if}|{if $service->_update}{if $service->_create}<br /> {/if}<ws-update>{/if}{if $service->_delete}{if $service->_create || $service->_update}|<br /> {/if}<ws-delete>{/if})</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> ({if $service->_create}<create>{/if}{if $service->_update}{if $service->_create}|<br /> {/if}<update>{/if}{if $service->_delete}{if $service->_create || $service->_update}|<br /> {/if}<delete>{/if})</td>
{/if}
<td class="wsParamDataType">({if $service->_retrieve}{$smarty.const.SRA_WS_REQUEST_RETRIEVE}{/if}{if $service->_create}{if $service->_retrieve}|<br /> {/if}{$smarty.const.SRA_WS_REQUEST_CREATE}{/if}{if $service->_update}{if $service->_retrieve || $service->_create}|<br /> {/if}{$smarty.const.SRA_WS_REQUEST_UPDATE}{/if}{if $service->_delete}{if $service->_retrieve || $service->_create || $service->_update}|<br /> {/if}{$smarty.const.SRA_WS_REQUEST_DELETE}{/if})</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.action')}{if $rewrite && $service->_rest}. {$apiResources->getString('service.param.ws.rewrite')} {$wsUri}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/(create|update|delete){/if}</td>
</tr>
{/if}
{if !$service->_global && $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">&ws-id=?</td>
<td class="wsParamXml"><ws-request...><br /> (<ws-retrieve key="?"|{if $service->_update}<br /> <ws-update key="?"{/if}{if $service->_delete}|<br /> <ws-delete key="?"{/if})</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> (<retrieve key="?"|{if $service->_update}<br /> <update key="?"{/if}{if $service->_delete}|<br /> <delete key="?"{/if})</td>
{/if}
<td class="wsParamDataType">{$apiResources->getString('text.mixed')}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.retrieve')} <span class="wsPrimaryKeyName">{$entity->getPrimaryKeyAttribute()}</span> {$apiResources->getString('service.param.retrieve1')}</td>
</tr>
{/if}
{if $service->_rest}
<tr>
<td class="wsParam">ws-request-xml=?</td>
<td class="wsParamXml">{$apiResources->getString('text.na')}</td>
{if $service->_soap}<td class="wsParamSoap">{$apiResources->getString('text.na')}</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.xml')}</td>
</tr>
{/if}
{if $service->_retrieve && $Controller->getAppWorkflows()}
<tr>
{if $service->_rest}<td class="wsParam">&ws-wf-id=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-retrieve workflow-id="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <retrieve workflow-id="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_INT}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.workflowId')}</td>
</tr>
{/if}
{if $service->_retrieve}
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-*</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group></td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup></td>
{/if}
<td class="wsParamDataType">{$apiResources->getString('text.na')}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraintGroup')}{if $service->_rest}{$apiResources->getString('service.param.constraintGroupRest')}{/if}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-connective=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group<br /> connective="?"></td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup<br /> connective="?"></td>
{/if}
<td class="wsParamDataType">({$smarty.const.SRA_WS_CONSTRAINT_GROUP_CONNECTIVE_CONJUNCTIVE}|{$smarty.const.SRA_WS_CONSTRAINT_GROUP_CONNECTIVE_DISJUNCTIVE})/{$smarty.const.SRA_WS_CONSTRAINT_GROUP_CONNECTIVE_CONJUNCTIVE}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.connective')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-attrN=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group><br /> <ws-constraint attr="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup><br /> <constraint attr="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.yes')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraint.attr')}{if $service->_rest}{$apiResources->getString('service.param.constraint.attrRest')}{/if}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-valueN=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group><br /> <ws-constraint value="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup><br /> <constraint value="?"</td>
{/if}
<td class="wsParamDataType">{$apiResources->getString('text.mixed')}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraint.value')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-operatorN=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group><br /> <ws-constraint operator="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup><br /> <constraint operator="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_INT}/1</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraint.operator')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-typeN=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group><br /> <ws-constraint attr-type="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup><br /> <constraint attrType="?"</td>
{/if}
<td class="wsParamDataType">({$smarty.const.SRA_WS_VALUE_TYPE_ATTR}|{$smarty.const.SRA_WS_VALUE_TYPE_CONSTANT}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_GET}|{$smarty.const.SRA_WS_VALUE_TYPE_GET_ATTR}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_GLOBAL}|{$smarty.const.SRA_WS_VALUE_TYPE_POST}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_SESSION})/{$smarty.const.SRA_WS_VALUE_TYPE_ATTR}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraint.attrType')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">ws-constraintM-value-typeN=?</td>
<td class="wsParamXml"><ws-request...><br /> <ws-constraint-group><br /> <ws-constraint value-type="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request...><br /> <constraintGroup><br /> <constraint valueType="?"</td>
{/if}
<td class="wsParamDataType">({$smarty.const.SRA_WS_VALUE_TYPE_CONSTANT}|{$smarty.const.SRA_WS_VALUE_TYPE_GET}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_GLOBAL}|{$smarty.const.SRA_WS_VALUE_TYPE_POST}|<br /> {$smarty.const.SRA_WS_VALUE_TYPE_SESSION})</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.constraint.valueType')}</td>
</tr>
{/if}
{if $service->_authenticate && $authenticated}
<tr>
{if $service->_rest}<td class="wsParam">&ws-user=?</td>
<td class="wsParamXml"><ws-request<br /> user="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> user="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.user')}</td>
</tr>
<tr>
{if $service->_rest}<td class="wsParam">&ws-password=[{$smarty.const.SRA_DATA_TYPE_STRING}]</td>
<td class="wsParamXml"><ws-request<br /> password="?"</td>
{/if}
{if $service->_soap}<td class="wsParamSoap"><request<br /> password="?"</td>
{/if}
<td class="wsParamDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsParamOptional">{$resources->getString('text.no')}</td>
<td class="wsParamDesc">{$apiResources->getString('service.param.password')}</td>
</tr>
{/if}
</table>
</p>
{if $service->_global}
<p id="wsInputGlobal">
{$apiResources->getString('service.input.examples')}
<p>
{if $service->_rest}
<input type="button" onclick="document.getElementById('wsInputGlobalVars').style.display='block'; document.getElementById('wsInputGlobalXml').style.display='none'; document.getElementById('wsInputGlobalSoap').style.display='none';" value="{$apiResources->getString('text.getpost')}" />
<input type="button" onclick="document.getElementById('wsInputGlobalVars').style.display='none'; document.getElementById('wsInputGlobalXml').style.display='block'; document.getElementById('wsInputGlobalSoap').style.display='none';" value="{$apiResources->getString('text.xml')}" />
{/if}
{if $service->_soap}
<input type="button" onclick="document.getElementById('wsInputGlobalVars').style.display='none'; document.getElementById('wsInputGlobalXml').style.display='none'; document.getElementById('wsInputGlobalSoap').style.display='block';" value="{$apiResources->getString('text.soap')}" />
{/if}
</p>
{if $service->_rest}
<p class="wsExample" id="wsInputGlobalVars">
{$apiResources->getString('service.input.inputGlobal1')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}?{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&{/if}ws-param1=param1&ws-param1-value=val1
</p>
<p class="wsExample" id="wsInputGlobalXml" style="display: none">
{$apiResources->getString('service.input.inputGlobal1')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-param name="param1" value="val1" /><br />
</ws-request>
</p>
{/if}
{if $service->_soap}
<p class="wsExample" id="wsInputGlobalSoap" style="display: none">
{$apiResources->getString('service.input.inputGlobal1')}:<br />
<request><br />
<param name="param1" value="val1" /><br />
</request>
</p>
{/if}
</p>
{else}
{if $service->_retrieve}
<h3 id="retrieve">{$apiResources->getString('service.input.retrieve')}</h3>
<p id="wsInputRetrieve">
{$apiResources->getString('service.input.examples')}
<p>
{if $service->_rest}
<input type="button" onclick="document.getElementById('wsInputRetrieveVars').style.display='block'; document.getElementById('wsInputRetrieveXml').style.display='none'; document.getElementById('wsInputRetrieveSoap').style.display='none';" value="{$apiResources->getString('text.getpost')}" />
<input type="button" onclick="document.getElementById('wsInputRetrieveVars').style.display='none'; document.getElementById('wsInputRetrieveXml').style.display='block'; document.getElementById('wsInputRetrieveSoap').style.display='none';" value="{$apiResources->getString('text.xml')}" />
{/if}
{if $service->_soap}
<input type="button" onclick="document.getElementById('wsInputRetrieveVars').style.display='none'; document.getElementById('wsInputRetrieveXml').style.display='none'; document.getElementById('wsInputRetrieveSoap').style.display='block';" value="{$apiResources->getString('text.soap')}" />
{/if}
</p>
{if $service->_rest}
<p class="wsExample" id="wsInputRetrieveVars">
{$apiResources->getString('service.input.inputRetrieve1')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_RETRIEVE}{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_RETRIEVE}{/if}<br /><br />
{$apiResources->getString('service.input.inputRetrieve2')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_RETRIEVE}/123{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_RETRIEVE}&ws-id=123{/if}<br /><br />
{$apiResources->getString('service.input.inputRetrieve3')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_RETRIEVE}?{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_RETRIEVE}&{/if}ws-constraint1-attr1=attr1&ws-constraint1-value1=val1
</p>
<p class="wsExample" id="wsInputRetrieveXml" style="display: none">
{$apiResources->getString('service.input.inputRetrieve1')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if} /><br /><br />
{$apiResources->getString('service.input.inputRetrieve2')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-retrieve key="123" /><br />
</ws-request><br /><br />
{$apiResources->getString('service.input.inputRetrieve3')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-constraint-group><br />
<ws-constraint attr="attr1" value="val1" /><br />
</ws-constraint-group><br />
</ws-request>
</p>
{/if}
{if $service->_soap}
<p class="wsExample" id="wsInputRetrieveSoap" style="display: none">
{$apiResources->getString('service.input.inputRetrieve1')}:<br />
<request /><br /><br />
{$apiResources->getString('service.input.inputRetrieve2')}:<br />
<request><br />
<retrieve key="123" /><br />
</request><br /><br />
{$apiResources->getString('service.input.inputRetrieve3')}:<br />
<request><br />
<constraintGroup><br />
<constraint attr="attr1" value="val1" /><br />
</constraintGroup><br />
</request>
</p>
{/if}
</p>
{/if}
{if $service->_create}
<h3 id="create">{$apiResources->getString('service.input.create')}</h3>
<p id="wsInputCreate">
{$apiResources->getString('service.input.examples')}
<p>
{if $service->_rest}
<input type="button" onclick="document.getElementById('wsInputCreateVars').style.display='block'; document.getElementById('wsInputCreateXml').style.display='none'; document.getElementById('wsInputCreateSoap').style.display='none';" value="{$apiResources->getString('text.getpost')}" />
<input type="button" onclick="document.getElementById('wsInputCreateVars').style.display='none'; document.getElementById('wsInputCreateXml').style.display='block'; document.getElementById('wsInputCreateSoap').style.display='none';" value="{$apiResources->getString('text.xml')}" />
{/if}
{if $service->_soap}
<input type="button" onclick="document.getElementById('wsInputCreateVars').style.display='none'; document.getElementById('wsInputCreateXml').style.display='none'; document.getElementById('wsInputCreateSoap').style.display='block';" value="{$apiResources->getString('text.soap')}" />
{/if}
</p>
{if $service->_rest}
<p class="wsExample" id="wsInputCreateVars">
{$apiResources->getString('service.input.inputCreate1')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_CREATE}?{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_CREATE}&{/if}ws-param1=attr1&ws-param1-value=val1&ws-param2=attr2&ws-param2-value=val2
</p>
<p class="wsExample" id="wsInputCreateXml" style="display: none">
{$apiResources->getString('service.input.inputCreate1')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-create><br />
<ws-param name="attr1" value="val1" /><br />
<ws-param name="attr2" value="val2" /><br />
</ws-create><br />
</ws-request>
</p>
{/if}
{if $service->_soap}
<p class="wsExample" id="wsInputCreateSoap" style="display: none">
{$apiResources->getString('service.input.inputCreate1')}:<br />
<request><br />
<create><br />
<param name="attr1" value="val1" /><br />
<param name="attr2" value="val2" /><br />
</create><br />
</request>
</p>
{/if}
</p>
{/if}
{if $service->_update}
<h3 id="update">{$apiResources->getString('service.input.update')}</h3>
<p id="wsInputUpdate">
{$apiResources->getString('service.input.examples')}
<p>
{if $service->_rest}
<input type="button" onclick="document.getElementById('wsInputUpdateVars').style.display='block'; document.getElementById('wsInputUpdateXml').style.display='none'; document.getElementById('wsInputUpdateSoap').style.display='none';" value="{$apiResources->getString('text.getpost')}" />
<input type="button" onclick="document.getElementById('wsInputUpdateVars').style.display='none'; document.getElementById('wsInputUpdateXml').style.display='block'; document.getElementById('wsInputUpdateSoap').style.display='none';" value="{$apiResources->getString('text.xml')}" />
{/if}
{if $service->_soap}
<input type="button" onclick="document.getElementById('wsInputUpdateVars').style.display='none'; document.getElementById('wsInputUpdateXml').style.display='none'; document.getElementById('wsInputUpdateSoap').style.display='block';" value="{$apiResources->getString('text.soap')}" />
{/if}
</p>
{if $service->_rest}
<p class="wsExample" id="wsInputUpdateVars">
{$apiResources->getString('service.input.inputUpdate1')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_UPDATE}/123?{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_UPDATE}&ws-id=123&{/if}ws-param1=attr1&ws-param1-value=val1&ws-param2=attr2&ws-param2-value=val2
</p>
<p class="wsExample" id="wsInputUpdateXml" style="display: none">
{$apiResources->getString('service.input.inputUpdate1')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-update key="123"><br />
<ws-param name="attr1" value="val1" /><br />
<ws-param name="attr2" value="val2" /><br />
</ws-update><br />
</ws-request>
</p>
{/if}
{if $service->_soap}
<p class="wsExample" id="wsInputUpdateSoap" style="display: none">
{$apiResources->getString('service.input.inputUpdate1')}:<br />
<request><br />
<update key="123"><br />
<param name="attr1" value="val1" /><br />
<param name="attr2" value="val2" /><br />
</update><br />
</request>
</p>
{/if}
</p>
{/if}
{if $service->_delete}
<h3 id="delete">{$apiResources->getString('service.input.delete')}</h3>
<p id="wsInputDelete">
{$apiResources->getString('service.input.examples')}
<p>
{if $service->_rest}
<input type="button" onclick="document.getElementById('wsInputDeleteVars').style.display='block'; document.getElementById('wsInputDeleteXml').style.display='none'; document.getElementById('wsInputDeleteSoap').style.display='none';" value="{$apiResources->getString('text.getpost')}" />
<input type="button" onclick="document.getElementById('wsInputDeleteVars').style.display='none'; document.getElementById('wsInputDeleteXml').style.display='block'; document.getElementById('wsInputDeleteSoap').style.display='none';" value="{$apiResources->getString('text.xml')}" />
{/if}
{if $service->_soap}
<input type="button" onclick="document.getElementById('wsInputDeleteVars').style.display='none'; document.getElementById('wsInputDeleteXml').style.display='none'; document.getElementById('wsInputDeleteSoap').style.display='block';" value="{$apiResources->getString('text.soap')}" />
{/if}
</p>
{if $service->_rest}
<p class="wsExample" id="wsInputDeleteVars">
{$apiResources->getString('service.input.inputDelete1')}:<br />
{$wsUri}{if $rewrite}{if !$skipAppId}/{$Controller->getCurrentAppId()}{/if}/{$service->_id}/{$smarty.const.SRA_WS_REQUEST_DELETE}/123{else}?ws={$service->_id}{if !$skipAppId}&ws-app={$Controller->getCurrentAppId()}{/if}&ws-action={$smarty.const.SRA_WS_REQUEST_DELETE}&ws-id=123{/if}
</p>
<p class="wsExample" id="wsInputDeleteXml" style="display: none">
{$apiResources->getString('service.input.inputDelete1')}:<br />
{$wsUri}?ws-request-xml=<br />
<ws-request key="{$service->_id}"{if !$skipAppId} app="{$Controller->getCurrentAppId()}"{/if}><br />
<ws-delete key="123" /><br />
</ws-request>
</p>
{/if}
{if $service->_soap}
<p class="wsExample" id="wsInputDeleteSoap" style="display: none">
{$apiResources->getString('service.input.inputDelete1')}:<br />
<request><br />
<delete key="123" /><br />
</request>
</p>
{/if}
</p>
{/if}
{/if}
</p>
<h2 id="output">{$apiResources->getString('service.output')}</h2>
<p id="wsOutput">
<p id="inputDesc">
{$apiResources->getString('service.outputDesc')}
<table>
<tr>
<th id="wsOutputJson">{$apiResources->getString('service.output.json')}</th>
<th id="wsOutputXml">{$apiResources->getString('service.output.xml')}</th>
<th id="wsOutputSoap">{$apiResources->getString('service.output.soap')}</th>
<th id="wsOutputDataType">{$apiResources->getString('service.output.dataType')}</th>
<th id="wsOutputMetadata">{$apiResources->getString('service.output.metadata')}</th>
<th id="wsOutputDesc">{$apiResources->getString('service.output.desc')}</th>
</tr>
{if !$service->_global}
<tr>
<td class="wsOutputJson">{ldelim} action: "?" ... </td>
<td class="wsOutputXml"><ws-response action="?"</td>
<td class="wsOutputSoap"><response action="?"</td>
<td class="wsOutputDataType">({if $service->_retrieve}retrieve{/if}{if $service->_create}{if $service->_retrieve}|<br /> {/if}create{/if}{if $service->_update}{if $service->_retrieve || $service->_create}|<br /> {/if}update{/if}{if $service->_delete}{if $service->_retrieve || $service->_create || $service->_update}|<br /> {/if}delete{/if})</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.action')}</td>
</tr>
{/if}
{if $usesLimit || $service->_retrieve}
<tr>
<td class="wsOutputJson">{ldelim} count: "?" ... </td>
<td class="wsOutputXml"><ws-response count="?"</td>
<td class="wsOutputSoap"><response count="?"</td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_INT}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{if $service->_retrieve}{$apiResources->getString('service.output.count')}{elseif $service->_type eq $smarty.const.SRA_WS_GLOBAL_TYPE_METHOD}{$apiResources->getString('service.output.countMethod')}{elseif $service->_type eq $smarty.const.SRA_WS_GLOBAL_TYPE_RB}{$apiResources->getString('service.output.countRb')}{else}{$apiResources->getString('service.output.countQuery')}{/if}</td>
</tr>
{/if}
<tr>
<td class="wsOutputJson">{ldelim} format: "?" ... </td>
<td class="wsOutputXml"><ws-response format="?"</td>
<td class="wsOutputSoap"><response format="?"</td>
<td class="wsOutputDataType">({if $service->_formatFixed}{$service->_format}{else}{$smarty.const.SRA_WS_FORMAT_JSON}|{$smarty.const.SRA_WS_FORMAT_XML}{if $response->_global}|{$smarty.const.SRA_WS_FORMAT_RAW}{/if}{/if})</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{if $response->_global}{$apiResources->getString('service.output.formatGlobal')}{else}{$apiResources->getString('service.output.format')}{/if}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} global: "?" ... </td>
<td class="wsOutputXml"><ws-response global="?"</td>
<td class="wsOutputSoap"><response global="?"</td>
<td class="wsOutputDataType">{if $service->_global}1{else}0{/if}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{if $response->_global}{$apiResources->getString('service.output.global')}{else}{$apiResources->getString('service.output.nonglobal')}{/if}</td>
</tr>
{if $usesLimit || $service->_retrieve}
<tr>
<td class="wsOutputJson">{ldelim} limit: "?" ... </td>
<td class="wsOutputXml"><ws-response limit="?"</td>
<td class="wsOutputSoap"><response limit="?"</td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_INT}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.limit')}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} offset: "?" ... </td>
<td class="wsOutputXml"><ws-response offset="?"</td>
<td class="wsOutputSoap"><response offset="?"</td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_INT}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.offset')}</td>
</tr>
{/if}
<tr>
<td class="wsOutputJson">{ldelim} requestId: "?" ... </td>
<td class="wsOutputXml"><ws-response request-id="?"</td>
<td class="wsOutputSoap"><response requestId="?"</td>
<td class="wsOutputDataType">{$apiResources->getString('text.mixed')}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.requestId')}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} requestId1: "?" ... </td>
<td class="wsOutputXml"><ws-response request-id1="?"</td>
<td class="wsOutputSoap"><response requestId1="?"</td>
<td class="wsOutputDataType">{$apiResources->getString('text.mixed')}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.requestId1')}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} service: "?" ... </td>
<td class="wsOutputXml"><ws-response service="?"</td>
<td class="wsOutputSoap"><response service="?"</td>
<td class="wsOutputDataType">({$service->_id})</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.service')}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} sessionId: "?" ... </td>
<td class="wsOutputXml"><ws-response session-id="?"</td>
<td class="wsOutputSoap"><response sessionId="?"</td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.sessionId')}</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} status: "?" ... </td>
<td class="wsOutputXml"><ws-response status="?"</td>
<td class="wsOutputSoap"><response status="?"</td>
<td class="wsOutputDataType">
({$smarty.const.SRA_WS_REQUEST_STATUS_SUCCESS}|<br />
{$smarty.const.SRA_WS_REQUEST_STATUS_FAILED}|<br />
{if !$skipAppId}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_APP}|<br />
{/if}
{if !$service->_global && ($service->_create || $service->_update)}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_ATTRS}|<br />
{/if}
{if !$service->_global && ($service->_delete || $service->_update)}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_PK}|<br />
{/if}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_FORMAT}|<br />
{if !$service->_global && ($service->_create || $service->_update)}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_INPUT}|<br />
{/if}
{if $usesLimit || $service->_retrieve}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_LIMIT}|<br />
{/if}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_META_FORMAT}|<br />
{if !$service->_rest || !$service->_soap}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_PROTO}|<br />
{/if}
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_REQUEST}|<br />
{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_SERVICE}|<br />
{if $service->_ipAuthenticator}
{$smarty.const.SRA_WS_REQUEST_STATUS_IP_NOT_ALLOWED}|<br />
{/if}
{if !$service->_global && (!$service->_create || !$service->_delete || !$service->_retrieve || !$service->_update)}
{$smarty.const.SRA_WS_REQUEST_STATUS_NOT_ALLOWED}|<br />
{/if}
{if $service->_authenticate && $authenticated}
{$smarty.const.SRA_WS_REQUEST_STATUS_AUTH_FAILED}|<br />
{/if}
{if $service->_rest}
{$smarty.const.SRA_WS_REQUEST_STATUS_RESULTS_NOT_AVAILABLE}|<br />
{$smarty.const.SRA_WS_REQUEST_STATUS_TIMEOUT}
{/if})
</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">
{$apiResources->getString('service.output.status')}
<ul>
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_SUCCESS}: {$apiResources->getString('service.output.status.success')}</li>
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_FAILED}: {$apiResources->getString('service.output.status.failed')}</li>
{if !$skipAppId}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_APP}: {$apiResources->getString('service.output.status.invalidApp')}</li>
{/if}
{if !$service->_global && ($service->_create || $service->_update)}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_ATTRS}: {$apiResources->getString('service.output.status.invalidAttrs')}</li>
{/if}
{if !$service->_global && ($service->_delete || $service->_update)}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_PK}: {$apiResources->getString('service.output.status.invalidPk')}</li>
{/if}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_FORMAT}: {$apiResources->getString('service.output.status.invalidFormat')}</li>
{if !$service->_global && ($service->_create || $service->_update)}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_INPUT}: {$apiResources->getString('service.output.status.invalidInput')}</li>
{/if}
{if $usesLimit || $service->_retrieve}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_LIMIT}: {$apiResources->getString('service.output.status.invalidLimit')}</li>
{/if}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_META_FORMAT}: {$apiResources->getString('service.output.status.invalidMetaFormat')}</li>
{if !$service->_rest || !$service->_soap}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_PROTO}: {if !$service->_rest}{$apiResources->getString('service.output.status.invalidProtoRest')}{else}{$apiResources->getString('service.output.status.invalidProtoSoap')}{/if}</li>
{/if}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_REQUEST}: {$apiResources->getString('service.output.status.invalidRequest')}</li>
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_INVALID_SERVICE}: {$apiResources->getString('service.output.status.invalidService')}</li>
{if $service->_ipAuthenticator}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_IP_NOT_ALLOWED}: {$apiResources->getString('service.output.status.ipNotAllowed')}</li>
{/if}
{if !$service->_global && (!$service->_create || !$service->_delete || !$service->_retrieve || !$service->_update)}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_NOT_ALLOWED}: {$apiResources->getString('service.output.status.notAllowed')}</li>
{/if}
{if $service->_authenticate && $authenticated}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_AUTH_FAILED}: {$apiResources->getString('service.output.status.authFailed')}</li>
{/if}
{if $service->_rest}
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_RESULTS_NOT_AVAILABLE}: {$apiResources->getString('service.output.status.notAvailable')}</li>
<li>{$smarty.const.SRA_WS_REQUEST_STATUS_TIMEOUT}: {$apiResources->getString('service.output.status.timeout')}</li>
{/if}
</ul>
</td>
</tr>
<tr>
<td class="wsOutputJson">{ldelim} time: "?" ... </td>
<td class="wsOutputXml"><ws-response time="?"</td>
<td class="wsOutputSoap"><response time="?"</td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_FLOAT}</td>
<td class="wsOutputMetadata">{$resources->getString('text.yes')}</td>
<td class="wsOutputDesc">{$apiResources->getString('service.output.time')}</td>
</tr>
{if ($service->_global && $api.return && $api.return neq 'void') || (!$service->_global && ($service->_create || $service->_retrieve || $service->_update))}
<tr>
<td class="wsOutputJson">{ldelim} response: {if $service->_global}?{else}{if $service->_retrieve}[ {/if}{$entity->getEntityType()}{if $service->_retrieve}, ]{/if}{/if} </td>
<td class="wsOutputXml"><ws-response ...><br /> {if $service->_global}?{else}{$entity->getEntityType()}{if $service->_retrieve}[0..*]{/if}{/if}<br /></ws-response></td>
<td class="wsOutputSoap"><response ...><br /> {if $service->_global}?{else}{$entity->getEntityType()}{if $service->_retrieve}[0..*]{/if}{/if}<br /></response></td>
<td class="wsOutputDataType">{if $service->_global}{$api.return}{else}{$entity->getEntityType()}{if $service->_retrieve}[0..*]{/if}{/if}</td>
<td class="wsOutputMetadata">{$resources->getString('text.no')}</td>
<td class="wsOutputDesc">{if $service->_global}{$apiResources->getString('service.output.responseGlobal')}{else}{$apiResources->getString('service.output.response')}<ul>{if $service->_retrieve}<li>{$apiResources->getString('service.output.responseRetrieve')}</li>{/if}{if $service->_create}<li>{$apiResources->getString('service.output.responseCreate')}</li>{/if}{if $service->_update}<li>{$apiResources->getString('service.output.responseUpdate')}</li>{/if}{if $service->_delete}<li>{$apiResources->getString('service.output.responseDelete')}</li>{/if}</ul>{/if}</td>
</tr>
{/if}
{if $service->_global && $service->_type eq $smarty.const.SRA_WS_GLOBAL_TYPE_SQL}
<tr>
<td class="wsOutputJson">{ldelim} queryResults: <br /> [{ldelim}[col1]: "[val1]", [col2]: "[val2]"{rdelim}, <br /> {ldelim}[col1]: "[val1]", [col2]: "[val2]"{rdelim}]<br /> ...</td>
<td class="wsOutputXml"><ws-response ...><br /> <ws-query-results><br /> <ws-row key="[row num]"><br /> <ws-col key="[col1]"><br /> <![CDATA[val1]]><br /> </ws-col><br /> <ws-col key="[col2]"><br /> <![CDATA[val2]]><br /> </ws-col><br /> </ws-row><br /> </ws-query-results><br /></ws-response></td>
<td class="wsOutputSoap"><response ...><br /> <queryResults><br /> <row key="[row num]"><br /> <col key="[col1]"><br /> <![CDATA[val1]]><br /> </col><br /> <col key="[col2]"><br /> <![CDATA[val2]]><br /> </col><br /> </row><br /> </queryResults><br /></response></td>
<td class="wsOutputDataType">{$apiResources->getString('text.na')}</td>
<td class="wsOutputMetadata">{$resources->getString('text.no')}</td>
<td class="wsOutputDesc">{if $service->_rest}<p>{$apiResources->getString('service.output.queryResultsJson')}</p>{/if}<p>{$apiResources->getString('service.output.queryResultsXml')}</p></td>
</tr>
{/if}
{if $service->_global && $service->_type eq $smarty.const.SRA_WS_GLOBAL_TYPE_RB}
<tr>
<td class="wsOutputJson">{ldelim} resourceBundle: <br /> {ldelim}[key1]: "[val1]",<br /> [key2]: "[val2]"{rdelim}<br /> ...</td>
<td class="wsOutputXml"><ws-response ...><br /> <ws-resource-bundle><br /> <ws-string key="[key1]"><br /> <![CDATA[val1]]><br /> </ws-string><br /> <ws-string key="[key2]"><br /> <![CDATA[val2]]><br /> </ws-string><br /> </ws-resource-bundle><br /></ws-response></td>
<td class="wsOutputSoap"><response ...><br /> <resourceBundle><br /> <string key="[key1]"><br /> <![CDATA[val1]]><br /> </string><br /> <string key="[key2]"><br /> <![CDATA[val2]]><br /> </string><br /> </resourceBundle><br /></response></td>
<td class="wsOutputDataType">{$apiResources->getString('text.na')}</td>
<td class="wsOutputMetadata">{$resources->getString('text.no')}</td>
<td class="wsOutputDesc">{if $service->_rest}<p>{$apiResources->getString('service.output.rbJson')}</p>{/if}<p>{$apiResources->getString('service.output.rbXml')}</p></td>
</tr>
{/if}
{if !$service->_global && ($service->_create || $service->_update)}
<tr>
<td class="wsOutputJson">{ldelim} validationErrors: <br /> {ldelim}[attr1]: "[err1]",<br /> [attr2]: "[err2]"{rdelim}<br /> ...</td>
<td class="wsOutputXml"><ws-response ...><br /> <ws-validation-errors><br /> <ws-error key="[attr1]"><br /> <![CDATA[err1]]><br /> </ws-error><br /> <ws-error key="[attr2]"><br /> <![CDATA[err2]]><br /> </ws-error><br /> </ws-validation-errors><br /></ws-response></td>
<td class="wsOutputSoap"><response ...><br /> <validationErrors><br /> <error key="[attr1]"><br /> <![CDATA[err1]]><br /> </error><br /> <error key="[attr2]"><br /> <![CDATA[err2]]><br /> </error><br /> </validationErrors><br /></response></td>
<td class="wsOutputDataType">{$apiResources->getString('text.na')}</td>
<td class="wsOutputMetadata">{$resources->getString('text.no')}</td>
<td class="wsOutputDesc"><p>{$apiResources->getString('service.output.validationErrors')}</p>{if $service->_rest}<p>{$apiResources->getString('service.output.validationErrorsJson')}</p>{/if}<p>{$apiResources->getString('service.output.validationErrorsXml')}</p></td>
</tr>
{elseif $service->_global}
<tr>
<td class="wsOutputJson">{ldelim} error: "[error]"<br /> ...</td>
<td class="wsOutputXml"><ws-response ...><br /> <ws-error><br /> <![CDATA[error]]><br /> </ws-error><br /></ws-response></td>
<td class="wsOutputSoap"><response ...><br /> <error><br /> <![CDATA[error]]><br /> </error><br /></response></td>
<td class="wsOutputDataType">{$smarty.const.SRA_DATA_TYPE_STRING}</td>
<td class="wsOutputMetadata">{$resources->getString('text.no')}</td>
<td class="wsOutputDesc"><p>{$apiResources->getString('service.output.error')}</p></td>
</tr>
{/if}
</table>
</p>
</p>
{else}
{$apiResources->getString('service.notPublic')}
{/if}
<p id="wsOverview"><a href="{$apiUri}">{$apiResources->getString('service.overviewLink')}</a></p>
</form>
</body>
</html>