Skip to content

Instantly share code, notes, and snippets.

@inchoate
Last active July 9, 2020 14:52
Show Gist options
  • Save inchoate/900ea5b13a5df2c621c7b34f377f233e to your computer and use it in GitHub Desktop.
Save inchoate/900ea5b13a5df2c621c7b34f377f233e to your computer and use it in GitHub Desktop.
JSON Structure to Easily Import Data into RealMassive

RealMassive Simplified Data Ingestion Format

  • Version: v0.0.1-pre. This is a proposal. We encourage feedback.
  • Last Edited: 2017-02-28

Here we document our file format for importing CRE data into RealMassive. Third party data providers will be interested in this because, if they:

  • export their data into this format;
  • provide RealMassive with a publicly accessible file via URI;
  • keep that file up to date

then RealMassive can automatically ingest and present that data on our platform.

Specification

Top Level Payload

{
    "metadata":{
        # A few important properties about this dataset.
        #
        # See Metadata object specification below.
    },
    "organizations": {
        # The organization whose inventory is provided by this data file. 
        # While it is plural, at this time, only one organization may be 
        # updated per JSON file.
        #
        # See Organizations object specification below.
    },
    "buildings": [{
        # A list of Buildings. Each building also has nested listing info.
        #
        # See Buildings object specification below.
        "spaces": [{
            # A list of Spaces for Lease or Sublease. Each space also contains
            # a list of contacts and a list of media
            #
            # See Spaces object specification below.
            "contacts": [{
                # A list of users references who represent this listing, in 
                # order of preference.
                #
                # See Contacts object specification below.
            ]},
            "media": [{
                # A list of media files for this sub/lease listing.
                #
                # See Media object specification below.
            }]
        }],
        "sales": [{
            # A list of Buildings/Parcels for sale. Each sale also contains 
            # a list of contacts and a list of media
            #
            # See Sales object specification below.
            "contacts": [{
                # A list of users references who represent this listing, in 
                # order of preference.
                #
                # See Contacts object specification below.
            ]},
            "media": [{
                # A list of media files for this sale listing.
                #
                # See Media object specification below.
            }]
        }],
        # A building also has an array of media solely for it:
        "media": [{
            # A list of media files for this building
            #
            # See Media object specification below.
        }]
    }],
    "contacts": [{
        # An array of contact objects. To avoid exploding repeated data, 
        # simply use the contact reference in the listings above.
        #
        # See Contact object specification below.
        "externalId": "1298329831",
        "media": [{
                # A list of media files, usually profile pictures, for this 
                # contact.
                #
                # See Media object specification below.
        }],
    }]
}

Metadata

Purpose

This object holds information about the file itself. We use this to accurately separate and update your inventory.

Specification

"metadata": {
    "uri": "(required string) YOUR-PUBLIC-URI-TO-THIS-FILE",
    "lastUpdated": "(required string) ISO8601-compliant timestamp at GMT"
}

Sample

"metadata": {
    "uri": "https://www.realmassive.com/data/dumps/org1234/dump.json",
    "lastUpdated": "2017-02-28T20:42:43"
}

Organizations

Purpose

This represents a real world organization that engages in the business of CRE.

Specification

"organizations": {
    "externalId": "(required string) unique key into your database",
    "attributes": {
        "address.city": "(required string) Organization's city",
        "address.county": "(required string) Organization's county",
        "address.full_state": "(required string) Organization's full state name",
        "address.latitude": "(required number) latitude: office location",
        "address.longitude": "(required number) longitude: office location",
        "address.state": "(required string) 2-letter state abbreviation",
        "address.street": "(required string) Organization's street name",
        "address.zipcode": "(required string) Organization's zip code",
        "bio": "(optional string) Free text biographical statement",
        "email": "(optional string) Main organization email",
        "name": "(required string) Name of organization",
        "phone": "(optional string) Main phone for the organization",
        "social.linkedin": "(optional string) URL of the organization's LinkedIn profile",
        "social.twitter": "(optional string) URL of the organization's Twitter profile",
        "social.website": "(optional string) URL of the organization's website"
    }
}

Sample

"organizations": {
    "externalId": "123091823098188",
    "attributes": {
        "address.city": "Austin",
        "address.county": "Travis",
        "address.full_state": "Texas",
        "address.latitude": "30.2672",
        "address.longitude": "-97.7431",
        "address.state": "TX",
        "address.street": "5th St",
        "address.zipcode": "78703",
        "bio": "RealMassive is the first source for real-time commercial real estate information. We provide a powerful yet easy way to help commercial real estate professionals collaborate and streamline their marketing efforts while gaining critical insight into the performance of their commercial real estate listings.",
        "email": "[email protected]",
        "name": "RealMassive",
        "phone": "(682) 587-9750",
        "social.linkedin": "https://www.linkedin.com/company/realmassive",
        "social.twitter": "https://twitter.com/RealMassive",
        "social.website": "https://www.realmassive.com"
    }
}

