GetCheckedoutDocumentsByUser API

Returns a list of checked out documents by the specified user. This API is similar to GetCheckedoutDocuments but allows querying documents for any user (with appropriate permissions).

Endpoint

/srv.asmx/GetCheckedoutDocumentsByUser

Methods

Parameters

Parameter Type Required Description
authenticationTicket string Yes Authentication ticket obtained from AuthenticateUser
userName string Yes Username of the user whose checked out documents to retrieve
withpropertysets boolean No Include custom property sets in the response
withsecurity boolean No Include security/permission information
withOwner boolean No Include document owner information
withVersions boolean No Include version history information

Response Structure

Success Response

<response success="true">
  <document id="123" name="report.docx" path="/Documents/report.docx"
            checkedOutBy="john.smith" checkedOutDate="2024-01-15T10:30:00"
            size="52480" extension="docx" ... />
  <document id="456" name="contract.pdf" path="/Legal/contract.pdf"
            checkedOutBy="john.smith" checkedOutDate="2024-01-14T14:20:00"
            size="128000" extension="pdf" ... />
</response>

Empty Result Response

<response success="true" />

Error Response

<response success="false" error="[ErrorCode] Error message" />

Document Properties

Property Type Description
id integer Unique document identifier
name string Document file name
path string Full path to the document
checkedOutBy string Username who checked out the document
checkedOutDate datetime When the document was checked out
size long File size in bytes
extension string File extension without the dot
description string Document description
version integer Current version number
created datetime Document creation date
modified datetime Last modification date

Required Permissions

Permission Matrix

Scenario Permission Required
Viewing own checked out documents None (authenticated user)
Viewing another user's checked out documents ListingAuditLogOfUser

Example Requests

Request (GET)

GET /srv.asmx/GetCheckedoutDocumentsByUser?authenticationTicket=abc123-def456&userName=john.smith&withpropertysets=false&withsecurity=false&withOwner=true&withVersions=false HTTP/1.1
Host: server.example.com

Request (POST)

POST /srv.asmx/GetCheckedoutDocumentsByUser HTTP/1.1
Content-Type: application/x-www-form-urlencoded

authenticationTicket=abc123-def456&userName=john.smith&withpropertysets=false&withsecurity=false&withOwner=true&withVersions=false

Request (SOAP 1.1)

POST /srv.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/GetCheckedoutDocumentsByUser"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetCheckedoutDocumentsByUser xmlns="http://tempuri.org/">
      <authenticationTicket>abc123-def456</authenticationTicket>
      <userName>john.smith</userName>
      <withpropertysets>false</withpropertysets>
      <withsecurity>false</withsecurity>
      <withOwner>true</withOwner>
      <withVersions>false</withVersions>
    </GetCheckedoutDocumentsByUser>
  </soap:Body>
</soap:Envelope>

Use Cases

  1. User Reports

    • Generate reports of documents checked out by a specific user
    • Monitor document checkout activity across teams
    • Identify documents that may need to be checked in
  2. Administrative Oversight

    • View checked out documents for users who are on leave
    • Audit document access patterns
    • Manage document locks across the organization
  3. Support Operations

    • Help users identify their checked out documents
    • Troubleshoot document access issues
    • Assist with checkout/checkin workflows

Integration Examples

JavaScript/Client-Side

async function getCheckedoutDocumentsByUser(userName) {
    const ticket = getUserAuthTicket();

    const params = new URLSearchParams({
        authenticationTicket: ticket,
        userName: userName,
        withpropertysets: 'false',
        withsecurity: 'false',
        withOwner: 'true',
        withVersions: 'false'
    });

    const url = `/srv.asmx/GetCheckedoutDocumentsByUser?${params}`;

    const response = await fetch(url);
    const xmlText = await response.text();
    const parser = new DOMParser();
    const xmlDoc = parser.parseFromString(xmlText, "text/xml");

    const root = xmlDoc.querySelector("response");
    if (root.getAttribute("success") === "true") {
        const documents = [];
        xmlDoc.querySelectorAll("document").forEach(doc => {
            documents.push({
                id: doc.getAttribute("id"),
                name: doc.getAttribute("name"),
                path: doc.getAttribute("path"),
                checkedOutBy: doc.getAttribute("checkedOutBy"),
                checkedOutDate: doc.getAttribute("checkedOutDate"),
                size: parseInt(doc.getAttribute("size"))
            });
        });
        return documents;
    } else {
        const error = root.getAttribute("error");
        throw new Error(error);
    }
}

// Usage
const userDocs = await getCheckedoutDocumentsByUser("john.smith");
console.log(`User has ${userDocs.length} checked out documents`);

C# Client Usage

using (var client = new SrvSoapClient())
{
    try
    {
        var response = await client.GetCheckedoutDocumentsByUserAsync(
            authTicket,
            "john.smith",
            withpropertysets: false,
            withsecurity: false,
            withOwner: true,
            withVersions: false);

        var root = XElement.Parse(response.ToString());
        if (root.Attribute("success")?.Value == "true")
        {
            var documents = root.Elements("document").Select(doc => new
            {
                Id = int.Parse(doc.Attribute("id")?.Value ?? "0"),
                Name = doc.Attribute("name")?.Value,
                Path = doc.Attribute("path")?.Value,
                CheckedOutBy = doc.Attribute("checkedOutBy")?.Value,
                CheckedOutDate = DateTime.Parse(doc.Attribute("checkedOutDate")?.Value ?? DateTime.MinValue.ToString())
            }).ToList();

            Console.WriteLine($"Found {documents.Count} checked out documents");
            foreach (var doc in documents)
            {
                Console.WriteLine($"  - {doc.Name} (checked out: {doc.CheckedOutDate:g})");
            }
        }
        else
        {
            var error = root.Attribute("error")?.Value;
            Console.WriteLine($"Error: {error}");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Exception: {ex.Message}");
    }
}

Error Codes

Common error responses:

Error Description
[901]Session expired or Invalid ticket Invalid authentication ticket
[921]Insufficient rights User does not have permission to view another user's documents
User not found The specified username does not exist

Notes

Version History

See Also