TransferUserCheckedOutDocuments API¶
Transfers checked-out documents from one user to another. The check-out ownership is reassigned so the target user can check in or cancel the check-out.
A transfer to the same user is accepted... no longer.
fromUserNameandtoUserNamemay not name one account: the call is refused with4000, because moving everything away from an account and handing it to nobody is not a transfer. It used to be accepted and reported as a success.
Endpoint¶
Methods¶
- GET
/srv.asmx/TransferUserCheckedOutDocuments?authenticationTicket=...&fromUserName=...&toUserName=... - POST
/srv.asmx/TransferUserCheckedOutDocuments(form data) - SOAP Action:
http://tempuri.org/TransferUserCheckedOutDocuments
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
authenticationTicket |
string | Yes | Authentication ticket obtained from AuthenticateUser. |
fromUserName |
string | Yes | The username whose checked-out documents will be transferred. |
toUserName |
string | Yes | The username who will take ownership of the checked-out documents. |
Response¶
Success Response¶
Success Response (with warnings)¶
Error Response¶
Required Permissions¶
An administrator's work (the sysadmin account or a member of [Administrators] as fromUserName) can be transferred by administrators only; anyone else is refused with 4030. Transferring work to an administrator is not restricted. See AdministrativeRoles.
System administrator. Only system administrators can transfer user data between accounts.
Example¶
GET Request¶
GET /srv.asmx/TransferUserCheckedOutDocuments
?authenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&fromUserName=jdoe
&toUserName=jsmith
HTTP/1.1
POST Request¶
POST /srv.asmx/TransferUserCheckedOutDocuments HTTP/1.1
Content-Type: application/x-www-form-urlencoded
authenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&fromUserName=jdoe
&toUserName=jsmith
SOAP Request¶
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://tempuri.org/">
<soap:Body>
<tns:TransferUserCheckedOutDocuments>
<tns:AuthenticationTicket>3f2504e0-4f89-11d3-9a0c-0305e82c3301</tns:AuthenticationTicket>
<tns:FromUserName>jdoe</tns:FromUserName>
<tns:ToUserName>jsmith</tns:ToUserName>
</tns:TransferUserCheckedOutDocuments>
</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.
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;
}
Moves the documents one user has checked out to another user.
const root = await call('TransferUserCheckedOutDocuments', {
authenticationTicket: ticket,
fromUserName: 'jsmith',
toUserName: 'agarcia',
});
// There is no errorCode here - branch on success, and read the optional warnings attribute.
const warnings = root.getAttribute('warnings');
An answer may carry a warnings attribute when some of the checked out documents could not be moved - a conflict at
the destination, most often. It is absent when everything moved.
This is one of the calls to make before DeleteUser: what the account holds does not go with it.
Notes¶
- Reassigns the check-out lock ownership from
fromUserNametotoUserName. - Documents remain checked out; only the ownership of the check-out changes.
- The response root element is
<root>, not<response>. - Typically used as part of a user offboarding process before deleting the source user.
Related APIs¶
- TransferUserDocumentOwnerships - Transfer document ownerships
- TransferUserFolderOwnerships - Transfer folder ownerships
- DeleteUser - Delete a user after transferring their data
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
the ticket is expired or unknown |
4030 |
there is no ticket at all |
4041 |
no user by either name |
4000 |
fromUserName and toUserName name the same account |
HTTP 400 |
fromUserName or toUserName was empty; refused by model binding, so there is no error document |
Every answer carries an errorCode now, including a 0 on success. The family used to write
none at all, so success was the only thing a client could branch on.