Buildings

Purpose

The Buildings list is your complete on- and off-market inventory. All listings go inside the appropriate buildings.

TODO: What about Land?

Specification

"buildings:" [{
    "externalId": "(required string) unique DB ID",
    "attributes": {
        "address.city": "(required string) building's city",
        "address.county": "(required string) building's ",
        "address.full_state": "(required string) building's state name",
        "address.latitude": "(required float) building's latitude",
        "address.longitude": "(required float) building's longitude",
        "address.state": "(required string) building's 2-letter state",
        "address.street": "(required string) building's number and street",
        "address.zipcode": "(required number) building's zipcode",
        "air_conditioned": "(optional boolean) does this building have A/C?",
        "build_status": "(required string) building's build status. One of: Existing, Planned/Proposed, In Development, Land",
        "building_class": "(required string) building's class: A, B, C",
        "building_size.value": "(required number) building's size in units",
        "building_size.units": "(required string) building's units in which the size is measured: SF, Acres",
        "building_subtype": "(optional string) building's subtype (see subtypes)",
        "building_type": "(required string) building's type: Office, Industrial, Retail",
        "clear_height.value": "(optional number) building's height in units",
        "clear_height.units": "(optional string) building's units in which to measure its height",
        "description": "(optional string) building's description",
        "floor_count": "(optional number) building's floor count",
        "leed_rating": "(optional string) building's LEED rating",
        "lot_size.value": "(optional number) building's lot's size in units",
        "lot_size.units": "(optional string) building's units in which to measure lot size",
        "opex.value": "(optional number) building's current OPEX value",
        "opex.units": "(optional string) building's units in which to measure the OPEX",
        "signage": "(optional string) building's signage options",
        "sprinkler": "(optional string) building's sprinkler: ",
        "tenancy": "(optional string) building's tenancy",
        "title": "(required string) building's title",
        "year_built": "(optional integer) year building was built",
        "year_renovated": "(optional number) last year building was renovated",
        "zoning": "(optional string) building's zoning"
    },
    "spaces": [],
    "sales": [],
    "media": [],
}]

Sample

"buildings:" [{
    "externalId": "1460425974536472410",
    "attributes": {
        "address.city": "Summerville",
        "address.county": "Berkeley County",
        "address.full_state": "South Carolina",
        "address.latitude": "33.0666955",
        "address.longitude": "-80.1751572",
        "address.state": "SC",
        "address.street": "132 Trade Zone Boulevard",
        "address.zipcode": "29483",
        "building_class": "B",
        "building_size.value": "1081600",
        "building_size.units": "SF",
        "building_type": "Industrial",
        "description": "Rockefeller Group-MeadWestvaco Foreign Trade Zone is a 400 acre Class A master planned industrial park located off I-26 on Trade Zone Boulevard in Summerville, South Carolina. This Park has excellent highway access with two I-26 interchanges nearby. Park tenants include TBC Corporation and Gerber Childrenswear.",
        "title": "Rockefeller Group-MeadWestvaco Foreign Trade Zone"
    },
    "spaces": [{
        "externalId": "1923293",
        "type": "sublease",
        "attributes": {
            "description": "(required string) description of this sublease",
            "floor_number": "(optional string) floor this sublease is on",
            "max_contiguous.value": "(optional number) size of max contiguous space in units",
            "max_contiguous.units": "(optional string) units in which max contiguous is measured: SF or Acres",
            "min_divisible.value": "(optional number) size of min divisible space in units",
            "min_divisible.units": "(optional string) units in which min divisible is measured: SF or Acres",
            "office_percentage ": "(optional number) percentage of space that is office (for mixed/industrial usage)",
            "space_size.value": "(required number) main marketed size in units",
            "space_size.units": "(required string) units in which the main marketed size is specified: SF or Acres",
            "space_subtype": "(optional string) See subtypes",
            "space_type": "(required string) Office, Retail, Industrial",
            "unit_number": "(required string) Unit number"
        },
        "contacts": [{
            "ref": "1298329832"
        }]
    }]
}]

Spaces

Specification

"spaces": [{
    "externalId": "YOUR_DB_ID",
    "attributes": {
        "description": "(optional string)",
        "floor_number": "(optional string)",
        "max_contiguous.value": "(optional number)",
        "max_contiguous.units": "(optional string) SF or Acres",
        "min_divisible.value": "(optional number)",
        "min_divisible.units": "(optional string) SF or Acres",
        "office_percentage": "(optional integer)",
        "space_size.value": "(optional number)",
        "space_size.units": "(optional string) SF or Acres",
        "space_subtype": "(optional string) See Space Subtype List",
        "space_type": "(optional string) Office, Retail, or Industrial",
        "unit_number": "(optional string)"
    }
}]

Sample

