openapi: 3.0.3 info: title: CoreLogic Trestle Direct Web API — CRM Contacts Property API version: '1.0' description: The Direct Web API provides a direct, bidirectional OData connection to the Matrix MLS CRM database. Resources include Contacts, EmailHistory, Lists, PortalContents, SavedSearches, UserRegistry, and an aggregated DashboardAPI. Authentication is OpenID Connect via Clareity Single Sign-On or HTTP Basic. OData query options ($select, $expand, $orderby, $filter) apply throughout. contact: name: Trestle Support email: trestlesupport@cotality.com url: https://trestle-documentation.corelogic.com/direct-webapi-crm-reference.html license: name: Proprietary url: https://www.cotality.com/terms-of-use servers: - url: https://api.cotality.com/trestle/odata description: Direct Web API CRM production server security: - oidcClareity: [] - basicAuth: [] tags: - name: Property description: MLS property listings and detail records. paths: /Property: get: operationId: queryProperty summary: Query Property Records description: Returns Property records matching the supplied OData query options. Supports $filter, $select, $expand, $orderby, $top (max 1000, or 300000 for key-only), $skip, $count, $apply=groupby (max 10000), Replication=true for large datasets, and PrettyEnums=true. tags: - Property parameters: - $ref: '#/components/parameters/Filter' - $ref: '#/components/parameters/Select' - $ref: '#/components/parameters/Expand' - $ref: '#/components/parameters/OrderBy' - $ref: '#/components/parameters/Top' - $ref: '#/components/parameters/Skip' - $ref: '#/components/parameters/Count' - $ref: '#/components/parameters/Apply' - $ref: '#/components/parameters/Replication' - $ref: '#/components/parameters/PrettyEnums' responses: '200': description: OData collection of Property records. content: application/json: schema: $ref: '#/components/schemas/PropertyCollection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/QuotaExceeded' '500': $ref: '#/components/responses/ServerError' '504': $ref: '#/components/responses/GatewayTimeout' /Property({ListingKey}): get: operationId: getProperty summary: Get Property By ListingKey description: Returns a single Property record by ListingKey. tags: - Property parameters: - name: ListingKey in: path required: true schema: type: string description: The unique RESO ListingKey for the Property record. - $ref: '#/components/parameters/Select' - $ref: '#/components/parameters/Expand' responses: '200': description: A single Property record. content: application/json: schema: $ref: '#/components/schemas/Property' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: parameters: PrettyEnums: name: PrettyEnums in: query description: When true, returns human-readable enumeration values instead of internal codes. schema: type: boolean Apply: name: $apply in: query description: OData apply transformation (e.g. groupby) — max 10000 result rows. schema: type: string Top: name: $top in: query description: Maximum number of records to return. Default 10, maximum 1000 (300000 for key-only queries). schema: type: integer maximum: 300000 default: 10 OrderBy: name: $orderby in: query description: Comma-separated list of fields with optional asc / desc modifiers. schema: type: string Expand: name: $expand in: query description: Comma-separated list of related resources to inline-expand. schema: type: string Replication: name: Replication in: query description: When true, enables high-volume replication mode for datasets exceeding 1M rows. schema: type: boolean Filter: name: $filter in: query description: OData filter expression. Field names are case-sensitive and must match $metadata. schema: type: string Count: name: $count in: query description: When true, includes the total count of matching records in @odata.count. schema: type: boolean Select: name: $select in: query description: Comma-separated list of fields to return. schema: type: string Skip: name: $skip in: query description: Number of records to skip for pagination. schema: type: integer schemas: Error: type: object properties: error: type: object properties: code: type: string message: type: string PropertyCollection: type: object properties: '@odata.context': type: string '@odata.count': type: integer '@odata.nextLink': type: string value: type: array items: $ref: '#/components/schemas/Property' Property: type: object description: A RESO Data Dictionary 2.0 Property record. properties: ListingKey: type: string description: The unique key identifying the listing record. ListingId: type: string description: The MLS-issued listing number visible to consumers. StandardStatus: type: string description: RESO normalized listing status (Active, Pending, Closed, etc.). PropertyType: type: string description: RESO normalized property type (Residential, Land, Commercial, etc.). PropertySubType: type: string ListPrice: type: number format: double ClosePrice: type: number format: double BedroomsTotal: type: integer BathroomsTotalInteger: type: integer LivingArea: type: number format: double LotSizeArea: type: number format: double YearBuilt: type: integer StreetNumber: type: string StreetName: type: string StreetSuffix: type: string City: type: string StateOrProvince: type: string PostalCode: type: string Country: type: string Latitude: type: number format: double Longitude: type: number format: double ListAgentKey: type: string ListOfficeKey: type: string ModificationTimestamp: type: string format: date-time OriginatingSystemName: type: string UniversalParcelId: type: string description: RESO 2.0 Universal Parcel Identifier (UPI). CLIP: type: string description: CoreLogic machine-learning property identifier. responses: Unauthorized: description: Access token missing, expired, or invalid. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource record does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' GatewayTimeout: description: Upstream gateway timeout. content: application/json: schema: $ref: '#/components/schemas/Error' ServerError: description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Request was malformed or referenced an unknown field. content: application/json: schema: $ref: '#/components/schemas/Error' QuotaExceeded: description: Rate limit or quota exceeded. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: oidcClareity: type: openIdConnect openIdConnectUrl: https://api.cotality.com/trestle/oidc/.well-known/openid-configuration basicAuth: type: http scheme: basic