Skip to content

Create Commercial Deal

Creates a new deal for a commercial property type (Office, Retail, Industrial, Self Storage, etc.) along with its collateral, component, and optional living unit records.

Key Details

  • address.fullAddress is validated against the Google Places API. Provide a complete street address (e.g., "1250 Ocean View Drive, San Diego, CA 92101"). Alternatively, supply address.placeId for exact geocoding.
  • propertyType must be a commercial asset type — one of Office, Retail, Industrial, Self_Storage, Distribution_Warehouse, Flex_Office, Special_Purpose, Land, Senior_Housing, or Mixed. Use Create Residential Deal for Multi_Family_Apartments or Create Hotel Deal for Hotel.
  • ownerId is the Blooma user ID (email address) of the deal owner.
  • commercialLivingUnitCreateDto defines the initial unit mix — each entry represents a commercial space (suite, floor, size). frontEndGridLineNumber controls display ordering.
  • loanAmount is in USD. loanTerm is in months.
  • On success, returns createdEntityId — the UUID of the newly created deal. Blooma automatically generates the associated collateral and component records.
  • If the address matches an existing deal, the response may return a Duplicated error code.

Request

Type: application/json

Schema: CreateCommercialDealDto

ownerId string

Blooma user ID (email address) of the deal owner

dealName string

address AddressCreateDto
fullAddress string

Complete street address validated by Google Places API (e.g., "1600 Amphitheatre Parkway, Mountain View, CA 94043")

additionalFreeText string

Additional address information such as suite or unit number

placeId string

Google Places unique identifier. If provided, overrides fullAddress

latLng LatLng

lat number(double)

lng number(double)

propertyType string(enum)

Commercial property category (e.g., Office, Retail, Industrial)

Available enum values: None, Mixed, Hotel, Industrial, Multi_Family_Apartments, Office, Retail, Self_Storage, Land, Special_Purpose, Senior_Housing, Distribution_Warehouse, Flex_Office, Portfolio

loanType string(enum)

Available enum values: Unknown, Acquisition, Acquisition_Construction, Refinance, Refinance_Construction, Construction, Stabilization, Bridge, Permanent

loanAmount number(double)

Requested or originated loan amount, in USD

loanTerm number(double)

Loan maturity term, in months

commercialLivingUnitCreateDto array [ CommercialLivingUnitCreateDto ]
frontEndGridLineNumber string

Internal value used to order list

description string

Description of commercial unit mix line item

suite string

Suite of commercial unit mix line item

floor number(double)

Floor of commercial unit mix line item

unitSize number(double)

Total square footage for this commercial unit line item

Response

Status: 200

Type: application/json

Schema: CreateResponseDto

success boolean

Indicates whether the API request completed successfully

error ErrorDto
target string

Field or parameter that caused the error

code string(enum)

Error code (e.g., Duplicated, MissingMandatoryField, InvalidCreateValues, MissingEntity)

Available enum values: Duplicated, MissingMandatoryField, InvalidCreateValues, Existing, ValidationError, MissingEntity

message string

details array [ ErrorDto ]
createdEntityId string

UUID of the newly created entity

POST
/api/apiGateway/createCommercialDeal
Request Body
{
  "ownerId": "string",
  "dealName": "string",
  "address": {
    "fullAddress": "string",
    "additionalFreeText": "string",
    "placeId": "string",
    "latLng": {
      "lat": 0.0,
      "lng": 0.0
    }
  },
  "propertyType": "None",
  "loanType": "Unknown",
  "loanAmount": 0.0,
  "loanTerm": 0.0,
  "commercialLivingUnitCreateDto": [
    {
      "frontEndGridLineNumber": "string",
      "description": "string",
      "suite": "string",
      "floor": 0.0,
      "unitSize": 0.0
    }
  ]
}
Response
{
  "success": true,
  "error": {
    "target": "string",
    "code": "Duplicated",
    "message": "string",
    "details": [
      {}
    ]
  },
  "createdEntityId": "string"
}