PropertySync API

The PropertySync API has been designed to provide a robust environment for creating new integrations for searching, retrieving, editing and enhancing the documents and other information within your title workflow. If you have thoughts, comments or ideas for enhancements to our API, please reach out to us at: support@propertysync.com. We would love to hear from you!

Getting Started

Endpoint URLs

Base URLs for each endpoint may change depending upon the environment used. We deploy different URLs for development, staging and production environments as well as specific URLs on a per-client basis as needed to segregate traffic, geography or other specialized needs. All base URLs noted below must be assigned to an individual client as-needed.

Base URLs will typically follow the format below:

https://api.propertysync.com/v1

API calls follow basic REST format and are sent over HTTPS channels.

All requests should be sent using Content-Type: application/json

All API calls (other than login) require an authorization header to be sent using a bearer token HTTP header in the format of Bearer {token}. The bearer token can be retrieved from the Get Token URL and used for all subsequent calls to the API. Note that timeouts for each token may differ between endpoints, clients or document groups. You must retrieve a new token from this endpoint if your token expires or if you do not have sufficient privileges with the previously used token.

Authentication / Login

All API calls require an authorization header to be sent using a bearer token HTTP header in the format of Bearer {token}. The bearer token can be retrieved from a specific login URL and used for all subsequent calls to the API. Note that timeouts for each token may differ between endpoints, clients or document groups. You must retrieve a new token from this endpoint if your token expires or if you do not have sufficient privileges with the previously used token.

  • URL: https://api.propertysync.com/v1/login
  • Request Type: POST

Request Body:

{
  "email": "EMAIL",
  "password": "PASSWORD"
}

Response:

{
  "token": "xxxxx.yyyyy.zzzzz"
}

Document Groups

In traditional title search and storage systems, data is collected and organized into a title "plant". In the PropertySync system we use the term "document group" to define the collection of a set of documents.

This document group will have a specific UUID assigned to it and most or all of the requests you make will be working against a specific document group id. When you see a reference to {documentGroupId} below, this should be replaced with the UUID of the document group you are working with. Please reach out to PropertySync for information on your specific document group ids.

Document groups can be organized regionally, such as by state and county which is how most traditional systems work, but they can also be used to collect and organize documents in many other different fashions. Your implementation may store starter documents or other specialized documents into different collections that may or may not be associated to a specific region.

Get Document Group Details

You can retrieve information about a specific document group by making a GET request to the following endpoint:

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}
  • Request Type: GET

Response:

{
  "id": "5503311a-5586-49fc-8b00-ae29134870bc",
  "createdAt": "2019-11-05T21:43:08.000000Z",
  "updatedAt": "2021-09-21T22:28:03.000000Z",
  "plantEffectiveDate": "2019-06-17",
  "autoCompletesSource": "Indexing",
  "landValidationsSource": "Indexing",
  "name": "SamplePlant",
  "platInstrumentTypes": [
    "PLAT",
    "REPLAT"
  ],
  "importComplete": false
}

Managing Auto Completes

The API system provides basic management functionality for the various autocompletes within a given document group. This includes things such as available subdivision names, instrument types, book types, etc. When updating these items via the API, all other areas of the PropertySync system in indexing and search.

Retrieving All Values

You can retrieve a list of all available autocomplete types and values.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/auto-completes/
  • Request Type: GET

Response:

[
  {
    "id": "b840a625-d94a-4b2b-9c02-65b7758643ff",
    "type": "addition",
    "value": "RATHDRUM RIDGE"
  },
  {
    "id": "d785f7ec-5538-4674-8051-ae73392fc886",
    "type": "addition",
    "value": "FOXTAIL 3RD ADD"
  },
  {
    "id": "ac046f70-1a34-4f13-bb42-2d1211467c83",
    "type": "addition",
    "value": "ASHE ADD TO MARSING"
  }
]

You can filter this response by passing in potential filter values as url parameters. For example to filter these and only include instrumentTypes, you could pass a request as follows:

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/auto-completes/?type=instrumentType

Similarly, a request to only list additions:

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/auto-completes/?type=addition

Additionally, you can further search the list of matches by passing in a search parameter as shown below, which would return all additions matching the name 'someAddition':

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/auto-completes/?type=addition&search=someAddition

Managing Land Validations

Retrieving All Values

You can retrieve a list of all available land validation types and values.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/land-validations/
  • Request Type: GET

You can also append a type filter to only return validations of a certain type.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/land-validations/?type=subdivisionLegal

