AuthenticateUser1 API¶
Authenticates a user against infoRouter using their user name and password, and creates a session using the specified language ID. Returns an authentication ticket and basic profile information. Use this variant instead of AuthenticateUser when your application needs to force a specific UI language for the session.
Endpoint¶
Methods¶
- GET
/srv.asmx/AuthenticateUser1?UID=...&PWD=...&Lang=... - POST
/srv.asmx/AuthenticateUser1(form data) - SOAP Action:
http://tempuri.org/AuthenticateUser1
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
UID |
string | Yes | The user's login name (case-insensitive) |
PWD |
string | Yes | The user's password |
Lang |
string | No | Language code for the session (e.g. en, de, fr, tr, nl). If omitted or empty, the user's preferred language from their profile is used. The value is matched case-insensitively against the languages configured on the server. |
Note: This method does not require an
authenticationTicket-" it is a login method that produces one.
Response¶
Success Response¶
<root success="true"
ticket="3f2a1b4c-5d6e-7f8a-9b0c-1d2e3f4a5b6c"
userid="42"
username="jsmith"
firstName="John"
lastName="Smith"
fullname="John Smith"
email="jsmith@example.com"
expireOn="2026-03-20T14:35:00Z"
isAuthenticated="True"
previousLogonDate="2026-09-28T07:42:10.000Z" />
Response Attributes¶
| Attribute | Type | Description |
|---|---|---|
success |
boolean | true on successful authentication |
ticket |
GUID string | Authentication ticket to use in all subsequent API calls |
userid |
integer | Internal numeric user ID |
username |
string | The user's login name |
firstName |
string | User's first name |
lastName |
string | User's last name |
fullname |
string | User's full display name (firstName lastName) |
email |
string | User's email address |
expireOn |
datetime (UTC) | Ticket expiration timestamp (30-day sliding window) |
isAuthenticated |
boolean string | Whether the session is authenticated (True/False) |
previousLogonDate |
datetime (UTC) | When the user last signed in before this sign-in, for a "last signed in on …" notice. Empty on the user's first sign-in. It is read before this sign-in replaces it, so no other API can return it afterwards: GetUser's LastLogonDate already shows this sign-in. |
Error Response¶
Required Permissions¶
- No prior authentication is required.
- The user account must exist and be active (not disabled or deleted).
Example¶
Request (GET)¶
Request (POST)¶
POST /srv.asmx/AuthenticateUser1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
UID=jsmith&PWD=Secret123!&Lang=de
Request (SOAP 1.1)¶
POST /srv.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/AuthenticateUser1"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AuthenticateUser1 xmlns="http://tempuri.org/">
<UID>jsmith</UID>
<PWD>Secret123!</PWD>
<Lang>de</Lang>
</AuthenticateUser1>
</soap:Body>
</soap:Envelope>
JavaScript¶
Every call answers XML with HTTP 200, success or not, so success is the thing to branch on and
errorCode is the number to report. call below is used by the sample on every page.
async function call(action, params) {
const response = await fetch(`/srv.asmx/${action}?${new URLSearchParams(params)}`);
const root = new DOMParser()
.parseFromString(await response.text(), 'text/xml')
.documentElement;
if (root.getAttribute('success') !== 'true') {
throw new Error(`${root.getAttribute('errorCode')}: ${root.getAttribute('error')}`);
}
return root;
}
Same as AuthenticateUser, plus the language the answer should be written in - which matters most
when the call fails, because nobody is signed in yet to have a language of their own.
const root = await call('AuthenticateUser1', { UID: 'sysadmin', PWD: 'pass', Lang: 'tr' });
const ticket = root.getAttribute('ticket');
Leave Lang empty and the browser's Accept-Language decides.
Notes¶
- The
Langparameter overrides the user's own preferred language setting for this session only. The user's stored profile preference is not permanently changed. - If an unrecognised or unsupported language code is supplied, the server falls back to the system default language.
- The returned
ticketmust be stored by the client and passed asauthenticationTicketin every subsequent API call. - Tickets use a 30-day sliding expiration -" each successful API call resets the timer.
- To simply authenticate without specifying a language, use
AuthenticateUser.
Related APIs¶
- AuthenticateUser - Authenticate without specifying a session language
- AuthenticateUserViaWindows - Authenticate using Windows (NTLM/Kerberos) credentials
- RenewTicket - Renew a ticket that is about to expire
- isValidTicket - Check whether a ticket is still valid
- LogOut - Invalidate the authentication ticket
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
[900] wrong password, unknown user, or a disabled account |
| Error | Description |
|---|---|
[900] Authentication failed |
The user name or password is incorrect, or the account is disabled/does not exist |
[902] Ticket generation not allowed |
The account is not permitted to generate API tickets |