SetGeneralAppSettings API¶
Updates the global General Application Settings by sending a serialized GeneralSettings object. Use this API when you need to modify upload limits, recycle bin policies, workdays/holidays, or other platform-wide configuration options in a single atomic operation.
Endpoint¶
Methods¶
- GET
/srv.asmx/SetGeneralAppSettings?authenticationTicket=...&settingsXml=... - POST
/srv.asmx/SetGeneralAppSettings(form data) - SOAP Action:
http://tempuri.org/SetGeneralAppSettings
The
settingsXmlvalue must contain theGeneralSettingsXML. Always URL-encode the XML when calling the GET endpoint.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
authenticationTicket |
string | Yes | Ticket returned by AuthenticateUser. The caller must have permission to update application settings. |
settingsXml |
string | Yes | XML representation of the GeneralSettings object. Obtain the current structure via GetGeneralAppSettings, update the desired values, then submit the modified XML here. |
Response¶
Success¶
Error¶
<root success="false" error="[2730]Insufficient rights. Anonymous users cannot perform this action" />
Typical errors:
- [2730] when the user is not authenticated or lacks admin rights
- Invalid settings XML format when the payload cannot be deserialized
- The message returned by UpdateGeneralApplicationSettings (for validation failures)
Required Permissions¶
UpdateApplicationSettingsAndPoliciesadmin permission (can be verified in Control Panel ? System Administration ? Security Policies)- Only authenticated administrators can invoke this method
Example (REST POST)¶
POST /srv.asmx/SetGeneralAppSettings HTTP/1.1
Content-Type: application/x-www-form-urlencoded
authenticationTicket=6F9C2A...&
settingsXml=%3CGeneralSettings%3E...%3C%2FGeneralSettings%3E
SOAP Request¶
POST /srv.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/SetGeneralAppSettings"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SetGeneralAppSettings xmlns="http://tempuri.org/">
<authenticationTicket>6F9C2A...</authenticationTicket>
<settingsXml><![CDATA[
<GeneralSettings>
<UploadSettings>
<DocumentMaxSize>524288000</DocumentMaxSize>
<FileUploadTimeOut>900</FileUploadTimeOut>
<DefaultUploadFileChunkSize>8388608</DefaultUploadFileChunkSize>
</UploadSettings>
<AllowOwnershipTransfer>true</AllowOwnershipTransfer>
<WebDav>false</WebDav>
<DisplayAddIns>true</DisplayAddIns>
<SearchPageSize>50</SearchPageSize>
<SystemRecycleBinAutoPurgeOption>6</SystemRecycleBinAutoPurgeOption>
<MoveUsersRecycleBinToSystemRecycleBinIn>3</MoveUsersRecycleBinToSystemRecycleBinIn>
<RerouteRedirections>false</RerouteRedirections>
<MinYearInDateControls>1950</MinYearInDateControls>
<SendDiagnosticsAndStatistics>true</SendDiagnosticsAndStatistics>
<Workdays>
<Monday>true</Monday>
<Tuesday>true</Tuesday>
<Wednesday>true</Wednesday>
<Thursday>true</Thursday>
<Friday>true</Friday>
<Saturday>false</Saturday>
<Sunday>false</Sunday>
<StartHour>8</StartHour>
<StartMinute>0</StartMinute>
<EndHour>18</EndHour>
<EndMinute>0</EndMinute>
</Workdays>
<HolidayList>
<Holiday>
<HolidayDate>2000-01-01T00:00:00</HolidayDate>
<Description>New Year (recurring every Jan 1)</Description>
</Holiday>
<Holiday>
<HolidayDate>2000-12-25T00:00:00</HolidayDate>
<Description>Christmas Day (recurring every Dec 25)</Description>
</Holiday>
<Holiday>
<HolidayDate>2025-07-04T00:00:00</HolidayDate>
<Description>Independence Day (one-time, 2025 only)</Description>
</Holiday>
</HolidayList>
<ZipDownloadSetting>
<Enabled>true</Enabled>
<MaxTotalSize>209715200</MaxTotalSize>
<MaxTotalCount>500</MaxTotalCount>
</ZipDownloadSetting>
</GeneralSettings>
]]></settingsXml>
</SetGeneralAppSettings>
</soap:Body>
</soap:Envelope>
Sample settingsXml Payload¶
<GeneralSettings>
<UploadSettings>
<DocumentMaxSize>524288000</DocumentMaxSize>
<FileUploadTimeOut>900</FileUploadTimeOut>
<DefaultUploadFileChunkSize>8388608</DefaultUploadFileChunkSize>
</UploadSettings>
<AllowOwnershipTransfer>true</AllowOwnershipTransfer>
<WebDav>false</WebDav>
<DisplayAddIns>true</DisplayAddIns>
<SearchPageSize>20</SearchPageSize>
<SystemRecycleBinAutoPurgeOption>6</SystemRecycleBinAutoPurgeOption>
<MoveUsersRecycleBinToSystemRecycleBinIn>3</MoveUsersRecycleBinToSystemRecycleBinIn>
<RerouteRedirections>false</RerouteRedirections>
<MinYearInDateControls>1950</MinYearInDateControls>
<SendDiagnosticsAndStatistics>true</SendDiagnosticsAndStatistics>
<Workdays>
<Monday>true</Monday>
<Tuesday>true</Tuesday>
<Wednesday>true</Wednesday>
<Thursday>true</Thursday>
<Friday>true</Friday>
<Saturday>false</Saturday>
<Sunday>false</Sunday>
<StartHour>8</StartHour>
<StartMinute>0</StartMinute>
<EndHour>18</EndHour>
<EndMinute>0</EndMinute>
</Workdays>
<HolidayList>
<!-- Recurring holiday: year 2000 means every Jan 1st -->
<Holiday>
<HolidayDate>2000-01-01T00:00:00</HolidayDate>
<Description>New Year</Description>
</Holiday>
<!-- One-time holiday: applies only on this exact date -->
<Holiday>
<HolidayDate>2025-07-04T00:00:00</HolidayDate>
<Description>Independence Day</Description>
</Holiday>
</HolidayList>
<ZipDownloadSetting>
<Enabled>true</Enabled>
<MaxTotalSize>209715200</MaxTotalSize>
<MaxTotalCount>1000</MaxTotalCount>
</ZipDownloadSetting>
</GeneralSettings>
Holiday Properties¶
| Property | Type | Description |
|---|---|---|
HolidayDate |
DateTime | Date of the holiday in ISO 8601 format (e.g. 2025-07-04T00:00:00) |
Description |
string | Name or description of the holiday |
Recurring vs One-Time Holidays¶
A holiday whose HolidayDate year is 2000 is treated as a recurring (annual) holiday — it applies on that month and day every year.
A holiday whose year is any other value is a one-time holiday that applies only on that exact date.
<!-- Recurring: applies every December 25th regardless of year -->
<Holiday>
<HolidayDate>2000-12-25T00:00:00</HolidayDate>
<Description>Christmas Day</Description>
</Holiday>
<!-- One-time: applies only on July 4, 2025 -->
<Holiday>
<HolidayDate>2025-07-04T00:00:00</HolidayDate>
<Description>Independence Day</Description>
</Holiday>
Important: The
HolidayListelement is required if you want to persist holidays. If you omit it, existing holiday definitions will be cleared.
Usage Guidelines¶
- Call
GetGeneralAppSettingsto retrieve the current settings. - Modify only the values you need to change; keep the structure intact.
- Validate business rules before sending (e.g., document max size ≤
1 GB). The two recycle bin values must be 0–36 months: the server refuses others with4000, naming the setting (e.g.SystemRecycleBinAutoPurgeOption: Valid month range is 1 to 36; 0 = off is also accepted). - Submit the updated XML via
SetGeneralAppSettings. - On success, settings are refreshed in memory automatically and take effect immediately.
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.
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;
}
Takes what GetGeneralAppSettings returns, as it stands - the reader already answers under
<GeneralSettings>, which is what this deserializes against. Read, change what you mean to change, send
the whole document back: anything left out goes back to its default rather than staying as it was.
const current = await call('GetGeneralAppSettings', { authenticationTicket: ticket });
const settings = current.querySelector('GeneralSettings');
// ... change what you mean to change ...
await call('SetGeneralAppSettings', {
authenticationTicket: ticket,
settingsXml: new XMLSerializer().serializeToString(settings)
});
Notes¶
- The
Descriptionof a holiday takes 32 characters; a longer one is refused with4000. - All numeric values are expressed in bytes unless the property name indicates minutes/hours.
- infoRouter does not set a request-size limit of its own. A single-request (non-chunked) upload is limited by the host's request-size limit (Kestrel / IIS requestFiltering maxAllowedContentLength). Use chunked upload for large files.
- Holidays are serialized through
HolidayList(dictionary values are not serialized directly). - A
HolidayDatewith year2000marks a recurring annual holiday (matched by month/day only). Any other year marks a one-time holiday matched by exact date. - Failure responses always include a localized message in the
errorattribute. - Because this API overwrites the entire
GeneralSettingsobject, avoid sending partial XML documents. - Audit and change tracking should be handled at the application level by storing copies of previous XML payloads.
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
the ticket is expired or unknown |
4030 |
a caller with no ticket, or one who may not update settings |
4000 |
settingsXml is not well formed, or does not deserialize into the settings document |
4000 |
SystemRecycleBinAutoPurgeOption or MoveUsersRecycleBinToSystemRecycleBinIn is outside 0–36; the error names the setting and nothing is saved |