Running Searches

Searching Documents

Searching document groups allows you to retrieve a list of document groups that match your search parameters. All search parameters from the main PropertySync interface are supported. You must have access to the requested document group or plant for search queries to return. Legal and other criteria for the search will depend on configuration of the specific document collection or plant format. Please contact PropertySync support for a definition of supported search parameters for your specific document group.

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/searches
  • Request Type: POST

Request Body:

{
  "queryParams": {
    "recordingInfos": [
      {
        "bookType": "DEED",
        "book": "1",
        "page": "2",
        "instrumentType": "AFFIDAVIT",
        "instrumentNumber": "1",
        "dateFrom": "1999-05-05",
        "dateTo": "2020-12-25"
      }
    ],
    "parties": [
      {
        "partyName": "PARTY NAME",
        "granteeName": "GRANTEE NAME",
        "grantorName": "GRANTOR NAME",
        "soundexSearch": "1",
        "proximitySearch": "1"
      }
    ]
  }
}

Response:

{
  "id": "7f287d41-4c03-4e39-aa93-21e4d4facb99",
  "title": "Untitled"
}

By default, the search system will return matches to a search, along with any related documents results. Often, you may wish to restrict the return of relateds and only return matches. You can do so by passing in an additional parameter of excludeRelatedDocuments" => 1

{
  "queryParams": {
    "excludeRelatedDocuments": 1,
    "recordingInfos": [
      { ... }
    ]
  }
}

Search Parameters

Available search parameters for your document group are highly specific to the configuration of your group. These may change based on how the plant was originally keyed and/or how it is currently setup for search.Please be sure to reach out to PropertySync support for help developing a search plan for your integration.

Depending on this configuration, some common possible search parameters that may be passed into your queryParams are noted below.

{
  "exactLegalSearches": null,
  "excludeRelatedDocuments": null,
  "giOnly": null,
  "enableQueryBefore": null,
  "queryBefore": null,
  "orderName": null,
  "recordingInfos": [
    {
      "bookType": null,
      "book": null,
      "page": null,
      "instrumentType": null,
      "instrumentPage": null,
      "instrumentNumber": null,
      "dateFrom": null,
      "dateTo": null,
      "fileNumber": null,
      "caseNumber": null
    }
  ],
  "parties": [
    {
      "grantorName": null,
      "granteeName": null,
      "partyName": null,
      "phoneBookNames": null,
      "soundexSearch": null,
      "useNicknames": null,
      "proximitySearch": null
    }
  ],
  "acreages": [
    {
      "township": null,
      "range": null,
      "section": null,
      "quarter": null,
      "acreageComment": null,
      "govLot": null,
      "arb": null,
      "arbOrNull": null,
      "mineralSearch": null
    }
  ],
  "subdivisions": [
    {
      "lot": null,
      "block": null,
      "unit": null,
      "addition": null,
      "additionDictionarySelected": null,
      "additionDictionaryAvailable": null,
      "additionDisplayValue": null,
      "subdivisionComment": null,
      "claim": null,
      "miningSurvey": null,
      "arb": null,
      "mineralSearch": null
    }
  ],
  "marketSources": [
    {
      "marketSource": null,
      "minConsideration": null,
      "maxConsideration": null
    }
  ],
  "parcels": [
    {
      "parcelNumber": null
    }
  ],
  "addresses": [
    {
      "address": null,
      "city": null,
      "state": null,
      "zipCode": null
    }
  ],
  "legals": [
    {
      "fullTextLegal": null,
      "parcel": null
    }
  ],
  "cosSubdivisions": [
    {
      "lot": null,
      "block": null,
      "cos": null,
      "subdivisionComment": null
    }
  ],
  "estateLegals": [
    {
      "estate": null,
      "parcel": null,
      "quarter": null
    }
  ],
  "condoLegals": [
    {
      "condo": null,
      "unit": null,
      "building": null
    }
  ],
  "tags": [ ]
}
{
  "queryParams": {
    "excludeRelatedDocuments": "1",
    "recordingInfos": [
      {
        "book": "963",
        "page": "407"
      }
    ]
  }
}

{
  "queryParams": {
    "excludeRelatedDocuments": "1",
    "recordingInfos": [
      {
        "instrumentType": "STARTER"
      }
    ]
  }
}
{
  "queryParams": {
    "addresses": [
      {
        "address1": "1409",
        "address2": null,
        "city": null,
        "state": null,
        "zip_code": null
      }
    ]
  }
}

