Getting Started
*Please be advised that CoreLogic is switching the Trestle™ API URL to a new URL
Old: https://api-prod.corelogic.com
New: https://api-trestle.corelogic.com
The Old URL will continue to work until February 6th 2024.
https://api-trestle.corelogic.com
Introduction
Trestle’s RETS is based on and compliant with the RETS 1.8 specification and the RESO Data Dictionary standard. Although the RETS specification is no longer being updated by RESO, Trestle continues to provide data access via RETS for customers who do not wish to or cannot switch to WebAPI.
Libraries and Tools
RETS is a very mature protocol, and as such, there are many libraries and tools that you can use. The information provided on the rest of this page will help you get started if you've never used RETS before or if you're trying to modify an existing RETS client to work with Trestle.
CoreLogic offers RETS Connector as an easy tool to help you get up and running, pulling bulk RETS data easily and quickly.
Authentication
Trestle RETS offers two forms of authentication: basic authentication and OAuth2.
Trestle does NOT support digest authentication
Per RETS standard, Trestle provides a login endpoint. This endpoint provides some details in the returned data about the RETS service; however, Trestle is session-less, which means that you do not need to authenticate at the login endpoint before using the other RETS end points (Search, GetObject, etc.).
Basic
GET /trestle/odata/Property?$top=1000 HTTP/1.1
Host: api-trestle.corelogic.com
Authorization: Basic Y2xpZW50X2lkX2dvZXNfaGVyZTpjbGllbnRfc2VjcmV0X2dvZXNfaGVyZQ==
HttpClient client = new HttpClient();
var userpwd = Encoding.ASCII.GetBytes("client_id:client_secret");
client.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(userpwd));)
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials =
new UsernamePasswordCredentials("client_id", "client_secret");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient client = HttpClientBuilder.create()
.setDefaultCredentialsProvider(provider)
.build();
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, "client_id:client_secret");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
/trestle/rets/login
For most RETS clients, using basic authentication will be as simple as setting an option to use basic instead of digest authentication. For compatability purposes, you can still make a request to the login endpoint if needed.
OAuth2
/trestle/oidc/connect/token
Trestle also provides the ability to use RETS with an OAuth2 bearer token. This token is obtained in the same way as described for WebAPI. The only difference is that instead of passing api
for the scope
parameter, you will pass rets
.
If you pass scope=api
you will get a 400 Bad Request
error
Search
/trestle/rets/search
Searching Trestle via RETS is much like searching any other RETS provider. There are a couple of things to keep in mind. When browsing the RESO Metadata, note that the resource name is both the SearchType
and Class
in a RETS search, so a search for properties will require SearchType=Property&Class=Property
. Trestle does not segment properties by property type in RETS.
The other thing to keep in mind is that the default number of records returned is 10 and the maximum you can return in one query is 1,000 (Limit=1000
). We highly recommend using Limit=1000
to get the most records at once.