Places API
Manage buildings, complexes, and property sites. Places are the top-level containers in the property hierarchy — every apartment, office, or commercial unit belongs to a place.
Quick Example
Code
Common Workflows
Set up a new apartment building
POST /api/places— Create the buildingPOST /api/places/{id}/estates— Add each apartment (Estates API)POST /api/places/{id}/estates/{id}/rooms— Define room layouts (Rooms API)POST /api/places/{id}/services— Configure building services
Add rent control to a property
GET /api/legislative-zones— Find the matching zone (Legislative Zones API)POST /api/places— Create place withlegislative_zone_id- Rent control rules are automatically applied to leases in this place
Overview
Places represent physical buildings or property complexes and serve as containers for:
- Estates: Individual rental units within the place
- Services: Building-wide services and amenities
- Energy Diagnostics: Building-level energy assessments
- Ownership: Current and historical ownership tracking
- Legal Information: Legal regime and administrative details
- Location Data: Address, coordinates, and access information
Authentication
All endpoints require authentication with the following permissions:
- PropertiesRead: For GET operations
- PropertiesWrite: For POST and PUT operations
- PropertiesDelete: For DELETE operations
Base URL
All place endpoints are prefixed with /api/places
Core Place Operations
List Places
GET /api/places
Retrieve all places for the tenant.
Response:
Code
Create Place
POST /api/places
Create a new place (building or complex).
Request Body:
Code
Response: 201 Created
Returns the created place object with generated ID and timestamps.
Get Place
GET /api/places/{id}
Retrieve a specific place by ID.
Path Parameters:
id(UUID): The place ID
Response: 200 OK
Returns the place object.
Update Place
PUT /api/places/{id}
Update an existing place. All fields are optional in update requests.
Path Parameters:
id(UUID): The place ID
Request Body:
Code
Response: 200 OK
Returns the updated place object.
Delete Place
DELETE /api/places/{id}
Delete a place (only possible if no estates are associated).
Path Parameters:
id(UUID): The place ID
Response: 204 No Content
Nested Resources
Estates Management
See Estates API for detailed estate operations within places.
Places can contain multiple estates accessed through:
- GET
/api/places/{id}/estates - POST
/api/places/{id}/estates - And other estate-specific endpoints
Services Management
List Place Services
GET /api/places/{id}/services
Retrieve all services associated with a place.
Path Parameters:
id(UUID): The place ID
Response: 200 OK
Code
Add Service to Place
POST /api/places/{id}/services
Add a service to a place.
Path Parameters:
id(UUID): The place ID
Request Body:
Code
Response: 201 Created
Returns the created service association.
Remove Service from Place
DELETE /api/places/{id}/services/{service_id}
Remove a service from a place.
Path Parameters:
id(UUID): The place IDservice_id(UUID): The service ID
Response: 204 No Content
Energy Diagnostics
See Energy Diagnosis API for energy assessments.
Energy diagnostics for places accessed through:
- GET
/api/places/{id}/energy-diagnoses
Data Types and Structures
Place Object
Code
Create Place Request
Code
Update Place Request
All fields are optional and will only update provided values:
Code
Enums and Categories
PlaceCategory
Individual- Single-family property or individual buildingCollective- Multi-unit building or apartment complex
PlaceLegalRegime
MonoPropriete- Single ownership (one owner for entire building)Copropriete- Co-ownership/Condominium (multiple owners in building)
Location and Address
Address Structure
Places require complete address information:
- address_line1: Primary street address (required)
- address_line2: Additional address details (optional)
- postal_code: Postal or ZIP code (required)
- city: City or municipality name (required)
GPS Coordinates
Optional latitude/longitude coordinates for mapping:
- latitude: Decimal degrees (-90.0 to 90.0)
- longitude: Decimal degrees (-180.0 to 180.0)
Building Access
- digicode: Entry code or access information
- number_of_floor: Total floors in building
Error Responses
Validation Errors
400 Bad Request
Code
Not Found
404 Not Found
Code
Dependency Constraint
409 Conflict
Code
Common Use Cases
Creating a New Apartment Building
- Create place with
POST /api/places - Set
place_categoryto "Collective" andlegal_regimeto "Copropriete" - Include building access information (digicode, number of floors)
- Add individual apartments as estates
- Configure building-wide services
Managing Single-Family Properties
- Create place with
place_categoryset to "Individual" - Set
legal_regimeto "MonoPropriete" - Create single estate representing the entire property
- Associate with individual owner
Building Service Management
- Add services like maintenance, security, cleaning
- Configure service calculation methods
- Track service costs across all estates in the building
Ownership Transfer
- Update
previous_owner_idwith currentowner_id - Set new
owner_id - Update associated estates if needed
- Track ownership history through timestamps
Renovation Tracking
- Update
renovation_datewhen work is completed - Use
descriptionto describe renovation scope - Update building access codes if changed during renovation
Business Rules
- Required Relationships: Places must have valid type, legislative zone, and owner
- Address Validation: Complete address information is mandatory
- Ownership Consistency: All estates in a place should reflect place ownership
- Legal Regime: Must match the actual legal structure of the property
- Deletion Constraints: Cannot delete places with associated estates or services
- Construction Date: Cannot be in the future
- Coordinate Validation: GPS coordinates must be within valid ranges
Integration Notes
- Place Types: Reference to the Types API for place categorization
- Legislative Zones: Integration with Legislative Zones API
- Owners: Reference to Owners API for ownership management
- Estates: Places contain multiple estates through nested routes
- Services: Building-level services affect all estates
- Energy Diagnostics: Building-level assessments complement estate-level diagnostics
- Geographic Information: GPS coordinates enable mapping and location services
French Real Estate Context
Legal Regimes
- MonoPropriété: Single ownership, common for individual houses
- Copropriété: Condominium system governed by French law
- Legal regime affects maintenance responsibilities and decision-making
Building Categories
- Individual: Single-family homes, individual buildings
- Collective: Apartment buildings, mixed-use complexes
- Category affects regulatory requirements and management structure
Legislative Zones
Places must be associated with appropriate legislative zones for:
- Rent control regulations
- Urban planning compliance
- Tax calculations
- Legal requirement adherence