Integration API Reference Guide
This document provides a comprehensive reference for the Monument Integration API. The API allows third-party systems to integrate with Monument’s facility management platform to access and manage core business entities.Base URL
All endpoints are prefixed with::portfolio is the defined database prefix (e.g., abc_selfstorage).
Authentication
All requests require an API key in the header:Authorization
Not all API keys will have access to all endpoints. Access is controlled through resource-based permissions that are configured per API key. Each endpoint requires specific access permissions:- READ access: Required to retrieve data from endpoints
- WRITE access: Required to create or update data
Unauthorized Endpoint Access Response
When an API key does not have the required permissions for an endpoint, the API will return: Status Code:401 Unauthorized
Response Body:
Unauthorized Portfolio Access Response
When an API key does not have the required permissions for a portfolio, the API will return: Status Code:404 Not found
Response Body:
- API key lacks READ permission for the requested resource type
- API key lacks WRITE permission for create/update operations
- API key is restricted from accessing specific portfolios (whitelist/blacklist configuration)
API Structure
The Integration API follows a consistent two-step pattern for retrieving entity data:Step 1: Get UUIDs
First, retrieve the UUIDs of entities you want to fetch. This endpoint supports filtering by date ranges and other criteria:updatedAt.lessOrEqual(optional): Filter entities updated on or before this date-timeupdatedAt.greaterOrEqual(optional): Filter entities updated on or after this date-timecreatedAt.lessOrEqual(optional): Filter entities created on or before this date-timecreatedAt.greaterOrEqual(optional): Filter entities created on or after this date-time- Additional entity-specific filters may be available
Step 2: Get Details by UUIDs
After obtaining UUIDs, retrieve the full details for those entities:Why This Pattern?
This two-step pattern provides several benefits:- Efficient Filtering: The UUID endpoint supports complex filtering without transferring large payloads
- Selective Retrieval: Fetch only the entities you need by their UUIDs
- Pagination Support: Handle large datasets by chunking UUID requests (see Entity Limits)
- Performance: UUID lists are lightweight, allowing you to determine what data to fetch before making heavier detail requests
Entity Limits
The Integration API enforces limits on the number of entities that can be retrieved in a single request to ensure optimal performance and prevent timeouts.Maximum UUIDs Per Request
Limit: A maximum of 1,000 UUIDs can be included in a singleget_by_uuids request.
Error Response: If you exceed this limit, the API will return:
Status Code: 400 Bad Request
Response Body:
Core Entities
The Integration API provides access to the following core business entities:Portfolio
Represents the top-level organization that owns facilities and manages operations. Endpoints:GET /api/:portfolio/portfolios/v1/portfolios- Get portfolio information
Facility
Represents a physical storage facility location. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/uuids- Get facility UUIDsPOST /api/:portfolio/portfolios/v1/facilities/get_by_uuids- Get facility details by UUIDs
facilityUuid: Unique identifierfacilityName: Name of the facilityaddress: Physical addressphone: Contact phone numberemail: Contact emailamenities: Array of available amenitiesoperatingHours: Facility operating schedule
Lead
Represents a potential customer who has expressed interest in renting a unit but has not yet completed the rental process. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/leads/uuids- Get lead UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/leads/get_by_uuids- Get lead details by UUIDs
leadUuid: Unique identifierprimaryPersonUuid: UUID of the primary contact personfacilityUuid: Associated facilityunitGroupUuid: Selected unit groupleadStatus: Current status (e.g., OPEN, PENDING, CONVERTED)leadType: Type of lead (PERSONAL or BUSINESS)
Tenant
Represents an active customer account that has completed the rental process and has an active lease. Endpoints:GET /api/:portfolio/portfolios/v1/tenants/uuids- Get tenant UUIDsPOST /api/:portfolio/portfolios/v1/tenants/get_by_uuids- Get tenant details by UUIDs
accountUuid: Unique identifier (also referred to as tenantUuid)primaryPersonUuid: UUID of the primary contact personbusinessName: Business name (for business accounts)taxId: Tax identification number (for business accounts)accountStatus: Current account status
Unit Rental Record
Represents an active rental agreement between a tenant and a facility for a specific unit. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/uuids- Get rental record UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/get_by_uuids- Get rental record details by UUIDs
unitRentalRecordUuid: Unique identifieraccountUuid: Associated tenant accountunitUuid: Associated unitfacilityUuid: Associated facilitystatus: Rental status (e.g., ACTIVE, VACATED, TRANSFERRED)startDate: Lease start dateendDate: Lease end date (if applicable)
Person
Represents an individual person who may be associated with leads, tenants, or other entities as a contact. Endpoints:GET /api/:portfolio/portfolios/v1/people/uuids- Get person UUIDsPOST /api/:portfolio/portfolios/v1/people/get_by_uuids- Get person details by UUIDs
onlyPrimaryContacts(boolean, optional): If true, only return persons who are the primaryPersonUuid for accounts or leads
personUuid: Unique identifierfirstName: First namelastName: Last nameemail: Email addressphone: Phone numberaddressLine1,addressLine2,city,state,zip,country: Address information
Delinquencies
Represents accounts that are past due on payments. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/delinquencies/uuids- Get delinquency UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/delinquencies/get_by_uuids- Get delinquency details by UUIDs
delinquencyUuid: Unique identifieraccountUuid: Associated tenant accountunitRentalRecordUuid: Associated rental recorddelinquencyStage: Current delinquency stageamountDue: Outstanding amountdaysPastDue: Number of days past due
Ledger Entries
Represents individual line items on a rental record’s ledger, including charges, payments, and adjustments. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/ledgerEntries/uuids- Get ledger entry UUIDs for a rental recordPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/ledgerEntries/get_by_uuids- Get ledger entries by UUIDs
lineItemLedgerUuid: Unique identifierunitRentalRecordUuid: Associated rental recorditemTypeUuid: Type of charge or paymentamount: Transaction amountdateCreated: Transaction datedescription: Transaction description
Item Types
Represents types of charges, fees, and services that can be applied to rental records (e.g., rent, late fees, additional services). Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/itemTypes/uuids- Get item type UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/itemTypes/get_by_uuids- Get item types by UUIDs
itemTypeUuid: Unique identifieritemTypeName: Name of the item typedescription: Descriptioncategory: Category (e.g., RENT, SERVICES, FEES)isRecurring: Whether the item is recurringisTaxable: Whether the item is subject to taxfeeType: Fee calculation type (FIXED_AMOUNT, PERCENTAGE, etc.)
Amenities
Represents features and services available at facilities or for specific units (e.g., climate control, drive-up access, 24/7 access). Note: Amenities are typically included in facility and unit detail responses rather than having dedicated endpoints. They appear as arrays within facility and unit group responses. Key Fields (when included in responses):amenityUuid: Unique identifiername: Name of the amenitydescription: Descriptionpresent: Boolean indicating if the amenity is available
Coverage
Represents insurance coverage options available to tenants. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/coverageHistory/uuids- Get coverage history UUIDsPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/coverageHistory/get_by_uuids- Get coverage history by UUIDs
coverageUuid: Unique identifierprovider: Coverage provider namepremiumInPennies: Premium amount in penniescoverageAmountInPennies: Coverage amount in penniesdescription: Description of coverage
Payment Profiles
Represents stored payment methods (credit cards or bank accounts) associated with tenant accounts. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/paymentProfiles/uuids- Get payment profile UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/paymentProfiles/get_by_uuids- Get payment profiles by UUIDs
paymentProfileUuid: Unique identifieraccountUuid: Associated tenant accountpaymentType: Type of payment method (CREDIT/DEBIT, ACH)lastFour: Last four digits of the payment methodisDefault: Whether this is the default payment methodautopayEnabled: Whether autopay is enabled
Notes
Represents notes and comments associated with various entities (leads, tenants, rental records, etc.). Endpoints:GET /api/:portfolio/portfolios/v1/notes/uuids- Get note UUIDsPOST /api/:portfolio/portfolios/v1/notes/get_by_uuids- Get notes by UUIDsPOST /api/:portfolio/portfolios/v1/notes/tenants/:accountUuid- Create note for tenantPOST /api/:portfolio/portfolios/v1/notes/leads/:leadUuid- Create note for lead
noteUuid: Unique identifierentityType: Type of entity the note is associated with (TENANT, LEAD, etc.)entityUuid: UUID of the associated entitycontent: Note content/textcreatedAt: Creation timestampcreatedBy: User who created the note
Unit Groups
Represents collections of similar storage units that share the same characteristics (size, features, pricing). Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/unitGroups/uuids- Get unit group UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/unitGroups/get_by_uuids- Get unit groups by UUIDs
unitGroupUuid: Unique identifierdescription: Description of the unit groupunitGroupDepth,unitGroupWidth,unitGroupHeight: Unit dimensionsamenities: Array of available amenitiesavailableUnitCount: Number of available unitsunitCount: Total number of units in the groupcurrentStreetRate: Current street rate in penniescurrentWebRate: Current web rate in pennies
Units
Represents individual physical storage units within a facility. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/units/uuids- Get unit UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/units/get_by_uuids- Get units by UUIDs
unitUuid: Unique identifierunitName: Unit identifier (e.g., “A-101”)facilityUuid: Associated facilityunitGroupUuid: Associated unit groupoccupancyStatus: Current status (AVAILABLE, OCCUPIED, RESERVED, etc.)
Vehicles
Represents vehicles associated with tenant accounts (for vehicle/RV storage). Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/vehicles/uuids- Get vehicle UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/vehicles/get_by_uuids- Get vehicles by UUIDs
vehicleUuid: Unique identifieraccountUuid: Associated tenant accountvehicleType: Type of vehiclemake: Vehicle makemodel: Vehicle modelvinNumber: Vehicle identification numberlicensePlateNumber: License plate number
Tasks
Represents tasks and to-dos associated with a facility, optionally linked to a specific lead or tenant. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/tasks/uuids- Get task UUIDs for a facilityPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/tasks/get_by_uuids- Get task details by UUIDsPOST /api/:portfolio/portfolios/v1/facilities/:facilityUuid/tasks- Create a task for a facility
taskCategory(enum: LEADS, TENANTS, DELINQUENCIES, OTHER, optional): Filter tasks by categorycompleted(string, optional): Filter by completion status —"true"for completed only,"false"for incomplete only; omit for allcreatedAt.greaterOrEqual(ISO 8601, optional): Filter tasks created on or after this date-timecreatedAt.lessOrEqual(ISO 8601, optional): Filter tasks created on or before this date-time
taskCategory determines which UUID is required: LEADS requires leadUuid; TENANTS, DELINQUENCIES, and OTHER require accountUuid. The other UUID field must be omitted.
Key Fields:
taskUuid: Unique identifiername: Task name (max 35 characters)description: Optional task description (max 100 characters)category: Task category (LEADS, TENANTS, DELINQUENCIES, OTHER)dueDate: Due date (day-only format)facilityUuid: Associated facilityfacilityName: Facility nameleadUuid,leadFirstName,leadLastName: Associated lead details (populated whencategoryis LEADS)tenantUuid,tenantFirstName,tenantLastName: Associated tenant details (populated whencategoryis TENANTS, DELINQUENCIES, or OTHER)completedAt: Timestamp when the task was completed, null if incompletecompletedByUserUuid: UUID of the user who completed the taskcreatedAt: Creation timestamp
Move-Out Requests
Represents a scheduled move-out request against an active unit rental record. Each rental record has at most one active request at a time. Endpoints:PUT /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/move-out- Schedule a move-out request, or update the existing active requestGET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/move-out- Get the active scheduled move-out request (responds404when there is none)DELETE /api/:portfolio/portfolios/v1/facilities/:facilityUuid/rentalRecords/:unitRentalRecordUuid/move-out- Cancel the active scheduled move-out request (idempotent — succeeds even when no active request exists)
PUT):
moveOutReasonUuid(string, required): UUID of the move-out reasonmoveOutDate(dateYYYY-MM-DD, required): Requested move-out date
moveOutReasonUuid must be one of the values returned by the Move-Out Reasons endpoint.
Key Fields:
moveOutRequestUuid: Unique identifier of the move-out requestunitRentalRecordUuid: Associated unit rental recordmoveOutReasonUuid: Associated move-out reasonrequestedMoveOutDate: The requested move-out date
Move-Out Reasons
Represents the active move-out reasons — the validmoveOutReasonUuid options when scheduling a move-out request.
Endpoints:
GET /api/:portfolio/portfolios/v1/move-out/reasons- Get active move-out reasons
moveOutReasonUuid: Unique identifier of the move-out reasonreasonDescription: Human-readable description of the move-out reason
Insurance Summary
Provides per-facility insurance enrollment and occupancy aggregates for a date range. Returns one row per scoped facility; out-of-scope facilities are dropped, and an empty scope returns an empty array. Endpoints:POST /api/:portfolio/portfolios/v1/summary/insurance- Get insurance enrollment/occupancy summary
facilityUuids(array of UUID, required): Facility UUIDs to aggregate over (1–1000)startDate(ISO date, required): Inclusive start of the reporting periodendDate(ISO date, required): Inclusive end of the reporting period
facilityUuid: Facility UUID this row aggregatesstartDate,endDate: Reporting period, echoed from the requesttotalActiveLeases: Distinct rentals active at any point in the periodtotalInsuredLeases: Distinct rentals with non-private coverage active at any point in the periodpctInsured:totalInsuredLeases / totalActiveLeases * 100, rounded to 2 decimals;0when there are no active leasesnewMoveIns: Rentals whose start date falls within the periodnewMoveInsInsured: Of the new move-ins, those with non-private coveragepctNewMoveInsInsured:newMoveInsInsured / newMoveIns * 100, rounded to 2 decimals;0when there are no new move-ins
Overlock Codes
Represents the active overlock/physical-lock codes for a unit, regardless of provider. A unit may have more than one active lock. Endpoints:GET /api/:portfolio/portfolios/v1/facilities/:facilityUuid/units/:unitUuid/overlock-code- Get the active overlock codes for a unit
lockCode: The active overlock/physical-lock code for the unitexternalLockId: The external (provider) lock identifierprovider: The physical lock provider (e.g.,DaVinci)unitUuid: UUID of the unitunitRentalRecordUuid: UUID of the unit rental record the lock is associated with, ornull(e.g., a lock on a vacant unit)
Error Handling
Common HTTP Status Codes
200 OK: Request successful201 Created: Resource created successfully400 Bad Request: Invalid request data (e.g., too many UUIDs, invalid input format)401 Unauthorized: API key lacks required permissions for the endpoint403 Forbidden: Access denied (e.g., portfolio access restrictions)404 Not Found: Resource not found500 Internal Server Error: Server error
Handling Errors
- Check Status Code: Determine the type of error from the HTTP status code
- Read Error Message: The
messagefield provides specific details about what went wrong - Retry Logic: For transient errors (5xx), implement exponential backoff retry logic
- Contact Support: For persistent authorization errors (401/403), contact Monument Integrations Support Team to verify API key permissions
Best Practices
- Use Date Filters: When fetching UUIDs, use date filters to limit the dataset and reduce processing time
- Implement Chunking: Always split large UUID arrays into chunks of 1,000 when calling
get_by_uuids - Cache UUIDs: UUID lists change less frequently than detail data - consider caching UUID responses
- Handle Rate Limits: Implement rate limiting and retry logic to handle API throttling gracefully
- Monitor Errors: Log and monitor 401/403 errors to identify permission issues early
- Use Appropriate Filters: Leverage entity-specific filters (e.g.,
onlyPrimaryContactsfor people) to reduce unnecessary data transfer