"spaces": [{
    "externalId": "space-123",
    "attributes": {
        "max_contiguous.value": "6226",
        "max_contiguous.units": "sf",
        "min_divisible.value": "6226",
        "min_divisible.units": "sf",
        "space_size.value": "6226",
        "space_size.units": "sf",
        "unit_number": "669-10"
    }
}]

Space Types and Subtypes

  • Office
    • business_park
    • co_working
    • creative_loft
    • data_center
    • executive_suites
    • flex
    • incubator
    • institutional_governmental
    • medical
    • office_condo
    • office_r_d
    • professional
  • Retail
    • anchor
    • big_box
    • community_center
    • flagship
    • freestanding
    • lifestyle_center
    • other
    • outlet_cente
    • power_center
    • regional_center
    • restaurant
    • retail_pad
    • specialty_center
    • street_retail
    • strip_center
    • super_regional_center
    • vehicle_related
  • Industrial
    • distribution
    • flex
    • freezer_refrigerated
    • light_distribution
    • light_industrial
    • manufacturing
    • office_showroom
    • office_warehouse
    • r_d
    • truck_terminal_hub_transit
    • warehouse

Sales

Specification

"sales": [{
    "externalId": "YOUR-DB-ID",
    "attributes": {
        "price.value": "(optional number) Asking price",
        "price.units": "(optional string) Units, defaults to USD",
        "rate.frequency": "(optional string) ",
        "rate.type": "(optional string) ",
        "rate.units": "(optional string) ",
        "occupancy": "(optional number) Occupancy rate",
        "cap_rate": "(optional number) Building's cap rate"
    }
}]

Sample

"sales": [{
    "externalId": "YOUR-DB-ID",
    "attributes": {
        "price.value": "2500000",
        "price.units": "USD",
        "occupancy": "98%",
        "cap_rate": "9.4%"
    }
}]

Media

Specification

"media": [{
    "title": "(required string)",
    "description": "(required string)",
    "url": "(required string) source URI of original media",
    "mime_type": "(optional string)""
}]

Sample

"media": [{
    "title": "Sitemap description",
    "description": "Photo",
    "url": "https://www.realmassive.com/media/6549307336425472.jpg",
    "mime_type": "image/jpeg"
}]

Contacts

Specification

"contacts": [{
    "externalId": "YOUR-UNIQUE-DB-ID",
    "attributes": {
        "bio": "(optional string) short biographical description",
        "ccim_member": "(optional boolean) is a CCIM member?",
        "ccim_number": "(optional string) CCIM member number",
        "email": "(optional string) email address for this contact",
        "first_name": "(optional string)",
        "last_name": "(optional string)",
        "license_number": "(optional string) broker or license number",
        "mobile_phone": "(optional string)",
        "phone": "(optional string)",
        "sior_member": "(optional boolean) is a SIOR member?",
        "sior_number": "(optional string) SIOR member number",
        "social.linkedin": "(optional string)",
        "social.twitter": "(optional string)",
        "social.website": "(optional string)",
        "title": "(optional string) Contact's title within the organization",
    }
}]

Sample

"contacts": [{
    "externalId": "job-db-1234",
    "attributes": {
        "ccim_member": false,
        "email": "(optional string) [email protected]",
        "first_name": "Josef",
        "last_name": "Brokerman",
        "license_number": "(optional string) broker or license number",
        "phone": "(555) 555-555",
        "social.website": "https://www.realmassive.com/brokers/joe",
        "title": "SVP Client Leasing",
    }
}]

Samples

{
    "metadata": {
        "href": "https://www-your-uri-of-this-document.com/dump.json",
        "lastUpdated": "2017-02-28+HH:MM:SSTssss"
    },
    "organizations": {
        "externalId": "12302309",
        "attributes": {
            "key": "values"
        }
    },
    "buildings": [{
        "externalId": "132123412",
        "attributes": {
            "key": "value"
        },
        "spaces": [{
            "externalId": "1923293",
            "type": "lease|sublease",
            "attributes": {
                "key": "value"
            },
            "contacts": [{
                "ref": "1298329832"
            }]
        }],
        "sales": [{ // land, parcel, building?
            "attributes": {},
            "contacts": [{
                "ref": "1298329831",
                "role?": "tenant rep"
            }, {
                ref: "1298329832",
                "role?": "listing rep"
            }],
        }],
        "media": [{
            // implicit precedence by array ordering
            "ref": "1923290323",
            "category?": "cover"
        }]
    }],
    "media": [{
        "externalId": "12903209313",
        "attributes": {}
    }],
    "contacts": [{
        "externalId": "1298329831",
        "attributes": {
            key -> value
        },
        "media": [{
            "ref": "12903209313",
            "category?": "floorplan",
            "attributes": {}
        }],
    }, {
        "externalId": "1298329832",
        "attributes": {
            key -> value
        }
    }]
}

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment