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
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

