Square Deal Network API

Share property listing information in a blockchain through a HTTP-based REST API.

Published: January 31, 2025
Publisher:  Lesswing, LLC
Contact:    mark@lesswing.com
Copyright: ©2019-2025 Lesswing, LLC
Version:     0.9.7
License:    https://www.lesswing.com/squareDeal/public/mit_license.txt



Overview

The Square Deal Network is based on the principles of:
The underlying blockchain (Flow) is controlled by Smart Contracts that provide business rules.

Smart Contracts are written in the Cadence Programming Language and the cryptocurrency for the system is Flow. The API obly supports the following Smart Contracts:
Payments are made with cryptocurrency stored in the Participant account. Users are required to keep a sufficient balance of tokens in their account.

Integrating Square Deal into your website is made easier with this API because it uses uses common mechanism like HTTP and JSON. Your website connects Square Deal through a server generously hosted by BEI.RE. The server is a conduit to the network and does not store any information.

It is possible to build your own connection between a website and the blockchain using this API.




Access

Server Configuration


Host

https://square-deal.bei.re/
Port

80


Methods

Typical RESTful methods found in many popular APIs.

Accessing Information with GET

Creating Information with POST




Models

Structures

JSON-formatted collections of data elements.

Primitives

Single data elements.



Up
get /getAdvertisement
Retrieves a single-element array that contains an Residential Advertisement for the requested UniversalPropertyIdentifier.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


listingId UUID

The unique identifier for the Advertisement
sdnAddress Participant Address

The address of the entity that owns the listing.

Returns


[Array of Network Response] with a context of an [Array of Residential Advertisement]

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType": "GetAdvertisement",
  "system": "Square Deal Network",
  "subjectType": "Advertisement",
  "eventSubject": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
  "recorderType": "None",
  "eventRecorder": "None",
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Square Deal Network",
  "success":true,
  "context":
   [
    {
     "copyright":"©2019-2024 Lesswing, LLC",
     "payload":
      {
       "@reso.context": "urn:reso:metadata:2.0:resource:property",
       "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
       "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
       "BathroomsTotalInteger": "2",
       "BedroomsTotal": "3",
       "ListPrice": "$340,000",
       "LivingArea": "3,100",
       "SyndicationRemarks": "Rural retreat with access to services.",
       "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
       "Media":
        [
         {
          "MediaUrl": "https://tinyurl.com/4fs4bewd",
          "MediaType": "png",
          "ShortDescription" : "Street view",
         },
         {
          "MediaUrl": "https://tinyurl.com/5n9xxzs6",
          "MediaType": "png",
          "ShortDescription" : "Kitchen",
         }
        ]
      },
     "onMarket": true
    }
   ]
 }
]
    

HTTP Error Codes




Up
get /getListing
Return a single-element array that contains a Residential Listing for the requested Universal Property Identifier.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


listingId UUID

The unique dentifier for the Listing
sdnAddress Participant Address

The identifier of the entity that owns the listing.
requestorAddress Participant Address

The address requesting the information and is sent as an opaque to the Smart contract.
requestorRegistration UUID

The SDN Registration number of the requestor of the information.
requestorKey Key

The SDN key of the requestor of the information.

Returns


[Array of Network Response] with a context of an [Array of Residential Listing]

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType": "GetListing",
  "system": "Square Deal Network",
  "subjectType": "Listing",
  "eventSubject": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
  "recorderType": "Owner Representative",
  "eventRecorder": "0x41f87751e7dec89f",
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Square Deal Network",
  "success":true,
  "context":
   [
    {
     "copyright":"©2019-2024 Lesswing, LLC",
     "payload":
      {
       "@reso.context": "urn:reso:metadata:2.0:resource:property",
       "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
       "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
       "BathroomsTotalInteger": "2",
       "BedroomsTotal": "3",
       "ListPrice": "$340,000",
       "LivingArea": "3,100",
       "SyndicationRemarks": "Rural retreat with access to services.",
       "Country": "CA",
       "StateOrProvince": "YT",
       "City": "Dawson City",
       "PostalCode": "Y0B 1G0",
       "StreetName": "Bayshore Rd",
       "StreetNumber": "1803",
       "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
       "ShowingInstructions": "Dog in the backyard is territorial.",
       "AccessCodes": "678678678",
       "OccupantType": "Vacant",
       "Appliances": 
        [ 
         "Refrigerator", 
         "Dish Washer", 
         "Gas Cooktop", 
         "Double Oven", 
         "Water Softener", 
         "Wine Cooler"
        ],
       "Interior Features": 
        [ 
         "Beamed Ceilings",
         "Granite Counters",
         "Open Floorplan"
        ],
       "Consessions": "Y",
       "ConsessionsComments": "$1,000 towards new roof",
       "Furnished": "Negotiable",
       "PreviousListPrice": "$349,500",
       "Inclusions": "Yard Tractor",
       "Fencing": 
        [ 
         "Invisible",
         "Chain Link"
        ],
       "LaundryFeatures": 
        [ 
         "Main Level", 
         "Gas Dryer Hookup",
         "Washer Hookup"
        ],
       "ParkingFeatures": 
        [
         "Garage", 
         "Workshop in Garage"
        ],
       "AttachedGarageYN": "Y",
       "GarageSpaces": "3",
       "HomeWarrantyYN": "Y",
       "StandardStatus": "Active",
       "PropertyType": "Residential",
       "Heating": 
        [
         "Forced Air", 
         "Radiant Floor"
        ],
       "HeatingYN": "Y",
       "Levels": "Two",
       "ExteriorFeatures": 
        [
         "Garden", 
         "Gas Grill", 
         "RainGutters"
        ],
       "PropertyRooms":
        [
         {
          "RoomType": "Master Bedroom",
          "RoomDimensions": "20x20",
          "RoomFeatures":
           [ 
            "Walk-in Closet(s)", 
            "Crown Moulding"
           ]
         },
         {
          "RoomType":"Kitchen",
          "RoomDimensions":"20x30",
          "RoomFeatures":
           [
            "Kitchen Island", 
            "Pantry", 
            "Granite Counters"
           ]
         }
        ],
       "Media":
        [
         {
          "MediaUrl": "https://tinyurl.com/4fs4bewd",
          "MediaType": "png",
          "ShortDescription" : "Street view",
         },
         {
          "MediaUrl": "https://tinyurl.com/5n9xxzs6",
          "MediaType": "png",
          "ShortDescription" : "Kitchen",
         },
        ],
      },
     "beneficiaryReserve": .0002,
     "beneficiary":
      [
       {
        "participant": "0x32f87751e3dec86b",
        "firstName": "Carol",
        "lastName": "Goodthought",
        "organization": "Mid-Valley Abuse Shelter",
        "mobile": "888.555.1212",
        "email": "carol@nowhere.com",
        "role": "Beneficiary",
        "verifyTimestamp": "2023-12-10T19:22:02Z"  
       }
      ],
     "onMarket": true
    }
   ]
 }
]
    

HTTP Error Codes




Up
get /getParticipant
Return a single-element array that contains a Network Participant for the requested participant.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


participant Participant Address

The identifier of the participant being requested. If this is the same as the requestor field, it is a self-lookup.
requestor Participant Address

The identifier of the entity requesting the information and is sent as an opaque to the Smart contract.

Returns


[Array of Network Response] with a context of an [Array of Network Participant]

Content-Type: application/json

[ 
 {
  "eventType": "GetParticipant",
  "system": "Square Deal Network",
  "subjectType": "Participant",
  "eventSubject": "0x41f87751e7dec89f",
  "recorderType": "Square Deal Network",
  "eventRecorder": [ WALLET ADDRESS ALREADY IN THE SYSTEM ],
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Square Deal Network",
  "success":true,
  "context":
   [
    {
     "copyright":"©2019-2024 Lesswing, LLC",
     "payload":
     {
      "participant": "0x41f87751e7dec89f",
      "firstName": "Joe",
      "lastName": "Schmoe",
      "organization": "Scarab Properties",
      "mobile": "888.555.1212",
      "email": "joe@schmoe.com",
      "role": "Owner Representative",
      "verifyTimestamp": "2023-12-10T19:22:02Z" 
     }
    }
   ]
 } 
]
      