Search Example: Find by instrument type, exclude those with specific notes content

In the example below, you can see multiple search parameter values in the recordingInfos array being passed in. These are treated as an OR comparison, and items within the same object are treated as an AND comparison. For example, the below search would include documents where:

  • (instrumentType = "OTP" AND fileNumber= "40260308" AND "note" does not contain "sup", or "supplement" or "supplemental") OR WHERE
  • (instrumentType = "Owner's Title Policy" AND fileNumber= "40260308" AND "note" does not contain "sup", or "supplement" or "supplemental") OR WHERE
  • (instrumentType = "Commitment" AND fileNumber= "40260308" AND "note" does not contain "sup", or "supplement" or "supplemental")
{
  "queryParams": {
    "recordingInfos": [
      {
        "instrumentType": "OTP",
        "fileNumber": "40260308",
        "noteNotContains": [
          "sup",
          "supplement",
          "supplemental"
        ]
      },
      {
        "instrumentType": "Owner’s Title Policy",
        "fileNumber": "40260308",
        "noteNotContains": [
          "sup",
          "supplement",
          "supplemental"
        ]
      },
      {
        "instrumentType": "Commitment",
        "fileNumber": "40260308",
        "noteNotContains": [
          "sup",
          "supplement",
          "supplemental"
        ]
      }
    ]
  }
}

Retrieving Results

Once a search has been executed and the ID of the search returned above, you can use that ID to retrieve the results of the search.

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/searches/{searchId}/document-ids
  • Request Type: GET

Response:

[
  "a5d55eea-8335-11ea-8179-0242ac170002",
  "a5c5da74-8335-11ea-8179-0242ac170002"
]

Document Assets

Listing Document Assets

You can retrieve a list of available assets (commonly images) associated with a document. Each asset id can be used in a follow up call to retrieve a copy of that file directly.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/documents/{documentId}/assets
  • Request Type: GET

Response:

{
  "pdf": {
    "id": "1fdbd544-dea7-44b6-bc7a-71b920f83f40"
  },
  "raw": [
    {
      "id": "dc66a053-4c40-47d9-84f2-51ea5d2b29a3"
    }
  ]
}

Retrieve Document Asset

Using the asset ID returned in the document asset list, you can retrieve the file directly using the following call. The response content-type should be set to the relevant underlying mime type of the file. Retrieving the "raw" asset, will return a copy of the originally stored file or files, in whatever format they were originally stored in.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/documents/{documentId}/assets/{assetId}
  • Request Type: GET

Response:

<response will contain raw binary data for PDF>

Document Details

Specific documents can be retrieved using their document group id and document id as returned by the search request shown above. The format of the response will contain the raw index information as stored in PropertySync. This format will change depending on the structure and configuration of the specific document group or plant. The result below shows a sample generic legal format document.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/documents/{documentId}
  • Request Type: GET

Response:

{
  "id": "26dc1fa7-c23f-40b4-a0e7-69ec71f814c8",
  "json": {
    "tags": [],
    "flags": null,
    "(legalType)": [
      {
        "lot": [
          {
            "rangeMax": "29A",
            "rangeMin": "29A",
            "rangeAction": null,
            "rangePrecision": null
          }
        ],
        "half": null,
        "unit": [],
        "block": [],
        "range": null,
        "tract": null,
        "govLot": [],
        "acreage": null,
        "comment": null,
        "refPage": "0090C",
        "tags": [],
        "flags": null,
        "status": null,
        "company": null,
        "imageId": null,
        "related": [
          {
            "bookType": null,
            "bookNumber": null,
            "pageNumber": null,
            "instrumentType": null,
            "instrumentNumber": null
          },
          {
            "bookType": null,
            "bookNumber": null,
            "pageNumber": null,
            "instrumentType": null,
            "instrumentNumber": null
          }
        ],
        "bookType": null,
        "grantees": [
          {
            "nameLast": "NM UTILITIES INC",
            "nameType": null,
            "nameFirst": null,
            "nameMiddle": null
          }
        ],
        "grantors": [
          {
            "nameLast": "PARADISE GREENS LTP",
            "nameType": null,
            "nameFirst": null,
            "nameMiddle": null
          }
        ],
        "recordId": null,
        "filedDate": "1994-05-20",
        "filedTime": null,
        "uccNumber": null,
        "bookNumber": "94016",
        "caseNumber": null,
        "filmNumber": null,
        "loanNumber": null,
        "pageNumber": "2249",
        "recordType": null,
        "otherFields": null,
        "checkedOutBy": null,
        "marketSource": null,
        "orderOfCourt": null,
        "consideration": null,
        "instrumentDate": null,
        "instrumentType": "EASEMENT",
        "indexingRecordId": "1638415",
        "instrumentNumber": "1994067131",
        "section": null,
        "addition": "PARADISE NORTH",
        "platPage": "0182",
        "quarters": null,
        "township": null,
        "fileNumber": null,
        "platVolume": "0090C",
        "surveyName": null,
        "subdivision": null,
        "surveyBlock": null,
        "PatentVolume": null,
        "patentNumber": null,
        "surveySection": null,
        "abstractNumber": null,
        "legalDescription": null,
        "certificateNumber": null
      },
      {
        "lot": [
          {
            "rangeMax": "30A",
            "rangeMin": "30A",
            "rangeAction": null,
            "rangePrecision": null
          }
        ],
        "half": null,
        "unit": [],
        "block": [],
        "range": null,
        "tract": null,
        "govLot": [],
        "acreage": null,
        "comment": null,
        "refPage": "0090C",
        "section": null,
        "addition": "PARADISE NORTH",
        "platPage": "0182",
        "quarters": null,
        "township": null,
        "fileNumber": null,
        "platVolume": "0090C",
        "surveyName": null,
        "subdivision": null,
        "surveyBlock": null,
        "PatentVolume": null,
        "patentNumber": null,
        "surveySection": null,
        "abstractNumber": null,
        "legalDescription": null,
        "certificateNumber": null
      }
    ],
    "status": null,
    "comment": null,
    "company": null,
    "imageId": null,
    "related": [
      {
        "bookType": null,
        "bookNumber": null,
        "pageNumber": null,
        "instrumentType": null,
        "instrumentNumber": null
      },
      {
        "bookType": null,
        "bookNumber": null,
        "pageNumber": null,
        "instrumentType": null,
        "instrumentNumber": null
      }
    ],
    "bookType": null,
    "grantees": [
      {
        "nameLast": "NM UTILITIES INC",
        "nameType": null,
        "nameFirst": null,
        "nameMiddle": null
      }
    ],
    "grantors": [
      {
        "nameLast": "PARADISE GREENS LTP",
        "nameType": null,
        "nameFirst": null,
        "nameMiddle": null
      }
    ],
    "recordId": null,
    "filedDate": "1994-05-20",
    "filedTime": null,
    "uccNumber": null,
    "bookNumber": "94016",
    "caseNumber": null,
    "filmNumber": null,
    "loanNumber": null,
    "pageNumber": "2249",
    "recordType": null,
    "otherFields": null,
    "checkedOutBy": null,
    "marketSource": null,
    "orderOfCourt": null,
    "consideration": null,
    "instrumentDate": null,
    "instrumentType": "EASEMENT",
    "indexingRecordId": "1638415",
    "instrumentNumber": "1994067131"
  }
}

Managing Orders

Searches can be executed and grouped into an order, which is visible with a name and relevant search results within the portal platform. From the PropertySync portal users can re-open order search results and details for review or adjustment as well as run date down operations against the order. Because orders are specific to both the document group and the company, you must pass in a company ID to all order endpoints along with the relevant document group ID.

Creating An Order

Once a search is initiated, you can create an order to associate the search to by using the order creation endpoint. Note that once the order is created, new searches and relevant IDs matching the parameters of the original search are created to associate to the order.

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders
  • Request Type: POST

Request Body:

{
  "title": "Test Order",
  "searchID": "ecbc06e2-6069-47b3-bed4-44fbed06a27b"
}

Response:

{
  "id": "f3c00921-75f4-49a3-8934-082afdb6d913",
  "title": "TEST ORDER",
  "status": "open_no_watches",
  "createdAt": "2022-10-13 10:11:46",
  "updatedAt": "2022-10-13 10:11:46",
  "closedAt": null,
  "falloutUpdatedTo": null,
  "searches": [
    {
      "title": "Land Search",
      "id": "46b00ac2-c114-45ba-815d-f85a996a5213"
    }
  ]
}

Listing Orders

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders
  • Request Type: GET

Response:

[
  {
    "id": "46487337-7c5c-4eed-a858-9c14b408f320",
    "title": "TEST ORDER",
    "status": "open_no_watches",
    "createdAt": "2022-02-04 12:51:59",
    "updatedAt": "2022-10-13 01:17:35",
    "closedAt": null,
    "falloutUpdatedTo": "2022-10-13 01:17:35",
    "searches": null
  },
  {
    "id": "ab8a8592-cd72-4d6d-b8b1-1367ccfece01",
    "title": "ANOTHER TEST ORDER",
    "status": "open_no_watches",
    "createdAt": "2022-02-04 12:53:12",
    "updatedAt": "2022-10-13 01:17:35",
    "closedAt": null,
    "falloutUpdatedTo": "2022-10-13 01:17:35",
    "searches": null
  },
  {
    "id": "1133f182-935f-4aec-9982-25f86b8ef8ee",
    "title": "ROB ORDER",
    "status": "waiting_for_watches",
    "createdAt": "2021-10-11 11:34:20",
    "updatedAt": "2022-09-07 15:44:52",
    "closedAt": null,
    "falloutUpdatedTo": null,
    "searches": null
  }
]

Retrieving Order Details

Order details include all attached searches and their relevant tab groupings presented to the user. Search IDs from an order detail request can be used in all other areas of the API for actions such as batch creation or document ID listings.

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders
  • Request Type: GET

Response:

{
  "id": "f3c00921-75f4-49a3-8934-082afdb6d913",
  "title": "TEST ORDER FOR STARTERS",
  "status": "open_no_watches",
  "createdAt": "2022-10-13 10:11:46",
  "updatedAt": "2022-10-13 10:11:46",
  "closedAt": null,
  "falloutUpdatedTo": null,
  "searches": [
    {
      "title": "Land Search",
      "id": "46b00ac2-c114-45ba-815d-f85a996a5213"
    }
  ]
}

Adding Searches To An Order

You can append additional searches to your order by using the order search addition endpoint. First, generate a new searchID using the search creation endpoint. Then, use the order search addition endpoint to add the search to the order. You can optionally pass in a title for the search to be added to the order, which will be displayed as the tab name in the PropertySync portal.

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders/{orderId}
  • Request Type: PATCH

Request Body:

{
  "title": "Test Search",
  "searchID": "ecbc06e2-6069-47b3-bed4-44fbed06a27b"
}

Closing Orders

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders/{orderId}/close
  • Request Type: POST

Response:

{
  "id": "23756fd6-7269-4a4a-9883-6e7ddc9629a4",
  "title": "TEST ORDER",
  "status": "closed",
  "createdAt": "2022-03-14 16:04:14",
  "updatedAt": "2022-10-13 10:26:57",
  "closedAt": "2022-10-13 10:26:57",
  "falloutUpdatedTo": "2022-10-13 01:17:39",
  "searches": null
}

Reopening Orders

  • URL: https://api.propertysync.com/v1/search/document-groups/{documentGroupId}/companies/{companyId}/orders/{orderId}/re-open
  • Request Type: POST

Response:

{
  "id": "23756fd6-7269-4a4a-9883-6e7ddc9629a4",
  "title": "TEST ORDER",
  "status": "open_no_watches",
  "createdAt": "2022-03-14 16:04:14",
  "updatedAt": "2022-10-13 10:27:25",
  "closedAt": null,
  "falloutUpdatedTo": "2022-10-13 01:17:39",
  "searches": null
}


Editing Data

PropertySync provides robust document batching, editing and modification functionality in both the standard end-user interface as well as the API. The Indexing functionality allows deep integration to enhance workflow as well as data storage. You can enhance your data by adding new data elements from outside sources, clean existing data elements to provide more value to your researchers as well as create automated workflow for your internal or external keying teams.

Batches

Most indexing functions within the system use the concept of document batches. Document batches are simply temporary groups of documents used to help organize the documents to be processed. Typically these are used to collect documents into daily or weekly postings, but can be used for any other organizational function. Batches are segregated within the PropertySync indexing interface to simplify processing by indexing and QC staff.

Batch Creation

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/batches
  • Request Type: POST

Request Body:

{
  "name": "some-batch-name"
}

Optionally, you can pass in the ID of a previous search and the batch will be filled with documents matching that search.

{
  "name": "some-batch-name",
  "searchId": "031c0133-91d1-4ec9-b2ac-2f5e434b8d8b"
}

If a batch is successfully created, the system will return the ID of that batch, that can be used for subsequent calls working with that batch.

Response:

{
  "id": "7f287d41-4c03-4e39-aa93-21e4d4facb99"
}

Update Batch

