Private property exchange · XML

OpenPMX

Open Property Management Exchange is an open specification for private full-property files between property systems.

The exchange

Open specification. Private payload.

The OpenPMX specification is public so a property system can implement it. A real file contains confidential property information and is sent only to the organization named in Recipient, over HTTPS. The current PropBot importer does not ingest OpenPMX XML.

Element names follow the established OpenPMX section outline. Values use the current property catalog. OpenPMX is the private full-property exchange; OpenPMX Lite is the public RSS feed.

Open the XML Schema · Open the Schematron rules · Validate a file in your browser · Open the fictional example · Download the command-line validator

File structure

One property per file.

OpenPMXFile
  FileInfo                  Version, Sender, Recipient, MessageId, Created
  Government                optional confidential property facts
  SaleInformation           optional sale and contact facts
  Location                  address and usable coordinates
  ExteriorResidential | ExteriorCommercial
    interiors               zero or more

Each file contains one residential or commercial exterior and may contain zero or more matching interiors. Land and vacation-style listings use their numeric catalog types within these two exterior forms.

Field list

Property facts partners can exchange.

SectionElements and meaning
FileInfoVersion (fixed to propbot-openpmx-2026), Sender and Recipient organization names, MessageId (unique per sender), and Created.
GovernmentOptional confidential LegalDescription and Zoning.
SaleInformationOptional ContactName, ContactPhone, ContactEmail, ContactWebSite, Price, MLSNumber, Description, FinancingDetails, NOI, GOI, and CAP. Money values have an optional UnitMoneyMark currency child.
LocationRequired AddressLine1, Locality, Province, PostalCode, Country, and MapCoordinates containing Latitude and Longitude; optional AddressLine2.
Every exteriorRequired Title, TypeId, Category, Status, ForSale, and ForRent. Optional TypeId2, TypeId3, LeaseOption, LotSize, GarageSize, YearBuilt, NumberOfFloors, NumberOfUnits, ParkingSpaces, ParkingRatio, TrafficCount, Available, GroundLease, Notes, and Images.
Residential exteriorRequired Description; optional Neighborhood, WaterFront, TaxesPerYear, amount-valued AssociationFee, SecurityDeposit, ApplicationFee, UtilitiesIncluded (Gas, Electricity, Water, Cable, Trash), AcceptGovernmentAssistance, Refrigerator, Internet, Pets (Policy, Fee), Fitness, Schools (Elementary, Middle, High), Golf, Pool, CommunityPool, Spa, SportsClub, TennisCourts, BikePath, Boating, Courtyard, PlayGround, ClubHouse, Gated, PublicTransportation, LawnSprinklers, Fenced, and OnSiteLaundry. May contain repeated InteriorResidential elements.
Commercial exteriorOptional Description, Class, TaxesPerYear, BuildingSize, Cranes, Rail, Fenced, TrailerParking, DockDoors, and GradeDoors. May contain repeated InteriorCommercial elements.
Residential interiorRequired Title, Description, TypeId, Beds, Baths, and Size; optional Price, RentType, Room, AirConditioning, Alarm, Balcony, CableReady, Dishwasher, Disposal, FirePlace, GasStove, HardWood, Microwave, Patio, WasherDryerIncluded, WheelChair, Refrigerator, InternetAccess, VaultedCeilings, SecurityDeposit, NumberOfFloors, WindowUnits, Available, LeaseDuration, LeaseTerm, Heating, SubLeaseDate, Notes, and Images.
Commercial interiorRequired Title, Description, and Size; optional up to three TypeId values, Suite, Available, LeaseType, Price, RentType, LeaseTerm, SubLeaseDate, integer Procurement, ParkingSpaces, NumberOfFloors, MinDivisible, MaxContiguous, DockDoors, GradeDoors, Taxes, OperationalExpenses, Rail, Fenced, Cranes, TrailerParking, Sprinklers, Power, CeilingHeight, OfficeSpace, Cooling, Lighting, Heating, InternetAccess, WheelChairAccess, SecurityDeposit, Notes, and Images.
Each imageRequired URL; optional Caption, non-negative Order, and boolean Primary.

Categories are cfs, cfl, lfs, rfs, and rfr. IDs 56, 57, 67, and 74 use cfs for sale and rfr for rent. Type IDs and labels come from the property catalog. The ten statuses are Incomplete, Active, Closed, Contingent, Contingent Accepting Backup Offers, Expired, Pending, Pending Accepting Backup Offers, Temporary Off Market, and Withdrawn.

Rent cadence values are $/Day, $/Week, $/BiWeek, $/Month, $/Year, $/SF/Year, and $/SF/Month. Garage values are 0, 1, 2, 3+, 4+, and detached. Lot-size units are acres, sqfeet, and meters; building and interior area units are sqfeet and meters. The number is the element text: LotSize uses LotSizeMethod, BuildingSize uses BuildingSizeMethod, and Size, MinDivisible, MaxContiguous, and OfficeSpace use SizeMethod.

The XML Schema checks structure and catalog values. Schematron checks usable coordinates, category/type combinations, non-negative money and area values, residential exterior description, sale price and lot size, residential rental application fee, and required interior details. A leased interior needs rent and a security deposit. Contact fields remain optional.

Private exchange

Send the file to its named recipient.

OpenPMX may contain legal descriptions, income and financing facts, security deposits, application fees, utility obligations, and direct contact details. Keep real files private, use HTTPS, and send them only to the named recipient. The public example uses fictional organizations and a fictional property.

Read about the public OpenPMX Lite feed · Compare the property exchange formats

Related project

OpenPM is a separate legacy application.

OpenPM was PropBot’s PHP property management website. It is deprecated and is not part of the OpenPMX exchange specification.

OpenPM project information