HTTP Error Codes




Up
get /getDirectory
Return a map of participant addresses to corresponding SDN Registrations.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


directoryAddress Participant Address

The identifier of the directory being requested.

Returns


[Array of Network Response] with a context of a [Map of Participant Address] to UUID]. The address field refers to the Participant and the UUID represents the SDN Registration.

Content-Type: application/json

[
 {
  "eventType":"getDirectory",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Directory",
  "eventSubject":"0xbaca14fc19d8e62a",
  "recorderType":"System",
  "eventRecorder":"Anonymous",
  "timestamp":"2024-01-20T16:27:03Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   {
    '0xfc14e95ae4a76291': '2e231237-f615-44de-8fbc-43ea2335ab87',
    '0xa2215a1aaa18c0f8': '62aabaf8-b262-4170-8ec5-71cb22ae781d',
    '0x1550bdd4d720e900': 'a2fb330b-ebfc-4460-aa6d-18f735fc4cf5',
    '0x85675aca2cb33e07': '51b9fc32-a7a1-4569-ae3a-73762b06a5f2',
    '0x4e3750526930d2d7': '31d20278-9726-4f18-a0c3-ef5cc6836053',
    '0x4f52160150a6e871': '9b1e7d50-be1d-4e88-b2b6-4bf299b8dc22',
    '0x50546e24eaccec74': 'cc564350-48a8-4bdb-9934-12122cc1a202',
    '0x8c064baf4dd66994': '8c6096ba-7cf2-4e90-b765-2412d97a22a4',
    '0x5b38b46dee63b46f': '647bb931-c9cc-4328-9a58-48d6afc50b5c'
   }
 }
]

      

HTTP Error Codes




Up
get /getListings
Return an array that contains listings for a participant.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


sdnAddress Participant Address

The identifier of account being requested.

Returns


[Array of Network Response] with a context of an [Array of UUID]. The values refer to Listing identifiers.

Content-Type: application/json

[
 {
  "eventType":"getListings",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Directory",
  "eventSubject":"0xbaca14fc19d8e62a",
  "recorderType":"System",
  "eventRecorder":"Anonymous",
  "timestamp":"2024-01-20T16:27:03Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   [
    "e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
    "51b9fc32-a7a1-4569-ae3a-73762b06a5f2",
   ]
 }
]

      

HTTP Error Codes




Up
get /getParticipants
Return an array that contains addresses of participants.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


directoryAddress Participant Address

The identifier of the directory being requested.

Returns


[Array of Network Response] with a context of an [Array of Participant Address]. The address values refer to Participants.

Content-Type: application/json

[
 {
  "eventType":"getParicipants",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Directory",
  "eventSubject":"0xbaca14fc19d8e62a",
  "recorderType":"System",
  "eventRecorder":"Anonymous",
  "timestamp":"2024-01-20T16:27:03Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   [
    "0xfc14e95ae4a76291",
    "0xa2215a1aaa18c0f8",
    "0x1550bdd4d720e900",
    "0x85675aca2cb33e07",
    "0x4e3750526930d2d7",
    "0x4f52160150a6e871",
    "0x50546e24eaccec74",
    "0x8c064baf4dd66994",
    "0x5b38b46dee63b46f"
   ]
 }
]

      

HTTP Error Codes




Up
get /getPublicFields
Return an array that contains the fileds that the participant has configured to be public.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


participant Participant Address

The identifier of the participant being requested. If this is the same as the requestor field, it is a self-lookup.

Returns


[Array of Network Response] with a context of an [Array of String]

Content-Type: application/json

[ 
 {
  "eventType": "GetPublicFields",
  "system": "Square Deal Network",
  "subjectType": "Participant",
  "eventSubject": "0x6147d415c20233f4",
  "recorderType": "System",
  "eventRecorder": Anonymous,
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Square Deal Network",
  "success":true,
  "context":
   [
    "ListingId",
    "BathroomsTotalInteger",
    "BedroomsTotal",
    "ListPrice",
    "UnparsedAddress"
   ]
 } 
]
      

HTTP Error Codes




Up
get /lookupListing
Return a HTML page to collect the requestor's purchasing key.
All query parameter values must be URLEncoded to allow them to be passed to the server as part of a valid URL.

Query parameters


listingId UUID

The unique dentifier for the Listing
sdnAddress Participant Address

The identifier of the entity that owns the listing.
requestorAddress Participant Address

The address requesting the information and is sent as an opaque to the Smart contract.
requestorRegistration UUID

The SDN Registration number of the requestor of the information.

Returns


HTML page to collect the requestor's key.

Content-Type: text/html

HTTP Error Codes




Up
post /addBeneficiary
Add a beneficiaty to an existing ResidentialListing in the Square Deal Network.
A listing with the same Universal Property Identifier must already exists. The same result can be achieved by replacing the listing with /addListing and specifying the full list of benefactors.

Consumes


[Array of Add Beneficiary Request] with a context of an [Array of Participant Address]
The payload must be URLEncoded to allow it to be passed to the server over HTTP.

Follow the documentation for Add Beneficiary Request with the following notes:
  1. context [Array of Participant Address]

    Each address is a beneficiary to add to the existing list of beneficiaries for the listing.
  2. requestor Participant Address

    The address of the requestor submitting the information. Ownership is assigned based on the value. The value is sent as an opaque to the Smart contract and returned as eventRecorder in the response.
  3. UniversalPropertyId UPI

    The RESO Universal Property Identifier for this listing must be part to the .
  4. recorderType String (optional)

    The business function of the entity submitting the information. Default is "Anonymous Contributor".
  5. system String (optional)

    The business function of the system used to create the information. Default is "Unidentified".
  6. application String (optional)

    The name of the computer software used to create the information. Default is "Unidentified".
Content-Type: application/json

[
 {
  "eventType": "AddBeneficiary",
  "system": "Broker Front Office",
  "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:"
  "recorderType": "Owner Representative",
  "requestor": "0x41f87751e7dec89f",
  "application": "Listing Creator Application",
  "context":
   [
     "0x75f87751e3bca34f"
   ]
 }
]
    

Returns