You can edit an existing batch by sending a PATCH request to the following endpoint. If the batchID is valid, the system will modify the documents from the documents array, if it exists. You can use this to add new documents or change existing documents within a batch. The format sent follows the standard batch JSON format and also obeys the import rules for images by checking for an "imageUrl" tag at the document level. If an "imageUrl" is present, and that image is accessible from PropertySync, it will be imported to replace the image currently assigned to that document.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/batches/{batchId}
  • Request Type: PATCH

Request Body:

{
  "name": "some-other-batch-name",
  "documents": [
    ...
  ]
}

Get Batch Details

You can retreive details of a single batch by requesting by batch ID

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/batches/{batchId}
  • Request Type: GET

Response:

{
  "id": "7f287d41-4c03-4e39-aa93-21e4d4facb88",
  "documentGroupId": "328fd05b-ef80-469b-aaf9-c61facb41b96",
  "createdAt": "2022-05-02T19:45:57.000000Z",
  "updatedAt": "2022-05-02T19:45:57.000000Z",
  "name": "my-first-batch",
  "createdBy": "Rob Martinson",
  "lastModifiedBy": "Rob Martinson",
  "lastModifiedAt": "2022-05-02 19:49:42",
  "numOfDocs": 199,
  "numOfCompletedDocs": 15,
  "recordedDate": null,
  "rawFileGroupType": "9388501a-1ac4-4dd7-8a97-014747c042a6"
}

List Batches

You can retreive a list of batches and their details by using the batches endpoint as well.

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/batches
  • Request Type: GET

Response:

[
  {
    "id": "7f287d41-4c03-4e39-aa93-21e4d4facb88",
    "documentGroupId": "328fd05b-ef80-469b-aaf9-c61facb41b96",
    "createdAt": "2022-05-02T19:45:57.000000Z",
    "updatedAt": "2022-05-02T19:45:57.000000Z",
    "name": "my-first-batch",
    "createdBy": "Rob Martinson",
    "lastModifiedBy": "Rob Martinson",
    "lastModifiedAt": "2022-05-02 19:49:42",
    "numOfDocs": 199,
    "numOfCompletedDocs": 15,
    "recordedDate": null,
    "rawFileGroupType": "9388501a-1ac4-4dd7-8a97-014747c042a6"
  },
  {
    "id": "7f287d41-4c03-4e39-aa93-21e4d4facb99",
    "documentGroupId": "328fd05b-ef80-469b-aaf9-c61facb41b96",
    "createdAt": "2022-05-02T19:47:57.000000Z",
    "updatedAt": "2022-05-02T19:47:57.000000Z",
    "name": "some-other-batch-name",
    "createdBy": "Rob Martinson",
    "lastModifiedBy": "Rob Martinson",
    "lastModifiedAt": "2022-05-02 19:49:42",
    "numOfDocs": 283,
    "numOfCompletedDocs": 0,
    "recordedDate": null,
    "rawFileGroupType": "9388501a-1ac4-4dd7-8a97-014747c042a6"
  }
]

Delete Batch

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/batches/{batchId}
  • Request Type: DEL

By default, documents within a batch are stored in the indexing system and are not yet present in the live plant. To save the documents to the live plant, you must export the batch. Typically this would happen on a per-document basis while end-users are working within the PropertySync indexing system, but it can also be done in bulk using the following endpoint:

  • URL: https://api.propertysync.com/v1/indexing/document-groups/{documentGroupId}/queue-process-documents
  • Request Type: GET

Request Body:

{
  "exportTo": "propertySync",
  "batchId": "{batchId}"
}

Object Data Structures

All object data types within the PropertySync system use a simple JSON structure that is portable, easy to read and can be simply generated and manipulated in any operating system or environment. Batch structures follow a similar format, using a JSON array of the parent object data structure as the payload.

ID key and JSON payload

Most structures have a root object that contains an "id" element that is unique to that particular object within the PropertySync environment, as well as a "json" element that contains the payload with all other information. When you wish to create new elements within PropertySync (documents, auto completes, land validations or other data structures), you can omit the "id" element during your first import and it will be automatically generated by PropertySync. All subsequent calls to export those data structures will contain the "id" element and you can always use that key to reference the element in question specifically. If you pass in an existing "id" key, the PropertySync system will do its best to find a matching record within the system and document group you are working in, and will update the data with relevant information instead of creating a new record. If "id" is omitted, it will assume this is a new record.

{
  "id": "112ebfea-9762-43b3-8e64-2c5f834938f1",
  "json": { ... }
}

Document Structure

Document formats within the PropertySync system can vary slightly depending upon the structure of the document group. The PropertySync JSON document format provides a flexible method of storage allowing for variation between different areas of the country with different legal structures, different keying history and methods, as well as specialized information stored on a per-customer basis. During conversion or import, our team will help you determine the best format to use for the existing documents within your plant, or develop a new storage structure that captures all of the relevant information you want to store within your plant.

Document structure should remain common and compatible between different areas of the PropertySync system. That is, if you retrieve document details, you should be able to pass that same structure back into the system as an edit or a new document with the batch endpoint. Likewise the document structure should be similar within a batchfile.

Although fields may differ slightly from county to county and between different document types within the "json" element, the general container structure for a document object is as follows:

{
  "id": ".....",
  "json": {
    "tags": [
      "LOCATE",
      "VERIFY"
    ],
    "grantees": [
      {
        "nameLast": "SMITH",
        "nameType": null,
        "nameFirst": "JOHN",
        "nameMiddle": null
      }
    ],
    "grantors": [
      {
        "nameLast": "WHITE",
        "nameType": null,
        "nameFirst": "PAUL",
        "nameMiddle": null
      }
    ],
    "filedDate": "1994-05-20",
    "filedTime": null,
    "uccNumber": null,
    "bookNumber": "1234",
    "pageNumber": "2249",
    "instrumentType": "EASEMENT",
    "indexingRecordId": "987654321",
    "instrumentNumber": "123456789"
  }
}

ID and IndexingRecordId within document structures

If you are importing records from an outside system, as will often be the case during a conversion from an existing platform or if you have 3rd party keying companies using other software systems to generate your data, PropertySync provides facilities to ensure your system stays in sync.

The PropertySync system generates a unique "id" key for every element created that is unique across the entire system. You can store this record in your outside systems to ensure you are referencing an exact record within PropertySync. But, if your data was created in an external system, you won't know what that new "id" field will eventually be. In this case, you can pass in an "indexingRecordId" element to your documents and submit the ID of the record within your external system. The value you provide for the "indexingRecordId" key, must be unique within the document group. In the future, if you pass in an update to that document and you include the "indexingRecordId" and its value in your document payload, PropertySync will first search for a matching entry within that document group. If one is found, it will assume you are posting a new version of that document and will update the document with your submitted content rather than creating a new document. Note that the root "id" field from PropertySync will always take precedence if both elements are present in your payload.

Image Paths

When creating a new document in a batch, documents may also contain an image path in the "imageUrl" element as shown below. When an imageUrl is received, the PropertySync system will retrieve a copy of that image and associate it with the document index. The imageUrl must be an https endpoint and must allow access directly from the PropertySync system.

{
  "id": "....",
  "imageUrl": "https://www.somesite.com/somefolder/0001.tif",
  "json": { ... }
}

Document Batch Structure

Batches are made up of a batch file with an array of documents in the document element.

{
  "name": "Some test batch",
  "documents": [
    {
      "json": {
        "tags": [
          "LOCATE",
          "VERIFY"
        ],
        "grantees": [
          {
            "nameLast": "SITH",
            "nameType": null,
            "nameFirst": "JOHN",
            "nameMiddle": null
          }
        ],
        "grantors": [
          {
            "nameLast": "WHITE",
            "nameType": null,
            "nameFirst": "PAUL",
            "nameMiddle": null
          }
        ],
        "filedDate": "1994-05-20",
        "filedTime": null,
        "uccNumber": null,
        "bookNumber": "1234",
        "pageNumber": "2249",
        "instrumentType": "EASEMENT",
        "indexingRecordId": "987654321",
        "instrumentNumber": "123456789"
      }
    },
    {
      "json": {
        "tags": [
          "LOCATE",
          "VERIFY"
        ],
        "grantees": [
          {
            "nameLast": "SITH",
            "nameType": null,
            "nameFirst": "JOHN",
            "nameMiddle": null
          }
        ],
        "grantors": [
          {
            "nameLast": "WHITE",
            "nameType": null,
            "nameFirst": "PAUL",
            "nameMiddle": null
          }
        ],
        "filedDate": "1994-05-20",
        "filedTime": null,
        "uccNumber": null,
        "bookNumber": "1234",
        "pageNumber": "2249",
        "instrumentType": "EASEMENT",
        "indexingRecordId": "987654321",
        "instrumentNumber": "123456789"
      }
    }
  ]
}

