Portfolio Import [V1]
Old version of Portfolio Import API
VTS is in the process of migrating clients from V1 to V2. V1 imports do not support the concept of expired leases and only holds either an in-place or committed lease on the space.
No new functionality will be added to the V1 import as of January 2019
Introduction
This is the central repository for information on importing your rent roll data from your accounting system into VTS. On this page, you will find a sample of our XML formatting; a list of elements with description; and tutorials to help you get started with an API integration.
To start using the VTS Portfolio Import API, the API consumer must have an API key and an API secret to authenticate requests. VTS will provide these credentials to authorized API consumers. If you would like to test whether your credentials are valid, please refer to the Authentication section.
Importing a Portfolio
To start the import of a portfolio, you must first confirm you meet the required formatting detailed below in shown in our Sample Response section at the bottom of this page.
Required Import XML Format
- All required fields must be present for each occurrence of its parent element.
- The Portfolio Import XML must include at least one Property or Office Park
HTTP Request
POST https://sandbox.vts.com/api/portfolio/v1/portfolio_imports
XML Response
Parameter | Description |
---|---|
status | Status of the portfolio import that was created: submitted - waiting to be processed processing - currently being processed completed - finished and successful failed - there was an error with the import |
jobid | unique identifier of the portfolio import, used to check the import's status |
Portfolio Import Status
After a portfolio import has been created, it is possible to check on its
status with its jobid.
HTTP Request
GET https://sandbox.vts.com/api/portfolio/v1/portfolio_imports/<jobid>
XML Response
Parameter | Description |
---|---|
status | Status of the portfolio import that was created: submitted - waiting to be processed processing - currently being processed completed - finished and successful failed - there was an error with the import or the xml was in an invalid format |
jobid | unique identifier of the portfolio import, used to check the import's status |
result | result of the import after it is either completed or failed |
curl -u <API Key>:<API Secret> https://sandbox.vts.com/api/portfolio/v1/portfolio_imports/<jobid>
Remember — Replace , and with actual values
The above curl command returns XML structured like this on an import still being processed:
<PortfolioImport>
<status>processing</status>
<result></result>
</PortfolioImport>
The above curl command returns XML structured like this on a successful import:
<PortfolioImport>
<status>complete</status>
<result>
<created>
<office-parks>0</office-parks><
properties>48</properties>
<floors>347</floors>
<spaces>1179</spaces>
<cities>1</cities>
</created>
<errored>
<SourceID>1000</SourceID>
<Error>Missing Required Field</Error>
</errored>
</result>
</PortfolioImport>
The above curl command returns XML structured like this on a failed import:
<PortfolioImport>
<status>failed</status>
<result>Internal Error</result>
</PortfolioImport>
Portfolio Elements
Property
XML representation of a building
Parameter | Type | Description | Required |
---|---|---|---|
SourceID | String | Unique ID for property | true |
Name | String | The name of the property | false |
Address | XML | The address of the building see below | true |
BuildingClass | Enum | A B C | false |
Fund | String | The building's fund | false |
HasOffice | Boolean | Does this building have office space? | false |
HasRetail | Boolean | Does this bulilding have retail space? | false |
HasIndustrial | Boolean | Does this building have industrial space? | false |
LeasingCompany | String | The building's leasing company | false |
ManagingCompany | String | The building's managing company | false |
NumberOfFloors | Integer | Total number of floors in the building | false |
Owner | String | The building's owner | false |
RBA | Integer | Rentable base area (sqft) | false |
Submarket | String | The building's submarket | false |
VacantSquareFeet | Integer | Vacant area (sqft) | false |
YearBuilt | Integer | Year the building was built | false |
Floors | Array | Array of floors in the building see below | false |
Spaces | Array | Array of units in the building see below | false |
Portfolio Address
XML representation of a building's address
Nested under Property
Parameter | Type | Description | Required |
---|---|---|---|
City | String | The city in which the building is located | true |
State | String | The abbreviation of state in which the building is located | true |
Street | String | The building's street address | true |
PostalCode | String | The building's postal code | true |
Country | String | Two-letter country code (ISO31661 alpha2) defaults to “US” if unspecified | false |
Floor
XML representation of a floor in a building
Nested under Property
Parameter | Type | Description | Required |
---|---|---|---|
FloorPosition | Integer | The physical position of the floor in the building | true |
FloorName | String | The name of the floor | false |
RentableArea | Integer | Rentable area (sqft) | false |
Portfolio Space
XML representation of a unit in a building
Nested under Property
Parameter | Type | Description | Required |
---|---|---|---|
SourceID | String | The unique identifier for a space | true |
Description | String | The description of the space | false |
Suite | String | The suite name of the space | false |
AvailabilityType | Enum | specified - available on a future date immediate arranged - no clear availability date not available | false |
AvailabilityDate | Date | The data a tenant can move into a space blank unless AvailabilityType is 'specified' | false |
FloorName | String | The name of the floor the space is on | false |
FloorPosition | Integer | The position of the floor within a building | true |
FloorComposition | Enum | entire partial | false |
ListingDate | Date | Date the space was listed | false |
MaximumContiguous | Integer | The maximum area (sqft) that a space can be expanded to | false |
MaximumDivisible | Integer | The amount of units a space can be divided into | false |
PriceIsNegotiable | Boolean | Is the price negotiable? Defaults to true if no rental rate min/max is set | false |
RemeasuredSpaceAvailable | Integer | The remeasured RSF of the space | false |
Removed | Boolean | If the space is to be deleted from VTS | false |
RentalPayType | Enum | psf_month - per square foot, per month psf_year - per square foot, per year amt_month - amount per month amt_year - amount per year | false |
RentalRateMax | Decimal | Highest asking rent | false |
RentalRateMin | Decimal | Lowest asking rent | false |
SalePrice | Decimal | Sale price if a building is for sale | false |
SpaceAvailable | Integer | The RSF of the space | false |
SpaceCondition | Enum | raw core and shell white box pre-existing pre-built | false |
SpaceType | Enum | office retail industrial_warehouse telecom storage flex parking amenities rooftop other lab manufacturing education residential medical_office restaurant leisure | false |
Subtitle | String | The secondary description of the space | false |
TransactionType | Enum | lease sale | false |
VacantOnDate | Date | The data on which the space is vacant | false |
Lease | XML | The information about the current lease on the space see below | false |
Lease
XML representation of the lease on a space
Nested under Space
Parameter | Type | Description | Required |
---|---|---|---|
SourceID | String | a unique identifier for a lease | true |
LeaseType | Enum | direct sublease renewal - default | false |
LeaseCommencementDate | Date | The date the lease started | false |
LeaseExpirationDate | Date | The date the lease expires | false |
LeaseTerm | String | The lease's term | false |
Tenant | XML | Information about the current tenant see below | false |
LeaseDealTerms
XML Representation of the lease deal terms on a lease.
Nested under Lease.
Parameter | Type | Description | Required |
---|---|---|---|
SourceID | String | a unique identifier for the lease term | true |
BaseRents | XML | Information about the base rents | false |
FreeRents | XML | Information about the free rents | false |
OpExs | XML | Information about the operational expenses | false |
RealEstateTaxes | XML | Information about the real estate taxes | false |
OtherRevenues | XML | Information about any other revenue we track | false |
IsMonthToMonth | Boolean | Whether or not the lease term is month to month | false |
LeaseMoveOutDate | Date | When the tenant is actually moving out | false |
BaseRents
XML Representation of the base rents on a LeaseDealTerm. There can be many nodes under the tree.
Nested under LeaseDealTerm.
Parameter | Type | Description | Required |
---|---|---|---|
Amount | Decimal | The amount of base rent during this time period in the given unit | true |
Units | String | The unit of measure for the given amount ($/rsf/year $/rsf/month $/month $/year) | true |
StartDate | Date | the date this rent starts | true |
EndDate | Date | the date this rent ends | true |
FreeRents
XML Representation of the free rents on a LeaseDealTerm. There can be many nodes under the tree.
Nested under LeaseDealTerm.
Parameter | Type | Description | Required |
---|---|---|---|
Amount | Decimal | The amount of free rent during this time period in the given unit | true |
Units | String | The unit of measure for the given amount ($/rsf/year $/rsf/month $/month $/year) | true |
StartDate | Date | the date this free rent starts | true |
EndDate | Date | the date thisfree rent ends | true |
FreeRentType | String | the type of free rent (gross) | true |
OpExs
XML Representation of the operational expenses on a LeaseDealTerm. There can be many nodes under the tree.
Nested under LeaseDealTerm.
Parameter | Type | Description | Required |
---|---|---|---|
Amount | Decimal | The amount of opex during this time period in the given unit | true |
Units | String | The unit of measure for the given amount ($/rsf/year $/rsf/month $/month $/year) | true |
StartDate | Date | the date this opex starts | true |
EndDate | Date | the date this opex ends | true |
RealEstateTaxes
XML Representation of the real estate taxes on a LeaseDealTerm. There can be many nodes under the tree.
Nested under LeaseDealTerm.
Parameter | Type | Description | Required |
---|---|---|---|
Amount | Decimal | The amount of tax during this time period in the given unit | true |
Units | String | The unit of measure for the given amount ($/rsf/year $/rsf/month $/month $/year) | true |
StartDate | Date | the date this tax starts | true |
EndDate | Date | the date this tax ends | true |
OtherRevenues
XML Representation of other revenue on a LeaseDealTerm. There can be many nodes under the tree.
Nested under LeaseDealTerm.
Parameter | Type | Description | Required |
---|---|---|---|
Amount | Decimal | The amount of tax during this time period in the given unit | true |
Units | String | The unit of measure for the given amount ($/rsf/year $/rsf/month $/month $/year) | true |
StartDate | Date | the date this tax starts | true |
EndDate | Date | the date this tax ends | true |
Type | String | the type of revenue this is (other) | true |
Portfolio Tenant
XML Representation of a lease's tenant
Nested under Lease
Parameter | Type | Description | Required |
---|---|---|---|
CompanyName | String | The tenant's name | true |
Industry | Enum | see Industry section | false |
Industry
Nested under Tenant
ID | Industry |
---|---|
1 | accounting |
2 | advertising |
3 | apparel & accessories |
4 | architecture |
5 | association / non profit |
6 | automotive |
7 | biotechnology |
8 | clean tech |
9 | construction |
10 | consulting |
11 | consumer products |
12 | aerospace & defense |
13 | diagnostic / medical device |
14 | education |
15 | electronics |
16 | energy |
17 | engineering |
18 | entertainment & leisure |
19 | executive search / staffing |
20 | financial services |
21 | fitness |
22 | food & beverage |
23 | government agency |
24 | grocery |
25 | healthcare (general) |
26 | home improvement / furnishings |
27 | insurance |
28 | legal services |
29 | manufacturing |
31 | mortgage |
32 | newsstand |
33 | nutrition |
34 | other |
35 | pharmaceuticals |
36 | property management |
37 | publishing |
38 | real estate |
39 | restaurant (other) |
40 | wholesale |
41 | salon / spa |
42 | technology |
43 | telecommunications |
44 | therapeutic |
45 | toy / gift / craft |
46 | transportation |
47 | virtual |
48 | restaurant (quick service) |
49 | restaurant (full service) |
82 | media |
83 | oil and gas |
84 | government contractor |
85 | warehousing |
118 | building use |
119 | other services |
120 | business support |
121 | materials |
122 | retail (general) |
154 | agriculture |
156 | mining |
157 | hospitality |
158 | retail bank |
159 | social services |
160 | airlines |
161 | chemicals |
162 | consumer services |
163 | distributors |
164 | it services |
165 | professional & commercial services |
166 | technology hardware |
167 | technology software |
168 | utilities |
169 | children's apparel |
170 | cinemas/theaters |
171 | department store |
172 | drug store |
173 | health & beauty |
174 | jewelry |
175 | men's apparel |
176 | shoes |
177 | retail (specialty) |
178 | women's apparel |
179 | broker dealer |
180 | childcare/play |
181 | hedge fund |
182 | liquor store |
183 | private equity |
212 | acupuncture |
213 | admin/support |
214 | allergy |
215 | ambulatory surgery center |
216 | cancer center |
217 | cardiology |
218 | chiropractic |
219 | dermatology |
220 | dialysis |
221 | emergency medicine |
222 | endocrinology |
223 | endoscopy |
224 | ent/ontology |
225 | eye center |
226 | family medicine |
227 | gastroenterology |
228 | hearing |
229 | hematology |
230 | infectious disease |
231 | infusion |
232 | internal medicine |
233 | multi-specialty |
234 | nephrology |
235 | neurology |
236 | obstetrics & gynecology |
237 | oncology |
238 | ophthamology |
239 | orthopedics |
240 | pain |
241 | pediatrics |
242 | plastic surgery |
243 | podiatry |
244 | psychiatry |
245 | pulmonology |
246 | physical medicine & rehabilitation |
247 | radiology & medical imaging |
248 | rheumatology |
249 | sleep center |
250 | surgery |
251 | urgent care |
252 | urology |
253 | weight & bariatrics |
254 | women's center |
255 | wound care & hyperbaric |
256 | bar |
257 | bookstore |
258 | coffee |
259 | convenience store |
260 | hardware |
261 | personal services |
262 | sporting goods |
263 | restaurant (fast casual) |
264 | dentistry |
265 | pharmacy |
298 | ophthalmology |
299 | serviced office |
Right
XML Representation of a lease's encumbrances and options
Nested under Lease
Parameter | Type | Description | Required |
---|---|---|---|
Type | Enum | rofo rofr rights to terminate must lease renewal expansion relocation parking sublease contraction other signage purchase kick out rofn rent review break uk - tenant act 1954 radius exclusive use co-tenancy | True |
Description | Text | Notes on the right/option/encumbrance | True |
EffectiveDate | Date | Date right becomes effective | False |
NoticeStartDate | Date | Start date | False |
NoticeEndDate | Date | End date | false |
RoleType | Enum | Tenant or landlord | False |
Fee | Numeric | Dollar value of termination fee | False |
Term | Int | Term in number of months | False |
NumberofOptions | Int | Count of the number of options | False |
RateType | enum | Percent or year | False |
RateNote | Varchar | Notes on Rate | False |
MinSqFt | Int | Min Sqfootage | False |
MaxSqFt | Int | Max Sqfootage | False |
TenantImprovement | Numeric | Tenant improvement $/SqFt | False |
Target
The spaces, floors, or properties that the right covers
Nested under Lease Deal Terms
Parameter | Type | Description | Required |
---|---|---|---|
TargetSourceID | Varchar | SourceID of the property that is being targeted | True |
EntireBuilding | Enum | True/false flag signifying if the entire building is targeted | True |
TargetFloorPosition | Int | Floor position int that is targeted | True |
TargetSpace | Varchar | SourceID of target space | True |
** Note that TargetFloorPosition will target all units assigned to that floor. If both TargetFloorPosition AND TargetSpace are included, it will target the entire floor designated AND the TargetSpace
Office Park
XML Representation of an office park
Parameter | Type | Description | Required |
---|---|---|---|
SourceID | String | The unique identifier for an office park | true |
Name | String | The name of the office park | false |
Properties | Array | Collection of tags of property source ids | false |
Sample XML
<PortfolioData>
<Properties>
<Property>
<SourceID>10000</SourceID>
<Name>My Building</Name>
<Address>
<Street>123 Fake St.</Street>
<City>New York</City>
<State>NY</State>
<PostalCode>10001</PostalCode>
<Country>US</Country>
</Address>
<BuildingClass>A</BuildingClass>
<Fund>My Fund</Fund>
<HasOffice>true</HasOffice>
<HasRetail />
<HasIndustrial />
<LeasingCompany />
<ManagingCompany />
<NumberOfFloors>2</NumberOfFloors>
<Owner>The Owner</Owner>
<RBA>2000</RBA>
<Submarket>Chelsea</Submarket>
<VacantSquareFeet>0</VacantSquareFeet>
<YearBuilt />
<Floors>
<Floor>
<FloorName>1st Floor</FloorName>
<FloorPosition>1</FloorPosition>
<RentableArea>1000</RentableArea>
</Floor>
<Floor>
<FloorName>2nd Floor</FloorName>
<FloorPosition>2</FloorPosition>
<RentableArea>2000</RentableArea>
</Floor>
</Floors>
<Spaces>
<Space>
<SourceID>10000-01-01</SourceID>
<Description>Great space on the first floor</Description>
<Suite>0101</Suite>
<AvailabilityType>not available</AvailabilityType>
<AvailabilityDate />
<FloorName>1st Floor</FloorName>
<FloorPosition>1</FloorPosition>
<FloorComposition>entire</FloorComposition>
<ListingDate />
<MaximumContiguous />
<MaximumDivisible />
<PriceIsNegotiable>true</PriceIsNegotiable>
<RentalPayType>psf_month</RentalPayType>
<RentalRateMax />
<RentalRateMin />
<RemeasuredSpaceAvailable>950</RemeasuredSpaceAvailable>
<SalePrice />
<SpaceAvailable>1000</SpaceAvailable>
<SpaceCondition />
<SpaceType />
<Subtitle />
<TransactionType>lease</TransactionType>
<VacantOnDate>2050-01-01</VacantOnDate>
<Lease>
<SourceID>lease123</SourceID>
<LeaseType>direct</LeaseType>
<LeaseCommencementDate>2010-10-01</LeaseCommencementDate>
<LeaseExpirationDate>2015-12-31</LeaseExpirationDate>
<LeaseTerm>999</LeaseTerm>
<Tenant>
<CompanyName>Tenant Company Inc.</CompanyName>
<Industry>consulting</Industry>
</Tenant>
<LeaseDealTerms>
<SourceID>lease123~0</SourceID>
<RentableArea>1125</RentableArea>
<Retail/>
<BaseRents>
<BaseRent>
<Amount>4721.05</Amount>
<EndDate>2013-12-31</EndDate>
<StartDate>2010-01-01</StartDate>
<Units>$/month</Units>
</BaseRent>
<BaseRent>
<Amount>4917.27</Amount>
<EndDate>2014-12-31</EndDate>
<StartDate>2014-01-01</StartDate>
<Units>$/month</Units>
</BaseRent>
<BaseRent>
<Amount>5064.79</Amount>
<EndDate>2015-12-31</EndDate>
<StartDate>2015-01-01</StartDate>
<Units>$/month</Units>
</BaseRent>
</BaseRents>
<FreeRents>
<FreeRent>
<Amount>-8250</Amount>
<EndDate>2010-05-31</EndDate>
<FreeRentType>gross</FreeRentType>
<StartDate>2010-01-01</StartDate>
<Units>$/month</Units>
</FreeRent>
</FreeRents>
<OpExs>
<OpEx>
<Amount>938</Amount>
<EndDate>2010-06-30</EndDate>
<StartDate>2010-07-01</StartDate>
<Units>$/month</Units>
</OpEx>
</OpExs>
<RealEstateTaxes>
<RealEstateTax>
<Amount>417</Amount>
<EndDate>2010-06-30</EndDate>
<StartDate>2010-07-01</StartDate>
<Units>$/month</Units>
</RealEstateTax>
</RealEstateTaxes>
<OtherRevenues>
<OtherRevenue>
<Amount>247</Amount>
<EndDate>2014-06-30</EndDate>
<StartDate>2013-07-01</StartDate>
<Type>other</Type>
<Units>$/month</Units>
</OtherRevenue>
</OtherRevenues>
</LeaseDealTerms>
<Rights>
<Right>
<Type>rofo</Type>
<Description>tenant has a rofo on suite 100 and all of floor 2</Description>
<NoticeStartDate>20014-12-20</NoticeStartDate>
<NoticeEndDate>2021-02-20</NoticeEndDate>
<EffectiveDate></EffectiveDate>
<ExpansionEndDate></ExpansionEndDate>
<RoleType>landlord</RoleType>
<Fee>0.00</Fee>
<Term></Term>
<RateType>fixed</RateType>
<RateNote></RateNote>
<MinSqFt>0</MinSqFt>
<MaxSqFt>0</MaxSqFt>
<TenantImprovement></TenantImprovement>
<Targets>
<Target_Properties>
<Target_Property>
<TargetSourceID>100</TargetSourceID>
<EntireBuilding>false</EntireBuilding>
<Target_Floors>
<TargetFloorPosition>2</TargetFloorPosition>
</Target_Floors>
<Target_Spaces>
<TargetSourceID>100-01-01</TargetSourceID>
</Target_Spaces>
</Target_Property>
</Target_Properties>
</Targets>
</Right>
</Rights>
</Lease>
</Space>
</Spaces>
</Property>
</Properties>
<OfficeParks>
<OfficePark>
<SourceID>20000</SourceID>
<Name>My Office Park</Name>
<Properties>
<SourceID>10000</SourceID>
</Properties>
</OfficePark>
</OfficeParks>
</PortfolioData>
This document is proprietary and confidential. No part of this document may be disclosed in any manner to a third party without the prior written consent of View the Space Inc.
Updated over 3 years ago