[Array of Network Response] with a context of [Array of Residential Listing]

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType": "AddBeneficiary",
  "system": "Broker Front Office",
  "subjectType": "Listing",
  "eventSubject": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
  "recorderType": "Owner Representative",
  "eventRecorder": "0x41f87751e7dec89f",
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Listing Creator Application",
  "success":true,
  "context":
   [
    {
     "copyright":"©2019-2024 Lesswing, LLC",
     "payload":
      {
       "@reso.context": "urn:reso:metadata:2.0:resource:property",
       "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
       "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
       "BathroomsTotalInteger": "2",
       "BedroomsTotal": "3",
       "ListPrice": "$340,000",
       "LivingArea": "3,100",
       "SyndicationRemarks": "Rural retreat with access to services.",
       "Country": "CA",
       "StateOrProvince": "YT",
       "City": "Dawson City",
       "PostalCode": "Y0B 1G0",
       "StreetName": "Bayshore Rd",
       "StreetNumber": "1803",
       "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
       "ShowingInstructions": "Dog in the backyard is territorial.",
       "AccessCodes": "678678678",
       "OccupantType": "Vacant",
       "Appliances": 
        [ 
         "Refrigerator", 
         "Dish Washer", 
         "Gas Cooktop", 
         "Double Oven", 
         "Water Softener", 
         "Wine Cooler"
        ],
       "Interior Features": 
        [ 
         "Beamed Ceilings",
         "Granite Counters",
         "Open Floorplan"
        ],
       "Consessions": "Y",
       "ConsessionsComments": "$1,000 towards new roof",
       "Furnished": "Negotiable",
       "PreviousListPrice": "$349,500",
       "Inclusions": "Yard Tractor",
       "Fencing": 
        [ 
         "Invisible",
         "Chain Link"
        ],
       "LaundryFeatures": 
        [ 
         "Main Level", 
         "Gas Dryer Hookup",
         "Washer Hookup"
        ],
       "ParkingFeatures": 
        [
         "Garage", 
         "Workshop in Garage"
        ],
       "AttachedGarageYN": "Y",
       "GarageSpaces": "3",
       "HomeWarrantyYN": "Y",
       "StandardStatus": "Active",
       "PropertyType": "Residential",
       "Heating": 
        [
         "Forced Air", 
         "Radiant Floor"
        ],
       "HeatingYN": "Y",
       "Levels": "Two",
       "ExteriorFeatures": 
        [
         "Garden", 
         "Gas Grill", 
         "RainGutters"
        ],
       "PropertyRooms":
        [
         {
          "RoomType": "Master Bedroom",
          "RoomDimensions": "20x20",
          "RoomFeatures":
           [ 
            "Walk-in Closet(s)", 
            "Crown Moulding"
           ]
         },
         {
          "RoomType":"Kitchen",
          "RoomDimensions":"20x30",
          "RoomFeatures":
           [
            "Kitchen Island", 
            "Pantry", 
            "Granite Counters"
           ]
         }
        ],
       "Media":
       [ 
        {
         "MediaUrl": "https://tinyurl.com/4fs4bewd",
         "MediaType": "png",
         "ShortDescription" : "Street view",
        },
        {
         "MediaUrl": "https://tinyurl.com/5n9xxzs6",
         "MediaType": "png",
         "ShortDescription" : "Kitchen",
        }
       ]
      },
     "beneficiaryReserve": .0002,
     "beneficiary":
      [
       {
        "participant": "0x32f87751e3dec86b",
        "firstName": "Carol",
        "lastName": "Goodthought",
        "organization": "Mid-Valley Abuse Shelter",
        "mobile": "888.555.1212",
        "email": "carol@nowhere.com",
        "role": "Beneficiary",
        "verifyTimestamp": "2023-12-10T19:22:02Z"
       },
       {
        "participant": "0x75f87751e3bca34f",
        "firstName": "Jake",
        "lastName": "Platinum",
        "organization": "County Homes for Vets",
        "mobile": "888.555.1212",
        "email": "jake@nowhere.com"
        "role": "Beneficiary",
        "verifyTimestamp": "2023-12-10T19:22:02Z"
       }
      ],
     "onMarket": true
    }
   ]
 }
]
    

HTTP Error Codes




Up
post /addListener
Receive PUSH events from the Square Deal Network
The URL to receive JSON-encoded events from the blockchain via HTTTP POST for SDN_DirectoryParticipant, SDN_ParticipantListing and RESO RCP-027 Event events.

Consumes


The payload must be URLEncoded to allow it to be passed to the server over HTTP.
  1. sdnAddress Participant Address

    The address of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned as eventRecorder field of the response.
  2. sdnRegistration UUID

    The SDN Registration number of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned in the recorderType field of the response.
  3. sdnKey Key

    The SDN key of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and not returned in the response.
  4. context [Array of Network Listener]

    Each array entry is a listener configuration that is executed as an independent unit. If you have seperate webhooks listening or Public, Private and RESO events, the context would have three seperate configurations.
The configuration of a Network Listener has the following fields:
  1. scope String

    The options and the events they represent are:

  2. url URL

    The URL to receive JSON-encoded events from the blockchain via HTTTP POST.
  3. reference String

    An opaque string that will be included in each event. It can be used to identify multiple clients in a single shared webhook. Each client should be identified in a seperate configuration to allow the same event to sent with seperate references.
  4. mode String

    The modes are:


    If no mode is specified, all events will be sent to the webhook.
  5. ids [Array of String]

    A specific Listing or Participant is identified by a UUID. This array is a string representation of this identifier.
    
    [
      '2e3a3c5b-1488-4813-8c5b-9f932fbac8ac',
      '2e3a3c5b-1488-4813-8c5b-9f932fbac8bc'
    ]
        

This is an example of a listener that has six hook configurations:

{
  sdnAddress: '0x5ab98dd26e3d69b7',
  sdnRegistration: '2bdd1200-7972-4874-9f82-5458aa35c1e6',
  sdnKey: 'd98d08730b21bc76b1978760a8af55c5a0a622e87f66fa7a224a94e724d63467',
  hookConfig: [
    {
      scope: 'PUBLIC',
      url: 'http://localhost:8081/captureEvent',
      reference: 'Client Portfolio #35',
      subject: 'Listing'
    },
    {
      scope: 'PRIVATE',
      url: 'http://localhost:8083/captureEvent',
      reference: 'Client Portfolio #33'
    },
    {
      scope: 'PRIVATE',
      url: 'http://localhost:8083/captureEvent',
      reference: 'Client Portfolio #12'
    },
    {
      scope: 'PUBLIC',
      url: 'http://localhost:8081/captureEvent',
      reference: 'Client Portfolio #14',
      mode: 'ONLY-NEW'
    },
    {
      scope: 'PUBLIC',
      url: 'http://localhost:8081/captureEvent',
      reference: 'Client Portfolio #8',
      mode: 'SPECIFIC',
      ids: [
        '2e3a3c5b-1488-4813-8c5b-9f932fbac8ac',
        '2e3a3c5b-1488-4813-8c5b-9f932fbac8bc'
      ]
    },
    { scope: 'RESO', url: 'http://localhost:8081/captureEvent' }
  ]
}
    

Here is a breakdown of the six examples:
  1. New and updated Listings with the reference "Client Portfolio #35"
  2. Participant and Listing accesses with the reference "Client Portfolio #33"
  3. Participant and Listing accesses with the reference "Client Portfolio #12"
  4. New Listings with the reference "Client Portfolio #14"
  5. Specific Listings with the reference "Client Portfolio #8"
  6. RESO events

Returns


[Array of Network Response] with a context of an [Array of Network Listener]

Content-Type: application/json

[
 {
  "eventType":"AddListener",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Listener",
  "eventSubject":"0x6147d415c20233f4",
  "recorderType":"Owner Representative",
  "eventRecorder":"0x6147d415c20233f4",
  "timestamp":"2024-01-27T15:34:28Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   [
     {
       scope: 'PUBLIC',
       url: 'http://localhost:8081/captureEvent',
       reference: 'Client Portfolio #35',
       subject: 'Listing'
     },
     {
       scope: 'PRIVATE',
       url: 'http://localhost:8083/captureEvent',
       reference: 'Client Portfolio #33'
     },
     {
       scope: 'PRIVATE',
       url: 'http://localhost:8083/captureEvent',
       reference: 'Client Portfolio #12'
     },
     {
       scope: 'PUBLIC',
       url: 'http://localhost:8081/captureEvent',
       reference: 'Client Portfolio #14',
       mode: 'onlyNew'
     },
     {
       scope: 'PUBLIC',
       url: 'http://localhost:8081/captureEvent',
       reference: 'Client Portfolio #8',
       mode: 'specific',
       ids: [
         '2e3a3c5b-1488-4813-8c5b-9f932fbac8ac',
         '2e3a3c5b-1488-4813-8c5b-9f932fbac8bc'
       ]
     },
     { scope: 'RESO', url: 'http://localhost:8081/captureEvent' }
   ]
 }
]
      

A JSON-encoded stucture for the event is sent to the URL as detailed in the `Event` sections below.

headers:

{
 Accept: 'application/json, text/plain, */*',
 'Content-Type': 'application/json',
 'User-Agent': 'axios/0.22.0',
 'Content-Length': 122
}
      

Event Example - RESO RCP-027 Event:

{
 "EntityEventSequence":1706369090000,
 "ResourceName":"Property",
 "ResourceRecordKey":"2e3a3c5b-1488-4813-8c5b-9f932fbac8ec"
}
      

Event Example - Public SDN Event:

{
  eventType: 'SDN-AddListing',
  system: 'Square Deal Network',
  subjectType: 'Listing',
  eventSubject: '2e3a3c5b-1488-4813-8c5b-9f932fbac8ec',
  recorderType: 'SDN Participant',
  eventRecorder: '0x6147d415c20233f4',
  timestamp: '2024-01-26T23:14:14Z',
  sequence: 1706310854000,
  version: '1.7',
  application: 'SquareDealNetworkParticipant001',
  context: {
    remark: 'This is one to see',
    onMarket: true,
    ListingId: '2e3a3c5b-1488-4813-8c5b-9f932fbac8ec',
    UniversalPropertyId: 'US-17089-66716-0920177002-R-N',
    sdnParticipantAddress: '0x6147d415c20233f4',
    sdnParticipantContract: 'SquareDealNetworkParticipant001',
    sdnParticipantRegistration: 'cebbdd57-12f7-4879-bf6e-a2b60a8d66a1',
    reference: 'Client Portfolio #14'
  }
}
      

Event Example - Private SDN Event:

{
  eventType: 'SDN-GetListing',
  system: 'Square Deal Network',
  subjectType: 'Listing',
  eventSubject: '2e3a3c5b-1488-4813-8c5b-9f932fbac8ec',
  recorderType: 'SDN Participant',
  eventRecorder: '0x5ab98dd26e3d69b7',
  timestamp: '2024-03-18T11:17:44Z',
  sequence: 1710760664000,
  version: '1.7',
  application: 'SquareDealNetworkParticipant001',
  context: {
    ListingId: '2e3a3c5b-1488-4813-8c5b-9f932fbac8ec',
    blockTimestamp: '2024-03-18T11:17:46Z',
    requestorAddress: '0xa6357ae9cc074fba',
    requestorRegistration: '487281fb-9d98-4b56-9921-d4a2961e8a76',
    sdnParticipantAddress: '0x5ab98dd26e3d69b7',
    sdnParticipantContract: 'SquareDealNetworkParticipant001',
    sdnParticipantRegistration: '2bdd1200-7972-4874-9f82-5458aa35c1e6',
    reference: 'Client Portfolio #33'
  }
}
      

HTTP Error Codes




Up
post /addListing
Add a ResidentialListing to the Square Deal Network.
If a listing with the same ListingId already exists, it is replaced if it was created by the same requestor. To update the listing, run the /addListing with updated values.

Consumes


Add Listing Request with a context of an [Array of Residential Listing]. If an [Array of Add Listing Request] is passed, only the first element will be used.
The unique identifier for the listing is the ListingId field in the Residential Listing.

Follow the documentation for Add Listing Request with the following notes:
  1. context [Array of Residential Listing]

    The payload field of the Residential Listing is a Full Listing formatted as RESO Common Data Format (JSON) and URLEncoded.

    The onMarket Boolean fields must be populated and is required within the payload. This allows a listing to be made available to the market upon entry. If the value is false, then the listing can be activated later.

    The following fields must be populated and are required within the payload because they are used to authenticate the payload by recreating the UniversalPropertyId when the listing is submitted:
    1. UniversalPropertyId UPI

      The RESO Universal Property Identifier to associate with this listing.
    2. ListingId UUID

      The owner-assigned identifier for this listing. The value is returned as eventSubject in the envelope for use in future requests and is used by the getAdvertisement and /getListing methods.
    3. ParcelNumber String

      The government-assigned identifier to associate with this listing.
    4. UnparsedAddress String

      The postal identifier to associate with this listing.
    5. PropertyType String

      The property classification for listing.

    The following fields are optional parts of the payload:
    1. beneficiary [Array of Participant Address] (optional)

      The address of the beneficiary for fee sharing. Ownership is assigned based on the value. The value(s) is sent as an opaque to the Smart contract. If no beneficiaries are specified then the beneficiaryReserve is ignored.
    2. beneficiaryReserve Network Units (optional)

      The number of units to reserve for beneficiaries that is divided equally if more than one beneficiaries are attached to the listing. The value is sent as an opaque to the Smart contract. Default is 0.
  2. sdnAddress Participant Address

    The address of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned as eventRecorder field of the response.
  3. sdnRegistration UUID

    The SDN Registration number of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned in the recorderType field of the response.
  4. sdnKey Key

    The SDN key of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and not returned in the response.
  5. system String (optional)

    The business function of the system used to create the information. Default is "Unidentified".
  6. application String (optional)

    The name of the computer software used to create the information. Default is "Unidentified".
Content-Type: application/json

{
 "eventType": "AddListing",
 "system": "Broker Front Office",
 "sdnAddress": "0x41f87751e7dec89f",
 "sdnRegistration": "cb8e4cf2-112e-4a68-89d2-e4248597c732",
 "sdnKey": "f8e188e8af0b8b414be59c4a1a15cc666c898fb34d94156e9b51e18bfde754a5",
 "application": "Listing Creator Application",
 "context":
  [
   {
    "copyright":"©2019-2024 Lesswing, LLC",
    "payload":
     {
      "@reso.context": "urn:reso:metadata:2.0:resource:property",
      "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
      "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
      "BathroomsTotalInteger": "2",
      "BedroomsTotal": "3",
      "ListPrice": "$340,000",
      "LivingArea": "3,100",
      "SyndicationRemarks": "Rural retreat with access to services.",
      "Country": "CA",
      "StateOrProvince": "YT",
      "City": "Dawson City",
      "PostalCode": "Y0B 1G0",
      "StreetName": "Bayshore Rd",
      "StreetNumber": "1803",
      "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
      "ShowingInstructions": "Dog in the backyard is territorial.",
      "AccessCodes": "678678678",
      "OccupantType": "Vacant",
      "Appliances": 
       [ 
        "Refrigerator", 
        "Dish Washer", 
        "Gas Cooktop", 
        "Double Oven", 
        "Water Softener", 
        "Wine Cooler"
       ],
      "Interior Features": 
       [ 
        "Beamed Ceilings",
        "Granite Counters",
        "Open Floorplan"
       ],
      "Consessions": "Y",
      "ConsessionsComments": "$1,000 towards new roof",
      "Furnished": "Negotiable",
      "PreviousListPrice": "$349,500",
      "Inclusions": "Yard Tractor",
      "Fencing": 
       [ 
        "Invisible",
        "Chain Link"
       ],
      "LaundryFeatures": 
       [ 
        "Main Level", 
        "Gas Dryer Hookup",
        "Washer Hookup"
       ],
      "ParkingFeatures": 
       [
        "Garage", 
        "Workshop in Garage"
       ],
      "AttachedGarageYN": "Y",
      "GarageSpaces": "3",
      "HomeWarrantyYN": "Y",
      "StandardStatus": "Active",
      "PropertyType": "Residential",
      "Heating": 
       [
        "Forced Air", 
        "Radiant Floor"
       ],
      "HeatingYN": "Y",
      "Levels": "Two",
      "ExteriorFeatures": 
       [
        "Garden", 
        "Gas Grill", 
        "RainGutters"
       ],
      "PropertyRooms":
       [
        {
         "RoomType": "Master Bedroom",
         "RoomDimensions": "20x20",
         "RoomFeatures":
          [ 
           "Walk-in Closet(s)", 
           "Crown Moulding"
          ]
        },
        {
         "RoomType":"Kitchen",
         "RoomDimensions":"20x30",
         "RoomFeatures":
          [
           "Kitchen Island", 
           "Pantry", 
           "Granite Counters"
          ]
        }
       ],
      "Media":
       [
        {
         "MediaUrl": "https://tinyurl.com/4fs4bewd",
         "MediaType": "png",
         "ShortDescription" : "Street view"
        },
        {
         "MediaUrl": "https://tinyurl.com/5n9xxzs6",
         "MediaType": "png",
         "ShortDescription" : "Kitchen"
        }
       ]
     },
    "beneficiaryReserve": .0002,
    "beneficiary":
     [
      "0x32f87751e3dec86b"
     ],
    "onMarket": true
   }
  ]
}
    

Returns


[Array of Network Response] with a context of [Array of Residentiall Listing]

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType": "AddListing",
  "system": "Broker Front Office",
  "subjectType": "Listing",
  "eventSubject": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
  "recorderType": "Owner Representative",
  "eventRecorder": "0x41f87751e7dec89f",
  "timestamp": "2023-12-10T19:22:02Z",
  "version": "0.9.5",
  "application": "Listing Creator Application",
  "success":true,
  "context":
   [
    {
     "copyright":"©2019-2024 Lesswing, LLC",
     "payload":
      {
       "@reso.context": "urn:reso:metadata:2.0:resource:property",
       "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
       "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
       "BathroomsTotalInteger": "2",
       "BedroomsTotal": "3",
       "ListPrice": "$340,000",
       "LivingArea": "3,100",
       "SyndicationRemarks": "Rural retreat with access to services.",
       "Country": "CA",
       "StateOrProvince": "YT",
       "City": "Dawson City",
       "PostalCode": "Y0B 1G0",
       "StreetName": "Bayshore Rd",
       "StreetNumber": "1803",
       "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
       "ShowingInstructions": "Dog in the backyard is territorial.",
       "AccessCodes": "678678678",
       "OccupantType": "Vacant",
       "Appliances": 
        [ 
         "Refrigerator", 
         "Dish Washer", 
         "Gas Cooktop", 
         "Double Oven", 
         "Water Softener", 
         "Wine Cooler"
        ],
       "Interior Features": 
        [ 
         "Beamed Ceilings",
         "Granite Counters",
         "Open Floorplan"
        ],
       "Consessions": "Y",
       "ConsessionsComments": "$1,000 towards new roof",
       "Furnished": "Negotiable",
       "PreviousListPrice": "$349,500",
       "Inclusions": "Yard Tractor",
       "Fencing": 
        [ 
         "Invisible",
         "Chain Link"
        ],
       "LaundryFeatures": 
        [ 
         "Main Level", 
         "Gas Dryer Hookup",
         "Washer Hookup"
        ],
       "ParkingFeatures": 
        [
         "Garage", 
         "Workshop in Garage"
        ],
       "AttachedGarageYN": "Y",
       "GarageSpaces": "3",
       "HomeWarrantyYN": "Y",
       "StandardStatus": "Active",
       "PropertyType": "Residential",
       "Heating": 
        [
         "Forced Air", 
         "Radiant Floor"
        ],
       "HeatingYN": "Y",
       "Levels": "Two",
       "ExteriorFeatures": 
        [
         "Garden", 
         "Gas Grill", 
         "RainGutters"
        ], 
       "PropertyRooms":
        [
         {
          "RoomType": "Master Bedroom",
          "RoomDimensions": "20x20",
          "RoomFeatures":
           [ 
            "Walk-in Closet(s)", 
            "Crown Moulding"
           ]
         },
         {
          "RoomType":"Kitchen",
          "RoomDimensions":"20x30",
          "RoomFeatures":
           [
            "Kitchen Island", 
            "Pantry", 
            "Granite Counters"
           ]
         }
        ],
       "Media":
       [ 
        {
         "MediaUrl": "https://tinyurl.com/4fs4bewd",
         "MediaType": "png",
         "ShortDescription" : "Street view",
        },
        {
         "MediaUrl": "https://tinyurl.com/5n9xxzs6",
         "MediaType": "png",
         "ShortDescription" : "Kitchen",
        }
       ]
      },
     "beneficiaryReserve": .0002,
     "beneficiary":
      [
       {
        "participant": "0x32f87751e3dec86b",
        "firstName": "Carol",
        "lastName": "Goodthought",
        "organization": "Mid-Valley Abuse Shelter",
        "mobile": "888.555.1212",
        "email": "carol@nowhere.com",
        "role": "Beneficiary",
        "verifyTimestamp": "2023-12-10T19:22:02Z",
        "weight": 1
       }
      ],
     "onMarket": true
    }
   ]
 }
]
    

HTTP Error Codes




Up
post /generateUPI
Generate a RESO Universal Property Identifier.
The Square Deal Network requires that listings include a field called UniversalPropertyIdentifer (UPI). It is often the case that the UPI needs to be created.

Consumes


Follow the documentation for Add Listing Request with the following notes:
Content-Type: application/json

Returns


[Array of Network Response] with a context that identifies UPI version 1, UPI version 2 (latest proposal) and UPI for experimental purposes.

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType":"generateUPI",
  "system":"Square Deal Network UPI Facility",
  "subjectType":"System",
  "eventSubject":"ABC123",
  "recorderType":"Administrator",
  "eventRecorder":"System",
  "timestamp":"2024-01-24T20:55:44Z",
  "version": "0.9.5",
  "application":"Square Deal Network UPI Facility",
  "success":true,
  "context":
   [
    {
     "address":"4N639 Knollcreek Drive, Saint Charles, IL 60175",
     "ListingId":"ABC123",
     "UniversalPropertyId1":"US-17089-66716-0920177002-R-N",
     "UniversalPropertyId2":\
"urn:reso:upi:2.0:country:US:subcountry:1708966716:propertytype:residential:subpropertytype::parcelnumber:09-20-177-002:subparcelnumber:",
     "UniversalPropertyIdEx":\
"urn:reso:upi:2.X:country:US:stateorprovince:IL:county:089:subcounty:66716:propertytype::residential:subpropertytype:parcelnumber:09-20-177-002:subparcelnumber:"
    }
   ]
 }
]
      

HTTP Error Codes




Up
post /importBatch
Add a group of elements to the Square Deal Network return a single-element array that contains a Batch Result for the requested participant.
This method is an alternative to multiple single-record additions.

Consumes


[Array of Batch Request]
The payload must be URLEncoded to allow it to be passed to the server over HTTP.

Follow the documentation for Batch Request with the following notes:
  1. requestor Participant Address

    The address of the entity requesting access to the blockchain. The value is sent as an opaque to the Smart contract and returned as eventRecorder in the response.

    The value cannot be the same as context field "participant" value. You must ask someone with access to the API to grant you access.
  2. sdnRegistration UUID

    The Square Deal Network Registration number of the entity requesting access to the blockchain. The value is sent as an opaque to the Smart contract so that permission can be checked.
  3. sdnKey Key

    The key of the entity requesting access to the blockchain. The value is used to submit transactions.
  4. importFile String

    The name of the csv-formatted file to read.
  5. jobName String

    The name of the job to use to package batch documentation.
Content-Type: application/json

[
 {
  "requestor": [ PARTICIPANT ADDRESS ALREADY IN THE SYSTEM ],
  "sdnRegistration": [ PARTICIPANT SDN REGISTRATION ALREADY IN THE SYSTEM ],
  "sdnKey": [ PARTICIPANT SDN KEY ALREADY IN THE SYSTEM ],
  "importFile": "tiny.csv",
  "jobName:: "TEST001",
  "batchSize": 4,
 }
]
    

Returns


[Array of Batch Result].

Content-Type: application/json

[
 {
  "eventType":"FileImport",
  "system":"Square Deal Network Import Facility",
  "subjectType":"System",
  "eventSubject":"Import Facility",
  "recorderType":"Administrator",
  "eventRecorder":"System",
  "timestamp":"2023-12-18T06:17:34Z",
  "version": "0.9.5",
  "application":"Square Deal Network Import Facility",
  "success":true,
  "context":
   [
    {
     "batchCount": 3,
     "recordsRead": 12,
     "recordsFiltered": 2,
     "recordsEvaluated": 10,
     "recordsSubmitted": 9,
     "recordsRejected": 1,
     "filteredRecords": [6,13],
     "timestamp":"2023-12-18T06:17:34Z",
     "filePath":"./imports/clean.csv",
     "maxBatchSize": 4
    }
   ]
  }
]
    

HTTP Error Codes




Up
post /removeListener
Remove Listener from the Square Deal Network

Consumes


The payload must be URLEncoded to allow it to be passed to the server over HTTP.
  1. sdnAddress Participant Address

    The address of the Listener to be removed.
  2. sdnRegistration UUID

    The SDN Registration number of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned in the recorderType field of the response.
  3. sdnKey Key

    The SDN key of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and not returned in the response.

Returns


[Array of Network Response] with a String in the context providing feedback.

Content-Type: application/json


[
 {
  "eventType":"removeListener",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Listener",
  "eventSubject":"0x69c25b8dc9ea98ce",
  "recorderType":"Owner Representative",
  "eventRecorder":"0x69c25b8dc9ea98ce",
  "timestamp":"2024-02-12T21:51:52Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   [
    {
     "message":"SDN Participant removed"
    }
   ]
 }
]
      