In addition to the "imageUrl" available in the main document structure, you may pass in an "imageRoot" at the batch level, which will be prepended to all "imageUrl" elements for documents within that batch. This allows simple batch editing of different source locations for images.

{
  "name": "Some test batch",
  "imageRoot": "https://www.somesite.com/somefolder/my-image-root/",
  "documents": [
    {
      "imageUrl": "0001.tif",
      "json": { ... }
    },
    {
      "imageUrl": "subfolder/0002.tif",
      "json": { ... }
    }
  ]
}

Using the example above, the system would assume images would be available at the following URLs:

  • https://www.somesite.com/somefolder/my-image-root/0001.tif
  • https://www.somesite.com/somefolder/my-image-root/subfolder/0002.tif

Auto Complete Structure

Auto completes are the PropertySync elements used to describe multi-select key/value pairs or "quick picks". Auto completes are stored as a type and value within the PropertySync system as shown below and include types such as: addition, instrumentType, tags, marketSource, abstract and others. Auto completes can be managed within the PropertySync user interface, or via the API using structures outlined below.

{
  "type": "addition",
  "value": "MY SUBDIVISION NAME"
}

Auto Complete Batch Structure

To work with files of multiple auto completes, you can use structures following our other batch formats as follows:

{
  "autocompletes": [
    {
      "type": "addition",
      "value": "MY SUBDIVISION NAME"
    },
    {
      "type": "addition",
      "value": "MY SUBDIVISION NAME"
    },
    {
      "type": "addition",
      "value": "MY 3RD SUBDIVISION NAME"
    }
  ]
}

Land Validation Structure

{
  "id": "112ebfea-9762-43b3-8e64-2c5f834938f1",
  "json": {
    "addition": "HIGHLAND TRAILS JASON DEMO",
    "platValidation": [
      {
        "abstractName": null,
        "abstractNumber": null,
        "block": [
          {
            "rangeAction": null,
            "rangeMax": "1",
            "rangeMin": "1",
            "rangePrecision": null
          }
        ],
        "bookNumber": null,
        "bookType": null,
        "comment": null,
        "landFlags": null,
        "landType": null,
        "lot": [
          {
            "rangeAction": null,
            "rangeMax": "5",
            "rangeMin": "1",
            "rangePrecision": null
          }
        ],
        "pageNumber": null,
        "parcel": null,
        "pid": null,
        "previousArb": null,
        "previousParcel": null,
        "range": null,
        "recDate": null,
        "status": null,
        "subdivision": null,
        "township": null,
        "vacateDate": null
      },
      {
        "abstractName": null,
        "abstractNumber": null,
        "block": [
          {
            "rangeAction": null,
            "rangeMax": "2",
            "rangeMin": "2",
            "rangePrecision": null
          }
        ],
        "bookNumber": null,
        "bookType": null,
        "comment": null,
        "landFlags": null,
        "landType": null,
        "lot": [
          {
            "rangeAction": null,
            "rangeMax": "8",
            "rangeMin": "1",
            "rangePrecision": null
          }
        ],
        "pageNumber": null,
        "parcel": null,
        "pid": null,
        "previousArb": null,
        "previousParcel": null,
        "range": null,
        "recDate": null,
        "status": null,
        "subdivision": null,
        "township": null,
        "vacateDate": null
      }
    ]
  },
  "type": {
    "id": "f2026e30-fb26-408f-a4e6-6405b2643b7e",
    "name": "subdivisionLegal"
  }
}

Land Validation Batch Structure

Land validations can be grouped together for ease of import and export into a batch, similar to other records. The format and structure follows a similar outline as document batches and auto complete batches where the structure has a "landvalidations" element, which contains a JSON array of objects matching the structure of a land validation

{
  "landvalidations": [
    {
      "id": "112ebfea-9762-43b3-8e64-2c5f834938f1",
      "json": {
        "addition": "HIGHLAND TRAILS JASON DEMO",
        "platValidation": [
           { ... },
           { ... }
        ]
      },
      "type": {
        "id": "f2026e30-fb26-408f-a4e6-6405b2643b7e",
        "name": "subdivisionLegal"
      }
    },
    {
      "id": "112ebfea-9762-43b3-8e64-2c5f834938f2",
      "json": {
        "addition": "HIGHLAND TRAILS JASON DEMO 2",
        "platValidation": [
           { ... },
           { ... }
        ]
      },
      "type": {
        "id": "f2026e30-fb26-408f-a4e6-6405b2643b7e",
        "name": "subdivisionLegal"
      }
    }
  ]
}
Last Updated: