---
title: "Get audit logs for a sale"
method: GET
path: "/api/files/sales/{saleGuid}/auditLogs"
tags: ["Sales"]
---

# Get audit logs for a sale

`GET /api/files/sales/{saleGuid}/auditLogs`

<h2 id="overview">Overview</h2>
<p>Retrieves the complete audit trail for a sale, showing all activities, changes, and events that have occurred throughout its lifecycle.</p>
<h2 id="audit-log-information">Audit Log Information</h2>
<p>Each audit log entry includes:</p>
<ul>
<li><strong>Timestamp</strong>: When the activity occurred (ISO 8601 format with timezone)</li>
<li><strong>Activity Type</strong>: The type of action performed (e.g., 'Document Uploaded', 'Status Changed')</li>
<li><strong>Description</strong>: Detailed description of what happened (may include HTML formatting)</li>
<li><strong>User</strong>: Name of the user who performed the action</li>
<li><strong>Support User</strong>: If action was performed by support staff on behalf of user</li>
</ul>
<h2 id="common-activity-types">Common Activity Types</h2>
<li>Document uploads and removals</li>
<li>Status changes (Pre-contract, Under Contract, Pending, Closed, etc.)</li>
<li>Contact modifications (buyer, seller, agent changes)</li>
<li>Commission updates and splits</li>
<li>Property detail changes</li>
<li>Earnest money deposit tracking</li>
<li>Conversion from pre-contract to under contract</li>
<h2 id="filtering">Filtering</h2>
<li>Use <code>startDate</code> and <code>endDate</code> to filter by date range</li>
<li>Results are ordered by activity time (most recent first)</li>
<li>All matching audit logs are returned in a single response (consistent with existing SkySlope Prime behavior)</li>
<h2 id="authorization">Authorization</h2>
<li>User must have access to the sale to view its audit logs</li>
<li>Audit logs are filtered by subscriber to ensure data isolation</li>

### Validation & Requirements
#### Required Parameters
- `saleGuid` (path, string, format=guid)

#### Required JSON Body Fields
- None

#### Validations
- Invalid GUID values in `*Guid`/`*Guids` fields return `422 Unprocessable Entity`.
- Invalid date values in `*date*` fields return `422 Unprocessable Entity`.
- Missing required request body returns `422 Unprocessable Entity` with `Missing request body.`.
- Additional business-rule validation may return `422` with details in the `errors` array.

## Path parameters

- `saleGuid` string, guid, required

## Query parameters

- `startDate` string, date-time, nullable
- `endDate` string, date-time, nullable
- `includeEmailCommunication` boolean

## Response `200`

- LinkedResponseOfGetSaleAuditLogsResponse
  - `value` GetSaleAuditLogsResponse
    - `auditLogs` AuditLog[], nullable
      - `id` integer
      - `activityTime` string, date-time
      - `logTypeId` integer
      - `logType` string, nullable
      - `description` string, nullable
      - `user` string, nullable
      - `hasAttachment` boolean
      - `supportUser` string, nullable
      - `toId` integer, nullable
      - `to` string, nullable
  - `warnings` string[], nullable
  - `links` Link[], nullable
    - `href` string, nullable
    - `rel` string, nullable
    - `method` string, nullable

## Other responses

- `403`
- `404`
- `422`

---

[API](https://skmtc.net/skyslope/apis/skyslope-api.md) · [All operations](https://skmtc.net/skyslope/apis/skyslope-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skyslope/skyslope-api/revisions/bad0d2db9b7a/schema)