HTTP Error Codes




Up
post /removeListing
Remove a Listing from the Square Deal Network

Consumes


The payload must be URLEncoded to allow it to be passed to the server over HTTP.
  1. sdnAddress Participant Address

    The address of the Listing to be removed.
  2. sdnRegistration UUID

    The SDN Registration number of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and returned in the recorderType field of the response.
  3. sdnKey Key

    The SDN key of the requestor submitting the information. Ownership is assigned based on the value and the requestor should be registered with the system before trying to add a listing to the network. The value is sent as an opaque to the Smart contract and not returned in the response.
  4. listingId UUID

    The unique identifier of the listing to be removed.

Returns


[Array of Network Response] with a String in the context providing feedback.

Content-Type: application/json


[
 {
  "eventType":"RemoveListing",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Listing",
  "eventSubject":"2e3a3c5b-1488-4813-8c5b-9f932fba17eb",
  "recorderType":"Owner Representative",
  "eventRecorder":"0x5ab98dd26e3d69b7",
  "timestamp":"2024-04-12T11:31:31Z",
  "version": "0.9.5",
  "application": "Square Deal Network",
  "success":true,
  "context":""
   [
    {
     "message":"SDN Listing removed"
    }
   ]
 }
]
      

HTTP Error Codes




Up
post /removeParticipant
Remove Participant from the Square Deal Network

Consumes


The payload must be URLEncoded to allow it to be passed to the server over HTTP.
  1. directoryAddress Participant Address

    The address of the Directory that has the Participant.
  2. sdnAddress Participant Address

    The address of the Participant to be removed.

Returns


[Array of Network Response] with a String in the context providing feedback.

Content-Type: application/json


[
 {
  "eventType":"removeListener",
  "system":"Square Deal Network web3 Facility",
  "subjectType":"Listener",
  "eventSubject":"0x69c25b8dc9ea98ce",
  "recorderType":"Owner Representative",
  "eventRecorder":"0x69c25b8dc9ea98ce",
  "timestamp":"2024-02-12T21:51:52Z",
  "version": "0.9.5",
  "application":"Square Deal Network",
  "success":true,
  "context":
   [
    {
     "message":"SDN Participant removed"
    }
   ]
 }
]
      

HTTP Error Codes




Up
post /validateAddress
Generate a RESO Universal Property Identifier.
The Square Deal Network requires that a listing iclude a field called UniversalPropertyIdentifer that my need to be created. This is a convenience function.

Consumes


Follow the documentation for Add Listing Request with the following notes:
Content-Type: application/json

Returns


[Array of Network Response] with a context that identifies UPI version 1 and UPI version 2.

Field names in the response context conform to the RESO Data Dictionary whenever possible.

Content-Type: application/json

[
 {
  "eventType":"EnhanceAddress",
  "system":"Square Deal Network Address Facility",
  "subjectType":"System",
  "eventSubject":"ABC123",
  "recorderType":"Administrator",
  "eventRecorder":"System",
  "timestamp":"2024-01-24T21:32:38Z",
  "version": "0.9.5",
  "application":"Square Deal Network Address Facility",
  "success":true,
  "context":
   [
    {
     "address":"4N639 Knollcreek Drive, Saint Charles, IL 60175",
     "payload":
      {
       "searchAddress":"4N639 Knollcreek Drive, Saint Charles, IL 60175",
       "matchedAddress":"4N639 KNOLLCREEK DRIVES, SAINT CHARLES, IL, 60175",
       "country":"US",
       "state_code":"17",
       "state_name":"Illinois",
       "state_abbreviation":"IL",
       "state_division":"3",
       "state_region":"2",
       "county_code":"089",
       "county_basename":"Kane",
       "county_name":"Kane County",
       "city_name":"SAINT CHARLES",
       "subcounty_code":"66716",
       "subcounty_basename":"St. Charles",
       "subcounty_name":"St. Charles township",
       "csa_code":"176",
       "csa_basename": "Chicago-Naperville, IL-IN-WI",
       "csa_name":"Chicago-Naperville, IL-IN-WI CSA",
       "latitude":41.93628299595236,
       "longitude":-88.3521970104557,
       "place":"Rural"
     }
    }
   ]
 }
]
      

HTTP Error Codes




Up
Add Beneficiary Request
system
Example: Broker Front Office
UniversalPropertyId
Example: urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 :: 3:456 :subparcelnumber:
role
Example: Owner Representative
requestor
Example: 0x41f87751e7dec89f
application
Example: Listing Creator Application
context
Represents an array even if there is only a single element.

[
 "0x75f87751e3bca34f"
]
      



Up
Add Listing Request
system
Example: Broker Front Office
sdnAddress
Example: 0x41f87751e7dec89f
sdnRegistration
Example: cb8e4cf2-112e-4a68-89d2-e4248597c732
sdnKey
Example: f8e188e8af0b8b414be59c4a1a15cc666c898fb34d94156e9b51e18bfde754a5
application
Example: Listing Creator Application
context
[Array of Residential Listing] format: JSON string
Represents an array even if there is only a single element.
Example:

[
 {
  "copyright":"©2019-2024 Lesswing, LLC",
  "payload":
   {
    "@reso.context": "urn:reso:metadata:2.0:resource:property",
    "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
    "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
    "BathroomsTotalInteger": "2",
    "BedroomsTotal": "3",
    "ListPrice": "$340,000",
    "LivingArea": "3,100",
    "SyndicationRemarks": "Rural retreat with access to services.",
    "Country": "CA",
    "StateOrProvince": "YT",
    "City": "Dawson City",
    "PostalCode": "Y0B 1G0",
    "StreetName": "Bayshore Rd",
    "StreetNumber": "1803",
    "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
    "ShowingInstructions": "Dog in the backyard is territorial.",
    "AccessCodes": "678678678",
    "OccupantType": "Vacant",
    "Appliances": 
     [ 
      "Refrigerator", 
      "Dish Washer", 
      "Gas Cooktop", 
      "Double Oven", 
      "Water Softener", 
      "Wine Cooler"
     ],
    "Interior Features": 
     [ 
      "Beamed Ceilings",
      "Granite Counters",
      "Open Floorplan"
     ],
    "Consessions": "Y",
    "ConsessionsComments": "$1,000 towards new roof",
    "Furnished": "Negotiable",
    "PreviousListPrice": "$349,500",
    "Inclusions": "Yard Tractor",
    "Fencing": 
     [ 
      "Invisible",
      "Chain Link"
     ],
    "LaundryFeatures": 
     [ 
      "Main Level", 
      "Gas Dryer Hookup",
      "Washer Hookup"
     ],
    "ParkingFeatures": 
     [
      "Garage", 
      "Workshop in Garage"
     ],
    "AttachedGarageYN": "Y",
    "GarageSpaces": "3",
    "HomeWarrantyYN": "Y",
    "StandardStatus": "Active",
    "PropertyType": "Residential",
    "Heating": 
     [
      "Forced Air", 
      "Radiant Floor"
     ],
    "HeatingYN": "Y",
    "Levels": "Two",
    "ExteriorFeatures": 
     [
      "Garden", 
      "Gas Grill", 
      "RainGutters"
     ],
    "PropertyRooms":
     [
      {
       "RoomType": "Master Bedroom",
       "RoomDimensions": "20x20",
       "RoomFeatures":
        [ 
         "Walk-in Closet(s)", 
         "Crown Moulding"
        ]
      },
      {
       "RoomType":"Kitchen",
       "RoomDimensions":"20x30",
       "RoomFeatures":
        [
         "Kitchen Island", 
         "Pantry", 
         "Granite Counters"
        ]
      }
     ],
    "Media":
     [
      {
       "MediaUrl": "https://tinyurl.com/4fs4bewd",
       "MediaType": "png",
       "ShortDescription" : "Street view",
      },
      {
       "MediaUrl": "https://tinyurl.com/5n9xxzs6",
       "MediaType": "png",
       "ShortDescription" : "Kitchen",
      },
     ],
   },
  "beneficiaryReserve": .0002,
  "beneficiary":
   [
     "0x32f87751e3dec86b"
   ],
  "onMarket": true
 }
]
      



Up
Add Participant Request
requestor
Example: 0x41f87751e7dec89f
sdnRegistration
Example: b5e30392-492c-4f43-ad65-78880c7eac42
sdnKey
Example: b5e30392-492c-4f43-ad65-78880c7eac42
context
Represents an array even if there is only a single element.
Example:

[
 {
  "participant": "0x41f87751e7dec89f",
  "firstName" : "Joe",
  "lastName" : "Schmoe",
  "organization" : "Scarab Properties",
  "mobile" : "888.555.1212",
  "email" : "joe@schmoe.com",
  "role" : "Owner Representative",
  "verifyTimestamp": "2023-12-10T19:22:02Z"
 }
]
      



Up
Batch Request
requestor
Example: 0x41f87751e7dec89f
sdnRegistration
Example: cb8e4cf2-112e-4a68-89d2-e4248597c732
sdnKey
Example: f8e188e8af0b8b414be59c4a1a15cc666c898fb34d94156e9b51e18bfde754a5
importFile
The name of the csv-formatted file to read.
jobName
The name of the job to use to package batch documentation.



Up
Batch Result
batchCount
The number of batches submitted.
recordsRead
The number raw records read from the batch.
recordsFiltered
The number raw records that were rejected before applying Data Assurance procedures.
recordsEvaluated
The number records that will be evaluated with Data Assurance procedures. This value whould be equal to the records read minus the warning count.
recordsSubmitted
The number that passed Data Assurance procedures.
recordsRejected
The number that were rejected for failing Data Assurance procedures.
filteredRecords
[Array of Int]
An Array of record identifiers (row numbers from the input file) that were filtered.
timestamp
Date format: date-time
Example: "2023-12-10T19:22:02Z"
filePath
The path to the input file. Example: ./imports/tiny.csv"
maxBatchSize
The maximum number of items in a batch.



Up
Full Listing
@reso.context
Example: "urn:reso:metadata:2.0:resource:property"
UniversalPropertyId
Example: urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 :: 3:456 :subparcelnumber:
ListingId
Example: 2e3a3c5b-1488-4813-8c5b-9f932fbac8ec
BathroomsTotalInteger
Example: "2"
BedroomsTotal
Example: "3"
ListPrice
Example: "$340,000"
LivingArea
Example: "3,100"
SyndicationRemarks
Example: "Rural retreat with access to services."
Country
Example: "CA"
StateOrProvince
Example: "YT"
City
Example: "Dawson City"
PostalCode
Example: "Y0B 1G0"
StreetName
Example: "Bayshore Rd."
StreetNumber
Example: "1803"
UnparsedAddress
Example: "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA"
ShowingInstructions
Example: "Dog in the backyard is territorial"
AccessCodes
Example: "678678678"
OccupantType
Example: "Vacant"
Appliances
[Array of String]
Example: ["Refrigerator", "Dish Washer", "Gas Cooktop", "Double Oven", "Water Softener", "Wine Cooler"]
InteriorFeatures
[Array of String]
Example: ["Beamed Ceilings", "Granite Counters", "Open Floorplan"]
Concessions
Example: "Y"
ConcessionsComments
Example: "$1,000 towards new roof"
Furnished
Example: "Negotiable"
PreviousListPrice
Example: "$349,500"
Inclusions
Example: "Yard Tractor"
Fencing
[Array of String]
Example: ["Invisible", "Chain Link"]
LaundryFeatures
[Array of String]
Example: ["Main Level", "Gas Dryer Hookup", "Washer Hookup"]
ParkingFeatures
[Array of String]
Example: ["Garage", "Workshop in Garage"]
AttachedGarageYN
Example: "Y"
GarageSpaces
Example: "3"
HomeWarrantyYN
Example: "Y"
StandardStatus
Example: "Active"
PropertyType
Example: "Residential"
Heating
[Array of String]
Example: ["Forced Air", "Radiant Floor"]
HeatingYN
Example: "Y"
Levels
Example: "Two"
ExteriorFeatures
[Array of String]
Example: ["Garden", "Gas Grill", "RainGutters"]
PropertyRooms
[Array of Listing Room]
Example:

[
 {
  "RoomType": "Master Bedroom",
  "RoomDimensions": "20x20",
  "RoomFeatures":
   [ 
    "Walk-in Closet(s)", 
    "Crown Moulding"
   ]
 },
 {
  "RoomType":"Kitchen",
  "RoomDimensions":"20x30",
  "RoomFeatures":
   [
    "Kitchen Island", 
    "Pantry", 
    "Granite Counters"
   ]
 }
]
       
Media
[Array of Listing Media]
Example:

[
 {
  "MediaUrl": "https://tinyurl.com/4fs4bewd",
  "MediaType": "png",
  "ShortDescription" : "Street view",
 },
 {
  "MediaUrl": "https://tinyurl.com/5n9xxzs6",
  "MediaType": "png",
  "ShortDescription" : "Kitchen",
 }
]
       



Up
Listener Address
participant
Example: 0x41f87751e7dec89f
host
Example: www.lesswing.com
port
Example: 8080
method
Example: /callback
useTLS
Example: true



Up
Listing Media
MediaUrl
Example: "©2024 Scarab Properties" Default: "©2019-2024 Lesswing, LLC"
MediaType
Example: "png"
ShortDescription
Example: "Street view"



Up
Listing Participant
participant
Example: 0x41f87751e7dec89f
firstName
Example: Joe
lastName
Example: Schmoe
organization
Example: Scarab Properties
mobile
Example: 888.555.1212
email
Example: joe@schmoe.com
role
Example: Owner Representative
verifyTimestamp
Date format: date-time
Example: 2016-08-29T09:12:33.001Z



Up
Listing Room
RoomType
Example: "Kitchen"
RoomDimensions
Example: "20x30"
RoomFeatures
[Array of String]
Example: [ "Kitchen Island","Pantry","Granite Counters" ]



Up
Network Listener
scope
Example: "http://localhost:8081/captureEvent"
url
Example: "http://localhost:8083/captureEvent"
reference
Example: "http://localhost:8081/captureEvent"
mode
Example: "http://localhost:8081/captureEvent"
ids
Array of [String]
Example: [ '2e3a3c5b-1488-4813-8c5b-9f932fbac8ac', '2e3a3c5b-1488-4813-8c5b-9f932fbac8bc' ]



Up
Network Participant
copyright (optional)
Example: "©2024 Scarab Properties" Default: "©2019-2024 Lesswing, LLC"
sdnRegistration (optional)
Example: "b5e30392-492c-4f43-ad65-78880c7eac42"
payload
Example:

{
  "participant": "0x41f87751e7dec89f",
  "firstName" : "Joe",
  "lastName" : "Schmoe",
  "organization" : "Scarab Properties",
  "mobile" : "888.555.1212",
  "email" : "joe@schmoe.com",
  "role": "Owner Representative",
  verifyTimestamp: "2023-12-10T19:22:02Z" 
}
      



Up
Network Response
eventTyoe
Example: AddProperty
system (optional)
Example: Broker Front Office
subjectType
Example: Listing
eventSubject
A string representation of an identifier that is dependent on the eventType parameter. An example would be a response for an /getAdvertisement or /getListing request which has a Universal Property Identifier A /getParticipant request has a Participant Address.
entity
Example: Listing Agent
eventRecorder
Example: 0x41f87751e7dec89f
timestamp
Date format: date-time
Example: 2023-12-10T19:22:02Z
version
Example: 0.9.5
application (optional)
Example: Listing Creator Application
context
[Array of String] format: JSON string
A string representation of an identifier that is dependent on the eventType parameter. An example would be a /getAdvertisement request which is an [Array of Residential Advertisement]. Other possible formats are [Array of Residential Listing] (/getListing) or [Array of Network Participant] (/getParticipant).
success
Example: true



Up
Residential Advertisment
copyright
Example: "©2024 Scarab Properties" Default: "©2019-2024 Lesswing, LLC"
payload
Example:

{
 "@reso.context": "urn:reso:metadata:2.0:resource:property",
 "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
 "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
 "BathroomsTotalInteger": "2",
 "BedroomsTotal": "3",
 "ListPrice": "$340,000",
 "LivingArea": "3,100",
 "SyndicationRemarks": "Rural retreat with access to services.",
 "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
 "Media":
  [
   {
    "MediaUrl": "https://tinyurl.com/4fs4bewd",
    "MediaType": "png",
    "ShortDescription" : "Street view",
   },
   {
    "MediaUrl": "https://tinyurl.com/5n9xxzs6",
    "MediaType": "png",
    "ShortDescription" : "Kitchen",
   }
  ]
}
      
onMarket
Example: true



Up
Residential Listing
copyright
Example: "©2024 Scarab Properties" Default: "©2019-2024 Lesswing, LLC"
payload
Example:

{
 "UniversalPropertyId": "urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 ::   3:456 :subparcelnumber:",
 "ListingId": "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec",
 "BathroomsTotalInteger": "2",
 "BedroomsTotal": "3",
 "ListPrice": "$340,000",
 "LivingArea": "3,100",
 "SyndicationRemarks": "Rural retreat with access to services.",
 "Country": "CA",
 "StateOrProvince": "YT",
 "City": "Dawson City",
 "PostalCode": "Y0B 1G0",
 "StreetName": "Bayshore Rd",
 "StreetNumber": "1803",
 "UnparsedAddress": "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA",
 "ShowingInstructions": "Dog in the backyard is territorial.",
 "AccessCodes": "678678678",
 "OccupantType": "Vacant",
 "Appliances": 
  [ 
    "Refrigerator", 
    "Dish Washer", 
    "Gas Cooktop", 
    "Double Oven", 
    "Water Softener", 
    "Wine Cooler"
  ],
 "Interior Features": 
  [ 
    "Beamed Ceilings",
    "Granite Counters",
    "Open Floorplan"
  ],
 "Consessions": "Y",
 "ConsessionsComments": "$1,000 towards new roof",
 "Furnished": "Negotiable",
 "PreviousListPrice": "$349,500",
 "Inclusions": "Yard Tractor",
 "Fencing": 
  [ 
    "Invisible",
    "Chain Link"
  ],
 "LaundryFeatures": 
  [ 
    "Main Level", 
    "Gas Dryer Hookup",
    "Washer Hookup"
  ],
 "ParkingFeatures": 
  [
   "Garage", 
   "Workshop in Garage"
  ],
 "AttachedGarageYN": "Y",
 "GarageSpaces": "3",
 "HomeWarrantyYN": "Y",
 "StandardStatus": "Active",
 "PropertyType": "Residential",
 "Heating": 
  [
   "Forced Air", 
   "Radiant Floor"
  ],
 "HeatingYN": "Y",
 "Levels": "Two",
 "ExteriorFeatures": 
  [
   "Garden", 
   "Gas Grill", 
   "RainGutters"
  ],
 "Rooms":
  [
   {
    "RoomType": "Master Bedroom",
    "RoomDimensions": "20x20",
    "RoomFeatures":
     [ 
      "Walk-in Closet(s)", 
      "Crown Moulding"
     ]
   },
   {
    "RoomType":"Kitchen",
    "RoomDimensions":"20x30",
    "RoomFeatures":
     [
      "Kitchen Island", 
      "Pantry", 
      "Granite Counters"
     ]
    }
  ],
 "Media":
  [
   {
    "MediaUrl": "https://tinyurl.com/4fs4bewd",
    "MediaType": "png",
    "ShortDescription" : "Street view",
   },
   {
    "MediaUrl": "https://tinyurl.com/5n9xxzs6",
    "MediaType": "png",
    "ShortDescription" : "Kitchen",
   }
  ]
}
      
beneficiaryReserve
Example: .0002
beneficiary
[Array of Address]
Example:

    [
      "0x32f87751e3dec86b",
      "0x56887751e3acg72a"
     }
    ]
      
onMarket
Example: true



Up
RESO RCP-027 Event
EntityEventSequence
Example: "1706369090000"
ResourceName
Example: "Property"
ResourceRecordKey
Example: "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec"



Up
SDN Event
eventType
Example: "SDN-AddListing"
system
Example: "Square Deal Network"
subjectType
Example: "Listing"
eventSubject
Example: "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec"
recorderType
Example: "SDN Provider"
eventRecorder
Example: "0x6147d415c20233f4"
timestamp
Example: "2024-01-26T23:14:14Z"
sequence
Example: "1706369090000"
version
Example: "1.7"
application
Example: "SquareDealNetworkParticipant001"
context



Up
SDN_DirectoryParticipant
sdnDirectoryAddress
Example: 0x74bc0c279c6bec86
sdnDirectoryContract
Example: "SquareDealNetworkDirectory001"
sdnParticipantAddress
Example: 0xa6357ae9cc074fba



Up
SDN_ListingActivity
ListingId
String
Example: "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec"
blockTimestamp
Date format: date-time
Example: 2016-08-29T09:12:33.001Z
requestorAddress
Participant Address
Example: 0xa6357ae9cc074fba
requestorRegistration
UUID
Example: 0xa6357ae9cc074fba
sdnParticipantAddress
Participant Address
Example: 0xa6357ae9cc074fba
sdnParticipantContract
String
Example: "SquareDealNetworkParticipant001"
sdnParticipantRegistration
UUID
Example: 0xa6357ae9cc074fba



Up
SDN_ParticipantListing
ListingId
String
Example: "2e3a3c5b-1488-4813-8c5b-9f932fbac8ec"
onMarket
Boolean
Example: "True"
reference
String
Example: "Client Portfolio #14"
remark
String
Example: "You should see this!"
sdnParticipantAddress
Participant Address
Example: 0xa6357ae9cc074fba
sdnParticipantContract
String
Example: "SquareDealNetworkParticipant001"
sdnParticipantRegistration
UUID
Example: 0xa6357ae9cc074fba
UniversalPropertyId
UPI
Example: US-17089-66716-0920177002-R-N



Up
Short Listing
@reso.context
Example: "urn:reso:metadata:2.0:resource:property"
UniversalPropertyId
Example: urn:reso:upi:2.0:country:US:stateorprovince:CA:county:06037:subcounty::propertytype:Residential:subpropertytype::parcelnumber: [abc] 1-2 :: 3:456 :subparcelnumber:
ListingId
Example: 2e3a3c5b-1488-4813-8c5b-9f932fbac8ec
BathroomsTotalInteger
Example: "2"
BedroomsTotal
Example: "3"
ListPrice
Example: "$340,000"
LivingArea
Example: "3,100"
SyndicationRemarks
Example: "Rural retreat with access to services."
UnparsedAddress
Example: "1803 Bayshore Rd, Dawson City, YT Y0B 1G0 CA"
Media
[Array of Listing Media]
Example:

[
  {
   "MediaUrl": "https://tinyurl.com/4fs4bewd",
   "MediaType": "png",
   "ShortDescription" : "Street view",
  },
  {
   "MediaUrl": "https://tinyurl.com/5n9xxzs6",
   "MediaType": "png",
   "ShortDescription" : "Kitchen",
  }
]
      



Up
Boolean
Can be either the "true" or "false" string.



Up
Date
A string-formatted ISO 8601 date and time.



Up
Date Epoch
Numeric value of the number of seconds since epoch..



Up
Int
An integer.



Up
Key
A 64 character (4096-bit) string such as "f8e188e8af0b8b414be59c4a1a15cc666c898fb34d94156e9b51e18bfde754a5".



Up
Network Units
Number of units of cryptocurrency.



Up
String
A string primitive type



Up
UPI
The RESO Universal Property Identifier.



Up
URL
A Uniform Resource Locator conforming to RFC 3986.



Up
UUID
A 128-bit primitive generated with UUID Version 4 such as "cb8e4cf2-112e-4a68-89d2-e4248597c732".



Up
Participant Address
A 16 character hexidecimal primitive string.