openapi: 3.0.0 info: title: Rentberry description: Renting Done Right. Finally. version: 4 paths: /v{version}/applicant/proof-income: post: tags: - Applications summary: Upload a new applicant attachment. description: Available since API version 1. Requires ROLE_USER. operationId: post_api_v1_applicant_attachment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicantAttachmentType' responses: '201': description: Attachment uploaded. content: application/json: schema: $ref: '#/components/schemas/ApplicantAttachment' '400': description: Validation failed. security: - XAuthToken: [] /v{version}/applicant/proof-income/{id}: post: tags: - Applications summary: Update an existing applicant attachment. description: Available since API version 1. Requires ROLE_USER and ownership of the attachment. operationId: post_api_v1_applicant_attachment_edit parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicantAttachmentType' responses: '200': description: Attachment updated. content: application/json: schema: $ref: '#/components/schemas/ApplicantAttachment' '400': description: Validation failed. '403': description: Forbidden security: - XAuthToken: [] delete: tags: - Applications summary: Delete an applicant attachment. description: Available since API version 1. Requires ROLE_USER and ownership of the attachment. operationId: delete_api_v1_applicant_attachment_delete parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ responses: '204': description: Attachment deleted. '401': description: Unauthorized '403': description: Forbidden security: - XAuthToken: [] /v{version}/applicant/proof-income/download/{id}: get: tags: - Applications summary: Download an applicant attachment file. description: Available since API version 1. Requires ROLE_USER and ownership of the attachment. operationId: get_api_v1_applicant_attachment_download parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ responses: '200': description: File download. '401': description: Unauthorized '403': description: Forbidden security: - XAuthToken: [] /v{version}/applicant: get: tags: - Applications summary: Retrieve the last active applicant for the authenticated user. description: Available since API version 1. Requires ROLE_USER. operationId: get_api_v1_applicant_last parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Applicant data. content: application/json: schema: $ref: '#/components/schemas/Applicant' '404': description: Applicant not found. security: - XAuthToken: [] post: tags: - Applications summary: Create a new applicant record. description: Available since API version 1. Requires ROLE_USER. operationId: post_api_v1_applicant_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicantFormType' responses: '200': description: Applicant created. content: application/json: schema: $ref: '#/components/schemas/Applicant' '400': description: Validation failed or bad request. '403': description: Phone not verified. '409': description: Application already has an applicant. security: - XAuthToken: [] /v{version}/applicant/{id}: put: tags: - Applications summary: Submit the applicant for review. description: Available since API version 1. Requires ROLE_USER and ownership of the applicant. operationId: put_api_v1_applicant_submit parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ responses: '200': description: Applicant submitted successfully. content: application/json: schema: $ref: '#/components/schemas/Applicant' '403': description: Not owner of applicant. '409': description: Application is withdrawn or declined. security: - XAuthToken: [] post: tags: - Applications summary: Edit an existing applicant. description: Available since API version 1. Requires ROLE_USER and ownership of the applicant. operationId: post_api_v1_applicant_edit parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicantFormType' responses: '200': description: Applicant updated. content: application/json: schema: $ref: '#/components/schemas/Applicant' '400': description: Validation failed. '403': description: Phone not verified or not owner of applicant. '409': description: Application is withdrawn. security: - XAuthToken: [] /v{version}/applicant/list: get: tags: - Applications summary: Retrieve list of applicants. description: Available since API version 1. Requires ROLE_USER. operationId: get_api_v1_get_applicants_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of applicants. content: application/json: schema: type: array items: $ref: '#/components/schemas/Applicant' '401': description: Unauthorized security: - XAuthToken: [] /v{version}/apartment/apply/{id}: get: tags: - Applications summary: Get application details description: Available since API version 1. Returns detailed information about a specific application, including pricing status, notifications, and competitive data. operationId: get_api_v1_apartment_apply_get parameters: - name: id in: path description: Application ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ApplyResponse' '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to view this application '404': description: Application not found security: - XAuthToken: [] post: tags: - Applications summary: Edit application description: Available since API version 1. Modifies an existing application, updating price, deposit, and other details. operationId: post_api_v1_apartment_apply_edit parameters: - name: id in: path description: Application ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: properties: price: description: Updated monthly rental price offer type: number format: float deposit: description: Updated security deposit offer type: number format: float moveIn: description: Updated desired move-in date type: string format: date comment: description: Updated comment type: string type: object responses: '200': description: Application updated successfully content: application/json: schema: $ref: '#/components/schemas/ListingApplication' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this application '404': description: Application not found '1004': description: Cannot edit application that has already been accepted by homeowner security: - XAuthToken: [] delete: tags: - Applications summary: Decline or withdraw application description: Available since API version 1. Declines an application (if called by listing owner) or withdraws it (if called by applicant). operationId: delete_api_v1_apartment_apply_decline parameters: - name: id in: path description: Application ID required: true schema: type: integer pattern: \d+ - name: declinedReason in: query description: Reason for declining (only used when listing owner declines) schema: type: string default: homeownerDecision enum: - homeownerDecision - otherCandidate - notRentedYet - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application declined or withdrawn successfully content: application/json: schema: $ref: '#/components/schemas/ListingApplication' '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to decline/withdraw this application '404': description: Application not found security: - XAuthToken: [] /v{version}/apartment/apply/apartment/{id}: get: tags: - Applications summary: Get applications for a specific listing description: Available since API version 1. Returns applications received for a specific listing owned by the authenticated user. operationId: get_api_v1_apartment_apply_by_apartment parameters: - name: id in: path description: Listing ID required: true schema: type: integer - name: active in: query description: Filter by active status (true = active applications, false = all applications) schema: type: boolean default: true - name: limit in: query description: Number of items per page schema: type: integer default: 9 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of applications for the listing content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ListingApplication' pagination: type: object counters: description: DEPRECATED - Notification counters for the listing properties: applications: description: Count of applications with notifications type: integer expiredNotifications: description: Count of unread expired property notifications type: integer type: object type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this listing '404': description: Listing not found security: - XAuthToken: [] /v{version}/apartment/apply: get: tags: - Applications summary: Get applications sent by authenticated user description: Available since API version 1. Returns a list of applications submitted by the authenticated user. operationId: get_api_v1_apartment_apply_list parameters: - name: deleted in: query description: Filter by deleted status (0 = active applications, 1 = deleted applications) schema: type: integer default: 0 enum: - 0 - 1 - name: limit in: query description: Number of items per page schema: type: integer default: 9 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of sent applications with notification data and status information content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ApplyResponse' pagination: type: object type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] post: tags: - Applications summary: Create a new application description: Available since API version 1. Creates a new application for a listing. operationId: post_api_v1_apartment_apply_add parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - listing - price - deposit - moveIn properties: listing: description: Listing ID type: integer price: description: Offered monthly rental price type: number format: float deposit: description: Offered security deposit type: number format: float moveIn: description: Desired move-in date (YYYY-MM-DD) type: string format: date comment: description: Optional comment for the application type: string roommates: description: Optional list of roommates type: array items: type: object type: object responses: '200': description: Application created successfully content: application/json: schema: $ref: '#/components/schemas/ListingApplication' '400': description: Bad request - Validation failed content: application/json: schema: type: object '401': description: Unauthorized - Missing or invalid authentication token '1001': description: Listing already rented '1002': description: Listing not applicable for applications '1003': description: Cannot apply to your own listing security: - XAuthToken: [] /v{version}/apartment/apply/confirm/{id}: post: tags: - Applications summary: Confirm application (DEPRECATED) description: Available since API version 1. DEPRECATED - Used only for mobile apps. Confirms an application by setting necessary confirmation flags. operationId: post_api_v1_apartment_apply_confirm parameters: - name: id in: path description: Application ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: properties: confirm: description: Confirmation flag type: boolean type: object responses: '200': description: Application confirmed successfully content: application/json: schema: $ref: '#/components/schemas/ListingApplication' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this application '404': description: Application not found deprecated: true security: - XAuthToken: [] /v{version}/apartment/apply/accept/{id}: put: tags: - Applications summary: Accept application description: Available since API version 1. Accepts an application, creating a rental agreement and marking the listing as rented. operationId: put_api_v1_apartment_apply_accept parameters: - name: id in: path description: Application ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application accepted successfully, rental created content: application/json: schema: description: Rental object created from the application type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to accept this application '404': description: Application not found '1005': description: Listing already rented security: - XAuthToken: [] /v{version}/auth: get: tags: - Auth summary: Get current user session information description: Available since API version 2. Retrieves authenticated user session information including notifications counters. operationId: get_api_v2_auth_session parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns user session data content: application/json: schema: properties: auth: description: Authentication status type: boolean counters: description: Notification counters properties: messagesTenant: description: Count of unread messages for tenant type: integer messagesHomeowner: description: Count of unread messages for homeowner type: integer propertiesHomeowner: description: Combined count of applications, contracts and expired properties type: integer screeningCounter: description: Count of unread screening notifications type: integer propertiesTenant: description: Combined count for signatures, contracts and applications type: integer openHousesApplies: description: Count of open house applications type: integer placeCounter: description: Count of signatures and contracts notifications type: integer appliesCounter: description: Count of application notifications type: integer emailVerified: description: Flag indicating if email needs verification (1 = not verified) type: integer csMyCampaigns: description: Count of campaign notifications type: integer csReceived: description: Count of received notifications type: integer csSupported: description: Count of support notifications type: integer type: object user: $ref: '#/components/schemas/UserAuthResponseV3' type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/auth/counters: get: tags: - Auth - Notifications summary: Get user notification counters description: Available since API version 4. Retrieves counts of various notification types for the authenticated user. operationId: get_api_v4_notifications_counters parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns notification counters content: application/json: schema: properties: messagesTenant: description: Count of unread messages for tenant role type: integer messagesHomeowner: description: Count of unread messages for homeowner role type: integer propertiesHomeowner: description: Count of property-related notifications for homeowner type: integer screeningCounter: description: Count of unread screening completion notifications type: integer propertiesTenant: description: Count of property-related notifications for tenant type: integer openHousesApplies: description: Count of open house applications type: integer placeCounter: description: Count of new signatures and unviewed contracts type: integer appliesCounter: description: Count of application notifications type: integer emailVerified: description: Flag indicating if email needs verification (1 = not verified) type: integer rentalPaymentsTenant: description: DEPRECATED - Count of rental payment notifications for tenant type: integer paymentsTenant: description: Count of payment expiration notifications for tenant type: integer paymentsHomeowner: description: Count of payment notifications for homeowner type: integer rentalPaymentsLandlord: description: DEPRECATED - Count of rental payment notifications for landlord type: integer csMyCampaigns: description: Count of campaign notifications type: integer csReceived: description: Count of received notifications type: integer csSupported: description: Count of support notifications type: integer type: object '401': description: Unauthorized - User is not authenticated '403': description: Forbidden - User does not have sufficient permissions security: - XAuthToken: [] /v{version}/auth/password: post: tags: - Auth summary: Request password reset description: Available since API version 1. operationId: post_api_v1_auth_password_restore parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - username properties: username: description: User email address type: string format: email type: object responses: '200': description: Password reset email sent successfully '400': description: Invalid email format /v{version}/auth/register: post: tags: - Auth - Registration summary: Register a new user description: Available since API version 3. operationId: post_api_v3_auth_register parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - username - password - nameFirst - nameLast properties: username: type: string format: email password: type: string nameFirst: type: string nameLast: type: string oauthConnectId: type: string oauthProvider: type: string recaptchaResponse: type: string isRaiUser: description: Mark user as RAI user (only sets to true, never resets) type: boolean type: object responses: '200': description: User registered successfully content: application/json: schema: $ref: '#/components/schemas/User2' '400': description: Validation failed '429': description: Rate limit exceeded '1004': description: User already registered '1005': description: User blocked /v{version}/auth/token: post: tags: - Auth summary: Authenticate user and get token description: Available since API version 1. operationId: post_api_v1_auth_token parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - username - plainPassword properties: username: type: string format: email plainPassword: type: string oauthConnectId: type: string oauthProvider: type: string isRaiUser: description: Mark user as RAI user (only sets to true, never resets) type: boolean type: object responses: '200': description: Authentication successful content: application/json: schema: properties: auth_token: type: string type: object '400': description: Validation failed '401': description: Authentication failed '1005': description: User blocked or not verified /v{version}/auth/email-otp/request: post: tags: - Auth summary: Request OTP code for email authentication description: Sends a 4-digit OTP code to the specified email address for passwordless login or registration. operationId: post_api_v1_auth_email_otp_request parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - email properties: email: type: string format: email type: object responses: '200': description: OTP code sent (same response regardless of email existence) content: application/json: schema: properties: message: type: string example: OK type: object '400': description: Validation failed '429': description: Rate limit exceeded /v{version}/auth/email-otp/verify: post: tags: - Auth summary: Verify OTP code and login or register description: Verifies the 4-digit OTP code. If user exists - logs in, if not - creates a new account. operationId: post_api_v1_auth_email_otp_verify parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - email - code properties: email: type: string format: email code: type: integer maximum: 9999 minimum: 1000 nameFirst: description: Optional, used for registration type: string nameLast: description: Optional, used for registration type: string isRaiUser: description: Mark user as RAI user (only sets to true, never resets) type: boolean type: object responses: '200': description: Login or registration successful content: application/json: schema: $ref: '#/components/schemas/UserAuthResponse' '400': description: Invalid or expired code /v{version}/oauth/{provider}: get: tags: - Auth - OAuth summary: Get OAuth authorization URL description: Available since API version 1. Returns the URL to initiate OAuth authorization with the specified provider. operationId: get_api_v1_oauth_init parameters: - name: provider in: path description: OAuth provider name (e.g., "google", "apple") required: true schema: type: string pattern: google|google\.ios|apple|apple\.app|apple\.rai enum: - google - apple - name: redirectUrl in: query description: URL to redirect after OAuth authentication schema: type: string - name: authActionType in: query description: Type of authentication action (e.g., "login", "register", "connect") schema: type: string enum: - login - register - connect - name: prevUrl in: query description: Previous URL to return to after authentication schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: OAuth authorization URL successfully generated content: application/json: schema: properties: oauthUrl: description: URL to redirect the user to for OAuth authorization type: string type: object '400': description: Invalid provider or parameters '429': description: Rate limit exceeded /v{version}/oauth/apple/callback: post: tags: - Auth - OAuth summary: Handle Apple OAuth callback description: Available since API version 4. Processes the callback from Apple OAuth authentication and redirects to the authentication page. operationId: post_api_v4_oauth_apple_callback parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: description: Apple callback data content: application/json: schema: properties: code: description: Authorization code from Apple type: string state: description: State parameter for CSRF protection type: string id_token: description: JWT ID token from Apple type: string user: description: User information from Apple (JSON string) type: string error: description: Error message if authentication failed type: string type: object responses: '302': description: Redirect to authentication page headers: Location: description: URL to redirect to schema: type: string '400': description: Invalid callback data '429': description: Rate limit exceeded /v{version}/oauth/{provider}/authorize/code: get: tags: - Auth - OAuth summary: Authorize via OAuth code description: Available since API version 2. Processes OAuth authorization code from any supported provider. operationId: get_api_v1_oauth_authorize parameters: - name: provider in: path description: OAuth provider name required: true schema: type: string pattern: google|google\.ios|apple|apple\.app|apple\.rai enum: - google - apple - name: code in: query description: Authorization code from the provider required: true schema: type: string - name: authActionType in: query description: Type of authentication action (login, register, connect) schema: type: string enum: - login - register - connect - name: isRaiUser in: query description: Mark user as RAI user. Pass "1" or "true" to set. Only sets to true, never resets. schema: type: string enum: - '0' - '1' - 'true' - 'false' - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Authorization successful content: application/json: schema: $ref: '#/components/schemas/OAuthUserResponse' '400': description: No OAuth code provided content: application/json: schema: properties: error: type: string type: object example: error: No OAuth code provided '401': description: Authorization failed content: application/json: schema: properties: error: type: string type: object example: error: Invalid OAuth code '429': description: Rate limit exceeded /v{version}/oauth/google/authorize/token: post: tags: - Auth - OAuth summary: Verify Google One Tap token description: Available since API version 4. Verifies and processes a Google One Tap authentication token. operationId: post_api_v4_google_one_tap parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - token properties: token: description: Google One Tap JWT token type: string authActionType: description: Type of authentication action (login, register, connect) type: string isRaiUser: description: Mark user as RAI user (only sets to true, never resets) type: boolean provider: description: Google provider variant (google, google.ios). Defaults to google. type: string enum: - google - google.ios type: object responses: '200': description: Token verification successful content: application/json: schema: $ref: '#/components/schemas/OAuthUserResponse' '401': description: Token verification failed content: application/json: schema: properties: error: type: string type: object '429': description: Rate limit exceeded /v{version}/oauth/{provider}/authorize/access-token: get: tags: - Auth - OAuth summary: Authorize via OAuth access token description: Available since API version 2. Processes OAuth short-lived access token from any supported provider. operationId: get_api_v1_oauth_authorize_by_short_lived_access_token parameters: - name: provider in: path description: OAuth provider name required: true schema: type: string pattern: google|google\.ios|apple|apple\.app|apple\.rai enum: - google - apple - name: code in: query description: Short-lived access token from the provider required: true schema: type: string - name: type in: query description: Authentication action type schema: type: string - name: isRaiUser in: query description: Mark user as RAI user. Pass "1" or "true" to set. Only sets to true, never resets. schema: type: string enum: - '0' - '1' - 'true' - 'false' - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Authorization successful content: application/json: schema: $ref: '#/components/schemas/OAuthUserResponse' '400': description: No OAuth code provided content: application/json: schema: properties: error: type: string type: object '401': description: Authorization failed content: application/json: schema: properties: error: type: string type: object '429': description: Rate limit exceeded /v{version}/oauth/disconnect/{provider}: delete: tags: - Auth - OAuth summary: Disconnect OAuth provider description: Available since API version 1. Removes the connection between user account and OAuth provider. operationId: delete_api_v1_oauth_authorize_disconnect_user parameters: - name: provider in: path description: OAuth provider ID to disconnect required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Provider disconnected successfully content: application/json: schema: type: object '400': description: No connected user for this provider content: application/json: schema: properties: error: type: string type: object '403': description: Trying to disconnect provider that belongs to another user content: application/json: schema: properties: error: type: string type: object '401': description: Unauthorized - User is not authenticated '404': description: Provider not found security: - XAuthToken: [] /v{version}/breadcrumbs/{listingType}: get: tags: - Breadcrumbs summary: Get breadcrumbs for listing type description: Available since API version 1. Returns breadcrumbs navigation structure for specified listing type. operationId: get_api_v1_get_breadcrumbs parameters: - name: listingType in: path description: Type of listing required: true schema: type: string pattern: (apartment|house|condo|townhouse|duplex|loft|room) enum: - apartment - house - condo - townhouse - duplex - loft - room - name: transactionType in: query description: 'Type of transaction (default: rental)' schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Breadcrumbs schema for the specified listing type content: application/json: schema: description: Structured breadcrumbs navigation data type: object /v{version}/complain/user: post: tags: - Complaints summary: Create a complaint against a user. description: Available since API version 1. Creates a complaint against another user. operationId: post_api_v1_complain_user_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ComplainUserType' responses: '200': description: Complaint created successfully. content: application/json: schema: $ref: '#/components/schemas/ComplainUser' '400': description: Validation failed or user already reported '401': description: Unauthorized security: - XAuthToken: [] /v{version}/complain/apartment: post: tags: - Complaints summary: Create a complaint against an apartment listing. description: Available since API version 1. Creates a complaint against an apartment listing. operationId: post_api_v1_complain_apartment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ComplainListingType' responses: '200': description: Complaint created successfully. content: application/json: schema: $ref: '#/components/schemas/ComplainApartment' '400': description: Validation failed or apartment not found '401': description: Unauthorized security: - XAuthToken: [] /v{version}/contract: get: tags: - Contracts summary: List signed contracts description: Available since API version 1. Returns a list of signed contracts for the authenticated user. operationId: get_api_v1_contract_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of signed contracts content: application/json: schema: properties: items: description: List of contracts type: array items: $ref: '#/components/schemas/Contract' type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] post: tags: - Contracts summary: Create a new contract description: Available since API version 1. Creates a new contract based on a template and associates it with a rental. operationId: post_api_v1_contract_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - contractTemplateId - rentalId properties: contractTemplateId: description: ID of the contract template to use type: integer rentalId: description: ID of the rental to associate with the contract type: integer signerEmail: description: Email of the signer (optional) type: string format: email signerName: description: Name of the signer (optional) type: string type: object responses: '200': description: Contract created successfully content: application/json: schema: properties: id: description: Contract ID type: integer url: description: URL for editing the contract type: string type: object '400': description: Bad request - validation failed '402': description: Payment required - Feature is locked '404': description: Contract template or rental not found '405': description: (Real code 6018) Template is not owned by current user '406': description: (Real code 6023) Cannot create contract for someone else's apartment '407': description: (Real code 6025) Template error - cannot resolve contract template file security: - XAuthToken: [] /v{version}/contract/publish/{id}: post: tags: - Contracts summary: Publish contract description: Available since API version 1. Initiates the contract publishing process and returns signing URL if embedded signing is required. operationId: post_api_v1_contract_publish parameters: - name: id in: path description: Contract ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract published successfully or signing URL returned content: application/json: schema: properties: url: description: URL for embedded signing (if applicable) type: string type: object '401': description: Unauthorized - Missing or invalid authentication token '400': description: Error - Signature not found or unable to generate signing URL security: - XAuthToken: [] /v{version}/contract/invite/{id}: post: tags: - Contracts summary: Invite to sign contract description: Available since API version 1. Sends an invitation email to the homeowner to sign a contract. operationId: post_api_v1_contract_invite parameters: - name: id in: path description: Rental ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Invitation sent successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '404': description: Rental not found '500': description: Error sending email security: - XAuthToken: [] /v{version}/contract/rental/{id}: get: tags: - Contracts summary: List contracts for a rental description: Available since API version 1. Returns a list of contracts associated with a specific rental. operationId: get_api_v1_contract_rental_list parameters: - name: id in: path description: Rental ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of contracts for the rental content: application/json: schema: properties: items: description: List of contracts with notification counts type: array items: $ref: '#/components/schemas/Contract2' type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to view this rental '404': description: Rental not found security: - XAuthToken: [] /v{version}/contract/sign/{id}: get: tags: - Contracts summary: Get contract signing URL description: Available since API version 1. Returns a URL for signing a contract using embedded signing. operationId: get_api_v1_contract_sign parameters: - name: id in: path description: Contract ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract signing URL returned content: application/json: schema: properties: url: description: URL for embedded signing type: string type: object '403': description: Forbidden - User does not have permission to view this rental '404': description: Contract not found '405': description: (Real code 6024) Contract already signed '400': description: Error getting signing URL /v{version}/contract/sign/token/{token}: get: tags: - Contracts summary: Sign contract with token description: Available since API version 1. Returns a URL for signing a contract using a sign token. operationId: get_api_v1_contract_sign_by_token parameters: - name: token in: path description: Contract sign token required: true schema: type: string pattern: ^\w+$ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract signing URL returned content: application/json: schema: properties: url: description: URL for embedded signing type: string type: object '404': description: Token not found '405': description: (Real code 6024) Contract already signed '400': description: Error getting signing URL /v{version}/contract/{id}/signatures: get: tags: - Contracts summary: Get contract signatures description: Available since API version 1. Returns information about signatures for a specific contract. operationId: get_api_v1_contract_signatures parameters: - name: id in: path description: Contract ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract signatures information content: application/json: schema: description: List of contract signatures type: array items: $ref: '#/components/schemas/ContractSignature2' '403': description: Forbidden - User does not have permission to view this contract '404': description: Contract not found /v{version}/contract/{id}: delete: tags: - Contracts summary: Delete contract description: Available since API version 1. Deletes a contract. Only the homeowner of the associated listing can delete the contract. operationId: delete_api_v1_contract_delete parameters: - name: id in: path description: Contract ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract deleted successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to delete this contract '404': description: Contract not found security: - XAuthToken: [] /v{version}/contract/download/{id}: get: tags: - Contracts summary: Download contract description: Available since API version 1. Downloads the signed contract as a PDF file. operationId: get_api_v1_contract_download parameters: - name: id in: path description: Contract ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract PDF file headers: Content-Disposition: description: Attachment filename schema: type: string content: application/pdf: [] '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to download this contract '400': description: Error downloading contract file security: - XAuthToken: [] /v{version}/contract/callback: post: tags: - Contracts summary: Handle contract signing callback description: Available since API version 1. Processes callbacks from Dropbox Sign when contracts are signed or declined. operationId: post_api_v1_contract_callback parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: properties: json: description: JSON payload from Dropbox Sign containing event data type: string example: '{"event":{"event_type":"signature_request_signed","event_metadata":{"related_signature_id":"abc123"}}}' type: object responses: '200': description: Callback processed successfully content: application/json: schema: type: string example: Hello API Event Received '400': description: Bad request - Invalid callback payload content: application/json: schema: type: string example: No signature provided /v{version}/contract/template: get: tags: - Contract Templates summary: List contract templates description: Available since API version 1. Returns a paginated list of contract templates owned by the authenticated user. operationId: get_api_v1_contract_template_list parameters: - name: page in: query description: Page number schema: type: integer default: 1 - name: limit in: query description: Number of items per page schema: type: integer default: 10 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of contract templates content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ContractTemplate' pagination: properties: total: description: Total number of items type: integer count: description: Number of items on current page type: integer perPage: description: Number of items per page type: integer lastPage: description: Last page number type: integer currentPage: description: Current page number type: integer type: object type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] post: tags: - Contract Templates summary: Create contract template description: Available since API version 1. Uploads and creates a new contract template. operationId: post_api_v1_contract_template_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: required: - name - contractTemplateFile properties: name: description: Name of the contract template type: string example: Residential Lease Agreement contractTemplateFile: description: Contract template file (PDF) type: string format: binary type: object responses: '200': description: Contract template created successfully content: application/json: schema: $ref: '#/components/schemas/ContractTemplate' '400': description: Bad request - Validation failed content: application/json: schema: type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/contract/template/{id}: post: tags: - Contract Templates summary: Update contract template description: Available since API version 1. Updates an existing contract template. Can update the name and/or template file. operationId: post_api_v1_contract_template_edit parameters: - name: id in: path description: Contract template ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: properties: name: description: Updated name of the contract template type: string contractTemplateFile: description: Updated contract template file (PDF, optional) type: string format: binary type: object responses: '200': description: Contract template updated successfully content: application/json: schema: $ref: '#/components/schemas/ContractTemplate' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 6001) Not your template - Cannot edit template owned by another user '404': description: Template not found security: - XAuthToken: [] delete: tags: - Contract Templates summary: Delete contract template description: Available since API version 1. Deletes an existing contract template. operationId: delete_api_v1_contract_template_delete parameters: - name: id in: path description: Contract template ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract template deleted successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 6002) Not your template - Cannot delete template owned by another user '404': description: Template not found security: - XAuthToken: [] /v{version}/contract/template/download/{id}: get: tags: - Contract Templates summary: Download contract template file description: Available since API version 1. Downloads the contract template file. operationId: get_api_v1_contract_template_download parameters: - name: id in: path description: Contract template ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Contract template file content: application/octet-stream: [] '401': description: Unauthorized - Missing or invalid authentication token '404': description: File not found or user does not have rights to access it security: - XAuthToken: [] /v{version}/device: get: tags: - Devices summary: List user devices description: Available since API version 1. Returns a list of devices associated with the authenticated user. operationId: get_api_v1_device_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of user devices content: application/json: schema: type: array items: $ref: '#/components/schemas/Device' example: - id: 1 platform: iOS osVersion: 15.4.1 model: iPhone 13 deviceToken: dev-1a2b3c4d5e6f '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] put: tags: - Devices summary: Update device description: Available since API version 1. Updates an existing device identified by X-Device-Token header. operationId: put_api_v1_device_update parameters: - name: X-Device-Token in: header description: Device token to identify the device required: true schema: type: string example: dev-1a2b3c4d5e6f - name: version in: path required: true schema: type: string pattern: \d+ requestBody: content: application/json: schema: properties: platform: description: Device platform (e.g., iOS, Android) type: string osVersion: description: Operating system version type: string firebaseToken: description: Firebase token for push notifications type: string type: object responses: '200': description: Device updated successfully content: application/json: schema: $ref: '#/components/schemas/Device' '400': description: Bad request - Validation failed content: application/json: schema: properties: error: type: string type: object '404': description: Device not found with provided token content: application/json: schema: properties: message: type: string example: Device can not be found by provided X-Device-Token="dev-1a2b3c4d5e6f" type: object post: tags: - Devices summary: Register device description: Available since API version 1. Registers a new device or updates an existing one identified by X-Device-Token header. If user is logged in, the device will be associated with the user. operationId: post_api_v1_device_register parameters: - name: X-Device-Token in: header description: Device token to identify the device. If provided and device exists, it will be updated; otherwise, a new device will be created. schema: type: string example: dev-1a2b3c4d5e6f - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - platform - osVersion - model properties: platform: description: Device platform (e.g., iOS, Android) type: string example: iOS osVersion: description: Operating system version type: string example: 15.4.1 model: description: Device model type: string example: iPhone 13 firebaseToken: description: Firebase token for push notifications type: string example: eX4mPl3-F1r3b4s3-T0k3n type: object responses: '200': description: Device registered successfully content: application/json: schema: $ref: '#/components/schemas/Device' '400': description: Bad request - Validation failed content: application/json: schema: properties: error: type: string type: object delete: tags: - Devices summary: Unlink device from user description: Available since API version 1. Removes user association from a device. The device is identified by X-Device-Token header. operationId: delete_api_v1_device_delete parameters: - name: X-Device-Token in: header description: Device token to identify the device required: true schema: type: string example: dev-1a2b3c4d5e6f - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Device unlinked successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 16001) Forbidden - Not your device '404': description: Device not found with provided token content: application/json: schema: properties: message: type: string example: Device can not be found by provided X-Device-Token="dev-1a2b3c4d5e6f" type: object security: - XAuthToken: [] /v{version}/device/link: put: tags: - Devices summary: Link device to user description: Available since API version 1. Links a device to the authenticated user. The device is identified by X-Device-Token header. operationId: put_api_v1_device_link_user parameters: - name: X-Device-Token in: header description: Device token to identify the device required: true schema: type: string example: dev-1a2b3c4d5e6f - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Device linked successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '404': description: Device not found with provided token content: application/json: schema: properties: message: type: string example: Device can not be found by provided X-Device-Token="dev-1a2b3c4d5e6f" type: object security: - XAuthToken: [] /v{version}/event/{type}: post: tags: - Events summary: Log event statistic (deprecated). description: Available since API version 2. This endpoint is deprecated and will be removed in future versions. operationId: post_api_event_statistic parameters: - name: type in: path description: Event type required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '202': description: Event accepted (no processing). deprecated: true /v{version}/hyperlinking/: get: tags: - Landing Pages summary: Get all hyperlink sets description: Available since API version 4. Returns all hyperlink sets used for landing pages. Hyperlink sets contain organized links for different regions and listing types. operationId: get_api_v4_get_all_hyperlinks parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of all hyperlink sets content: application/json: schema: type: array items: properties: id: description: Unique identifier for the hyperlink set type: integer name: description: Name of the hyperlink set type: string links: description: List of hyperlinks in this set type: array items: properties: url: description: URL of the hyperlink type: string text: description: Display text for the hyperlink type: string type: description: Type of hyperlink (city, state, etc.) type: string meta: description: Additional metadata for the hyperlink type: object type: object region: description: Geographic region for this hyperlink set type: string listingType: description: Type of listing these hyperlinks are for type: string enum: - apartment - house - condo - townhouse - duplex - loft - room type: object example: - id: 1 name: Popular California Apartments links: - url: /ca/los-angeles/apartments-for-rent text: Los Angeles Apartments type: city meta: population: 3849000 - url: /ca/san-francisco/apartments-for-rent text: San Francisco Apartments type: city meta: population: 865000 region: California listingType: apartment '404': description: No hyperlink sets found /v{version}/landing/statistics/type/{listingType}: get: tags: - Landing Statistics summary: Get cities and average prices by listing type description: Available since API version 1. Returns top 10 cities with average prices for a specific listing type. This data is used for statistical displays on landing pages. operationId: get_api_v1_landing_statistics_by_type parameters: - name: listingType in: path description: Type of listing to get statistics for required: true schema: type: string pattern: (apartment|house|condo|townhouse|duplex|loft|room) enum: - apartment - house - condo - townhouse - duplex - loft - room - name: transactionType in: query description: 'Type of transaction (default: rental)' schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Top 10 cities with average prices content: application/json: schema: type: array items: properties: city: description: City name type: string stateShortName: description: State short name (e.g., CA, NY) type: string countryCode: description: Country code (e.g., US, CA) type: string stateId: description: State ID type: integer averagePrice: description: Average price for listings type: number format: float count: description: Number of listings counted type: integer type: object example: - city: New York stateShortName: NY countryCode: US stateId: 32 averagePrice: 3200.5 count: 12543 - city: Los Angeles stateShortName: CA countryCode: US stateId: 5 averagePrice: 2850.75 count: 9876 '400': description: Invalid parameters /v{version}/landing/statistics/type/{city}/{listingType}/{stateId}/{countryCode}: get: tags: - Landing Statistics summary: Get statistics by listing type and city description: Available since API version 1. Returns detailed price statistics for a specific listing type in a city, including breakdowns by number of bedrooms. operationId: get_api_v1_landing_statistics_by_type_and_city parameters: - name: city in: path description: City name required: true schema: type: string pattern: .+ - name: listingType in: path description: Type of listing required: true schema: type: string pattern: (apartment|house|condo|townhouse|duplex|loft|room) enum: - apartment - house - condo - townhouse - duplex - loft - room - name: stateId in: path description: State ID required: true schema: type: integer pattern: \d+ - name: countryCode in: path description: Country code required: true schema: type: string - name: transactionType in: query description: 'Type of transaction (default: rental)' schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Price statistics for the specified city and listing type content: application/json: schema: properties: city: description: City name type: string stateShortName: description: State short name type: string listingType: description: Type of listing type: string byBedroomsCount: description: Statistics grouped by number of bedrooms type: object additionalProperties: properties: averagePrice: description: Average price type: number format: float count: description: Number of listings type: integer type: object allAveragePrice: description: Overall average price for all bedroom counts type: number format: float totalCount: description: Total number of listings type: integer type: object example: city: New York stateShortName: NY listingType: apartment byBedroomsCount: '1': averagePrice: 2500 count: 3450 '2': averagePrice: 3800 count: 2780 '3': averagePrice: 5200 count: 1100 allAveragePrice: 3500 totalCount: 7330 '400': description: Invalid parameters /v{version}/landing/statistics/state/{state}: get: tags: - Landing Statistics summary: Get statistics by state description: Available since API version 1. Returns landing page statistics for a specific state, including cities with their listing counts. operationId: get_api_v1_landing_statistics_by_state parameters: - name: state in: path description: State name or abbreviation required: true schema: type: string pattern: .+ - name: transactionType in: query description: 'Type of transaction (default: rental)' schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Landing statistics for the state content: application/json: schema: $ref: '#/components/schemas/State' '202': description: Sitemap not ready yet '404': description: No cities found for state or state not found /v{version}/landing/statistics/country/{country}: get: tags: - Landing Statistics summary: Get statistics by country description: Available since API version 1. Returns landing page statistics for a specific country, including states and cities with their listing counts. operationId: get_api_v1_landing_statistics_by_country parameters: - name: country in: path description: Country name required: true schema: type: string pattern: .+ - name: transactionType in: query description: 'Type of transaction (default: rental)' schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Landing statistics for the country content: application/json: schema: $ref: '#/components/schemas/Country' '202': description: Sitemap not ready yet '404': description: No cities found for country or country not found /v{version}/apartment/description/stream: post: tags: - Listings summary: Generate listing description as stream description: Available since API version 4. Generates a listing description using AI and returns it as a Server-Sent Events (SSE) stream. operationId: post_api_v4_apartment_description_stream parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: properties: title: description: Title of the listing type: string description: description: Current description of the listing type: string price: description: Price of the listing type: number format: float bedroomsCount: description: Number of bedrooms type: integer bathroomsCount: description: Number of bathrooms type: integer apartmentPictures: description: Array of picture IDs for context type: array items: properties: id: description: Picture ID type: integer type: object type: object responses: '200': description: Server-Sent Events stream with generated description headers: Content-Type: description: Event stream content type schema: type: string example: text/event-stream Cache-Control: description: Cache control header schema: type: string example: no-cache X-Accel-Buffering: description: Nginx buffering control schema: type: string example: 'no' content: text/event-stream: [] '400': description: Bad request - Validation failed content: application/json: schema: type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/apartment/favorite: get: tags: - Listings summary: Get favorite listings description: Available since API version 2. Returns a paginated list of the authenticated user's favorite listings. operationId: get_api_v2_apartment_favorite_get parameters: - name: beforeId in: query description: Get listings before this ID (for cursor-based pagination) schema: type: integer - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of favorite listings content: application/json: schema: properties: items: description: List of favorite listings type: array items: $ref: '#/components/schemas/FavoriteApartmentsUsers' pagination: description: Pagination information type: object type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] post: tags: - Listings summary: Add listing to favorites description: Available since API version 1. Adds a listing to the authenticated user's favorites list. operationId: post_api_v1_apartment_favorite_add parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - apartment properties: apartment: description: ID of the listing to add to favorites type: integer example: 12345 type: object responses: '200': description: Listing added to favorites successfully content: application/json: schema: properties: [] type: object example: [] '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '404': description: Listing not found security: - XAuthToken: [] /v{version}/apartment/favorite/bulk: post: tags: - Listings summary: Add multiple listings to favorites description: Available since API version 4. Adds multiple listings to the authenticated user's favorites list in bulk. operationId: post_api_v4_listing_favorite_add_bulk parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - listingsIds properties: listingsIds: description: Array of listing IDs to add to favorites type: array items: description: Listing ID type: integer example: - 12345 - 67890 - 11111 type: object responses: '200': description: Listings added to favorites successfully content: application/json: schema: properties: [] type: object example: [] '400': description: Bad request - Invalid input data '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/apartment/favorite/{id}: delete: tags: - Listings summary: Remove listing from favorites description: Available since API version 1. Removes a listing from the authenticated user's favorites list. operationId: delete_api_v1_apartment_favorite_delete parameters: - name: id in: path description: Listing ID to remove from favorites required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing removed from favorites successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '404': description: Listing not found security: - XAuthToken: [] /v{version}/listing/{listing}/inquiry: post: tags: - Listings summary: Create inquiry for a listing description: Available since API version 1. Creates an inquiry for a specific listing. Rate limited to prevent spam. operationId: post_api_v1_listing_inquiry_create parameters: - name: listing in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InquiryType' responses: '200': description: Inquiry created successfully content: application/json: schema: $ref: '#/components/schemas/Inquiry' '400': description: Bad request - Validation failed content: application/json: schema: type: object '404': description: Listing not found '429': description: Too many requests - Rate limit exceeded content: application/json: schema: type: string example: Too many requests from one IP /v{version}/listing/{listing}/inquiry/info: get: tags: - Listings summary: Get inquiry information for a listing description: Available since API version 4. Returns statistics and information about inquiries for a specific listing. operationId: get_api_v4_listing_inquiry_info parameters: - name: listing in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Inquiry information for the listing content: application/json: schema: properties: applyCount: description: Total number of inquiries type: integer countrySettings: description: Country-specific settings type: object stats: description: Competitive statistics (prices floored to integers) type: object additionalProperties: type: integer type: object example: applyCount: 15 stats: avgPrice: 2500 maxPrice: 3000 minPrice: 2000 countrySettings: currency: USD '404': description: Listing not found /v{version}/listing/integration-request: post: tags: - Integration Requests summary: Create integration request description: Available since API version 3. Creates a request for MLS integration and sends notification emails to the sales team. operationId: post_api_listing_integration_request_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - name - email - companyName properties: name: description: Full name of the person making the request type: string example: John Smith email: description: Email address of the requester type: string format: email example: john.smith@company.com companyName: description: Name of the company requesting integration type: string example: ABC Real Estate phone: description: Phone number of the requester type: string example: '+1234567890' message: description: Additional message or details about the integration request type: string example: We would like to integrate our MLS system with your platform to synchronize our listings. type: object responses: '201': description: Integration request created successfully content: application/json: schema: $ref: '#/components/schemas/IntegrationRequest' '400': description: Bad request - Validation failed content: application/json: schema: type: object /v{version}/apartment/{id}/lead: post: tags: - Leads summary: Get lead information for a listing description: Available since API version 3. Returns lead URL and provider information for external listings that support lead generation. operationId: post_api_apartment_lead_get_original parameters: - name: id in: path description: Listing ID required: true schema: type: integer - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Lead information retrieved successfully content: application/json: schema: properties: toUrl: description: External URL to redirect the user to for lead generation type: string example: https://external-provider.com/listing/12345 providerName: description: Human-readable name of the listing provider type: string example: Zillow type: object '404': description: Listing not found or lead URL not available for this listing /v{version}/apartment: get: tags: - Listings summary: Get homeowner listings list description: Available since API version 1. Returns a paginated list of listings owned by the authenticated user with notification counters. operationId: get_api_v1_apartment_list parameters: - name: active in: query description: Filter by active status (true = active listings, false = all listings) schema: type: boolean default: true - name: page in: query description: Page number schema: type: integer default: 1 - name: limit in: query description: Number of items per page (varies based on active status and page) schema: type: integer - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of homeowner listings with counters content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ListingWithCountersResponse' pagination: type: object type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have required permissions security: - XAuthToken: [] post: tags: - Listings summary: Create new listing description: Available since API version 1. Creates a new listing for the authenticated user. Requires advanced features subscription for certain users. operationId: post_api_v1_apartment_new parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/ListingType' responses: '200': description: Listing created successfully content: application/json: schema: $ref: '#/components/schemas/Listing4' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '402': description: Payment required - Advanced features subscription needed '405': description: (Real code 1020) Cannot set pet deposit without selecting cat or dog security: - XAuthToken: [] /v{version}/apartment/ids: get: tags: - Listings summary: Get homeowner listings IDs description: Available since API version 4. Returns a simple list of listing IDs owned by the authenticated user. operationId: get_api_v4_listings_ids_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of listing IDs content: application/json: schema: properties: ids: type: array items: type: integer example: - 12345 - 67890 - 11111 type: object '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/apartment/{id}: get: tags: - Listings summary: Get listing details (v3) description: Available since API version 3. Returns detailed information about a specific listing. operationId: getListingV3 parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing details content: application/json: schema: description: Detailed listing information type: object '404': description: Listing not found or not visible put: tags: - Listings summary: Restore archived listing description: Available since API version 1. Restores an archived listing to active status. operationId: put_api_v1_apartment_un_archive parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing restored successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1007) Not your listing - Cannot restore listing owned by another user '406': description: (Real code 1011) Cannot restore deleted listing '404': description: Listing not found security: - XAuthToken: [] post: tags: - Listings summary: Update existing listing description: Available since API version 1. Updates an existing listing owned by the authenticated user. Cannot update rented listings. operationId: post_api_v1_apartment_edit parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/ListingType' responses: '200': description: Listing updated successfully content: application/json: schema: $ref: '#/components/schemas/Listing' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1013) Not your listing - Cannot edit listing owned by another user '406': description: (Real code 1025) Cannot edit rented listing '407': description: (Real code 1020) Cannot set pet deposit without selecting cat or dog '404': description: Listing not found security: - XAuthToken: [] delete: tags: - Listings summary: Archive or delete listing description: Available since API version 1. Archives or permanently deletes a listing owned by the authenticated user. Cannot delete rented listings. operationId: delete_api_v1_apartment_archive parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: delete in: query description: Permanently delete listing (true) or just archive it (false) schema: type: boolean default: false - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing archived or deleted successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1004) Not your listing - Cannot archive/delete listing owned by another user '406': description: (Real code 1021) Cannot archive/delete rented listing '404': description: Listing not found security: - XAuthToken: [] /v{version}/apartment/{id}/view: get: tags: - Listings summary: View listing details (public) description: Available since API version 4. Returns listing details for public viewing, including expired MLS listings with redirect URLs. operationId: get_api_v4_apartment_view parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing details for public viewing content: application/json: schema: description: Listing information with localized data type: object '410': description: Listing expired or not viewable content: application/json: schema: properties: redirect: description: Redirect URL for expired MLS listings type: string type: object '404': description: Listing not found /v{version}/apartment/{id}/competitors: get: tags: - Listings summary: Get listing competitors description: Available since API version 1. Returns paginated list of competing applications for a specific listing. operationId: get_api_v1_apartment_get_competitors parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of competing applications content: application/json: schema: properties: items: type: array items: description: Competing application data type: object pagination: type: object type: object '404': description: Listing not found or not active /v{version}/apartment/application/info/{id}: get: tags: - Listings summary: Get application info for listing description: Available since API version 1. Returns statistical information about applications for a specific listing, including competitor data and country settings. operationId: get_api_v1_apartment_application_info_in_apartment parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application statistics and competitor information content: application/json: schema: properties: applyCount: description: Total number of applications type: integer stats: description: Statistical data (prices floored to integers) type: object additionalProperties: type: integer highest: description: Highest applications by price and deposit properties: byPrice: type: array items: type: object byDeposit: type: array items: type: object type: object countrySettings: description: Country-specific settings type: object type: object '404': description: Listing not found /v{version}/apartment/virtual-tours: get: tags: - Listings summary: Get listings with virtual tours description: Available since API version 1. Returns paginated list of listings that have virtual tours available. Results are cached for performance. operationId: get_api_v1_apartment_with_virtual_tours parameters: - name: page in: query description: Page number schema: type: integer default: 1 - name: limit in: query description: Number of items per page schema: type: integer default: 3 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of listings with virtual tours content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/Listing5' pagination: type: object type: object /v{version}/apartment/pictures: post: tags: - Listing Pictures summary: Create listing picture description: Available since API version 1. Uploads a new picture for a listing. If marked as cover, removes cover status from existing cover image. operationId: post_api_v1_apartment_picture_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: required: - imageFile properties: imageFile: description: 'Image file to upload. Supported formats: PNG, JPEG, HEIC, HEIF. Max size: 20MB.' type: string format: binary apartmentId: description: Listing ID to associate the picture with type: integer cover: description: Set this picture as cover image type: boolean default: false order: description: Display order of the picture type: integer type: description: Type of picture type: string enum: - picture - floorPlan type: object responses: '200': description: Picture created successfully content: application/json: schema: $ref: '#/components/schemas/ListingPicture' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/apartment/pictures/{id}: post: tags: - Listing Pictures summary: Update listing picture description: Available since API version 1. Updates an existing listing picture. Can update the image file and display order. operationId: post_api_v1_apartment_picture_edit parameters: - name: id in: path description: Picture ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: content: multipart/form-data: schema: properties: imageFile: description: New image file (optional) type: string format: binary order: description: Display order of the picture type: integer type: object responses: '200': description: Picture updated successfully content: application/json: schema: $ref: '#/components/schemas/ListingPicture' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1001) Not your image - Cannot edit image owned by another user '404': description: Picture not found security: - XAuthToken: [] delete: tags: - Listing Pictures summary: Delete listing picture description: Available since API version 1. Deletes a listing picture. Cannot delete cover images. operationId: delete_api_v1_apartment_picture_delete parameters: - name: id in: path description: Picture ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Picture deleted successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1002) Not your image - Cannot delete image owned by another user '406': description: (Real code 1003) Cannot delete cover image '404': description: Picture not found security: - XAuthToken: [] /v{version}/apartment/pictures/order: post: tags: - Listing Pictures summary: Update pictures order description: Available since API version 1. Updates the display order of multiple listing pictures in bulk. operationId: post_api_v1_apartment_picture_order_edit parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - orderData properties: orderData: description: Array of picture objects with new order type: array items: required: - id - order properties: id: description: Picture ID type: integer order: description: New display order type: integer type: object type: object responses: '200': description: Pictures order updated successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ListingPicture' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 1001) Not your image - Cannot edit image owned by another user security: - XAuthToken: [] /v{version}/apartment/pictures/detect-amenities: post: tags: - Listing Pictures summary: Detect amenities from listing pictures description: Available since API version 4. Analyzes listing pictures using AI to detect amenities automatically. operationId: post_api_v4_apartment_picture_detect_amenities parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PicturesIdsType' responses: '200': description: Detected amenities content: application/json: schema: properties: amenities: description: List of detected amenities type: array items: description: Amenity key type: string type: object '400': description: Bad request - Invalid picture IDs or validation failed '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/listing/virtual-tour/{id}: get: tags: - Virtual Tours summary: Get virtual tour by ID description: Available since API version 4. Returns virtual tour information for a specific virtual tour ID. operationId: get_virtual_tour_view parameters: - name: id in: path description: Virtual tour ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Virtual tour information content: application/json: schema: $ref: '#/components/schemas/VirtualTour' '404': description: Virtual tour not found /v{version}/apartment/maintenance/{id}: post: tags: - Listings summary: Create maintenance request description: Available since API version 1. Creates a new maintenance request for a listing. Only tenants with approved applications can create maintenance requests. operationId: post_api_v1_maintenance_new parameters: - name: id in: path description: Listing ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - description - priority properties: description: description: Detailed description of the maintenance issue type: string maxLength: 255 minLength: 2 example: The kitchen sink is leaking and needs immediate attention. priority: description: Priority level of the maintenance request type: string enum: - '1' - '2' - '3' example: high apartmentApplyId: description: ID of the approved application that grants permission to create maintenance requests type: integer example: 12345 type: object responses: '200': description: Maintenance request created successfully and notification email sent to homeowner content: application/json: schema: properties: [] type: object example: [] '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to create maintenance requests for this listing '404': description: Listing not found security: - XAuthToken: [] /v{version}/apartment/open-house/applies/{id}: get: tags: - Listings summary: Get open house applications for listing description: Available since API version 1. Returns paginated list of open house applications for a specific listing owned by the authenticated user. operationId: get_api_v1_apartment_tour_applies_by_tennants parameters: - name: id in: path description: Listing ID required: true schema: type: integer pattern: \d+ - name: active in: query description: Filter by active status (true = active applications, false = all applications) schema: type: boolean default: true - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of open house applications content: application/json: schema: properties: items: type: array items: description: Open house application response type: object pagination: type: object type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this listing '404': description: Listing not found security: - XAuthToken: [] /v{version}/apartment/open-house/apply: post: tags: - Listings summary: Create open house application description: Available since API version 1. Creates an application for an open house viewing. Rate limited to prevent spam. operationId: post_api_v1_apartment_tour_apply parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - listing - name - email - phone properties: listing: description: Listing ID for the open house type: integer example: 12345 name: description: Applicant's full name type: string maxLength: 255 example: John Doe email: description: Applicant's email address type: string format: email example: john.doe@example.com phone: description: Applicant's phone number type: integer maximum: 999999999999999 minimum: 1000000 example: 1234567890 message: description: Additional message from applicant type: string example: I am interested in viewing this property. type: object responses: '200': description: Open house application created successfully content: application/json: schema: $ref: '#/components/schemas/OpenHouseApplication' '400': description: Bad request - Validation failed '405': description: (Real code 21001) Feature disabled - Open house feature is not available '429': description: Too many requests - Rate limit exceeded /v{version}/apartment/open-house/apply-mls: post: tags: - Listings summary: Create open house application for MLS listing description: Available since API version 4. Creates an application for an open house viewing for MLS listings. Does not check for existing users. Rate limited to prevent spam. operationId: post_api_v4_mls_listing_open_house_apply parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - listing - name - email - phone properties: listing: description: MLS listing ID for the open house type: integer example: 12345 name: description: Applicant's full name type: string maxLength: 255 example: John Doe email: description: Applicant's email address type: string format: email example: john.doe@example.com phone: description: Applicant's phone number type: integer maximum: 999999999999999 minimum: 1000000 example: 1234567890 message: description: Additional message from applicant type: string example: I am interested in viewing this MLS property. type: object responses: '200': description: MLS open house application created successfully content: application/json: schema: $ref: '#/components/schemas/OpenHouseApplication' '400': description: Bad request - Validation failed '405': description: (Real code 21001) Feature disabled - Open house feature is not available '429': description: Too many requests - Rate limit exceeded /v{version}/apartment/open-house/apply/decline/{id}: delete: tags: - Listings summary: Decline open house application description: Available since API version 1. Declines an open house application. Only the listing owner can decline applications. operationId: delete_api_v1_apartment_tour_apply_decline parameters: - name: id in: path description: Open house application ID required: true schema: type: integer pattern: \d+ - name: declinedReason in: query description: Reason for declining the application schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application declined successfully content: application/json: schema: $ref: '#/components/schemas/OpenHouseApplication' '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this open house application '405': description: (Real code 12003) Application already accepted '406': description: (Real code 12004) Application already declined '404': description: Application not found security: - XAuthToken: [] /v{version}/apartment/open-house/apply/accept/{id}: put: tags: - Listings summary: Accept open house application description: Available since API version 1. Accepts an open house application. Only the listing owner can accept applications. operationId: put_api_v1_apartment_tour_apply_accept parameters: - name: id in: path description: Open house application ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Application accepted successfully content: application/json: schema: $ref: '#/components/schemas/OpenHouseApplication' '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this open house application '405': description: (Real code 12003) Application already accepted '406': description: (Real code 12004) Application already declined '404': description: Application not found security: - XAuthToken: [] /v{version}/apartment/{id}/promote: post: tags: - Listings summary: Promote listing description: Available since API version 1. Promotes a listing to increase its visibility. Requires promote feature to be enabled and consumes a promotion ticket. operationId: post_api_v1_apartment_promote parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Listing promoted successfully content: application/json: schema: $ref: '#/components/schemas/Listing' '401': description: Unauthorized - Missing or invalid authentication token '402': description: Payment required - No promotion tickets available '405': description: (Real code 21001) Feature disabled - Promotion feature is not enabled for this listing '403': description: Forbidden - User does not own this listing '404': description: Listing not found or not active security: - XAuthToken: [] /v{version}/apartment/{id}/syndicatable: get: tags: - Listings summary: Check if listing is syndicatable description: Available since API version 1. Checks whether a listing can be syndicated to external platforms. operationId: get_api_v1_apartment_is_syndicatable parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Syndication status content: application/json: schema: description: True if listing can be syndicated, false otherwise type: boolean '401': description: Unauthorized - Missing or invalid authentication token '404': description: Listing not found or not active security: - XAuthToken: [] /v{version}/apartment/{id}/rental: get: tags: - Listings summary: Get rentals for listing description: Available since API version 1. Returns all rental agreements associated with a specific listing owned by the authenticated user. operationId: get_api_v1_apartment_list_rentals parameters: - name: id in: path description: Listing ID required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of rentals for the listing content: application/json: schema: type: array items: $ref: '#/components/schemas/Rental3' '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not own this listing '404': description: Listing not found or deleted security: - XAuthToken: [] /v{version}/country: get: tags: - Location summary: Get countries list description: Available since API version 1. Returns list of countries, optionally filtered to only include countries with available listings. operationId: get_api_v1_country_list parameters: - name: withApartments in: query description: Filter to only countries with available listings schema: type: boolean default: false - name: transactionType in: query description: Type of transaction (only used when withApartments=true) schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of countries content: application/json: schema: type: array items: properties: id: description: Country ID type: integer name: description: Country name type: string shortCode: description: Country code (ISO) type: string type: object /v{version}/country-settings: post: tags: - Location summary: Get country settings by address description: Available since API version 1. Geocodes an address and returns country-specific settings for that location. operationId: post_api_v1_country_settings parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - formattedAddress properties: formattedAddress: description: Formatted address to geocode type: string example: 123 Main St, New York, NY 10001, USA type: object responses: '200': description: Country settings for the geocoded address content: application/json: schema: description: Country-specific configuration settings type: object '400': description: Bad request - formattedAddress field is empty content: application/json: schema: type: string example: Field formattedAddress is empty '405': description: (Real code 13001) Place not found during geocoding '409': description: Conflict - Country code cannot be resolved from address /v{version}/place/geocode: post: tags: - Location summary: Geocode formatted address description: Converts a formatted address string into geographic location data operationId: post_api_v4_place_geocoding parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - formattedAddress properties: formattedAddress: description: Full formatted address to geocode type: string example: 123 William St, New York, NY 10038, USA type: object responses: '200': description: Successfully geocoded address content: application/json: schema: properties: placeType: type: string example: street placeAddress: type: string example: 123 William St, New York, NY 10038, USA formattedAddressForUsa: type: string example: 123 William Street, Manhattan, New York, NY nullable: true location: properties: formattedAddress: type: string example: 123 William St, New York, NY 10038, USA streetNumber: type: string example: '123' nullable: true streetName: type: string example: William Street nullable: true country: type: string example: US nullable: true state: type: string example: NY nullable: true locality: type: string example: New York nullable: true subLocality: type: string example: Manhattan nullable: true neighborhood: type: string example: null nullable: true postalCode: type: string example: '10038' nullable: true adminLevels: type: object example: '1': level: 1 name: New York code: NY '2': level: 2 name: New York County code: New York County coordinates: type: array items: type: number format: float example: - -74.0071269 - 40.7094055 bounds: properties: south: type: number format: float example: 40.7079548197085 west: type: number format: float example: -74.0083148802915 north: type: number format: float example: 40.7106527802915 east: type: number format: float example: -74.00561691970849 type: object provider: type: string example: google type: object type: object '400': description: Bad request - formattedAddress is missing content: application/json: schema: properties: body: type: string example: Field formattedAddress is empty error: properties: code: type: integer example: 400 message: type: string description: type: string type: object type: object '409': description: Place not found content: application/json: schema: properties: error: properties: code: type: integer example: 13001 message: type: string description: type: string type: object type: object /v{version}/email/unsubscribe/callback: post: operationId: post_api_v4_email_unsubscribe_callback parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/mailchimp/webhook: post: operationId: post_api_v4_mailchimp_webhook parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/mandrill/webhook: get: operationId: get_api_v4_mandrill_webhook parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' post: operationId: post_api_v4_mandrill_webhook parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/messages/{userType}: get: tags: - Messages summary: Get list of conversations for user. description: Available since API version 1. Returns paginated list of conversations for tenant or homeowner. operationId: get_api_v1_messages_list parameters: - name: userType in: path description: User type filter required: true schema: type: string pattern: tenant|homeowner enum: - tenant - homeowner - name: page in: query description: Page number required: false schema: type: integer default: 1 - name: limit in: query description: Items per page required: false schema: type: integer default: 10 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns paginated list of conversations. content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ConversationResponse' total: type: integer page: type: integer type: object '401': description: Unauthorized security: - XAuthToken: [] /v{version}/messages/apartment/{id}: put: tags: - Messages summary: Get or create conversation for apartment listing. description: Available since API version 1. Gets existing or creates new conversation for apartment listing. operationId: put_api_v1_messages_get_conversation_by_apartment parameters: - name: id in: path description: Apartment listing ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: false content: application/json: schema: properties: userId: description: Partner user ID (optional) type: integer type: object responses: '200': description: Returns conversation ID. content: application/json: schema: properties: id: type: integer type: object '400': description: Invalid request or user trying to message themselves '401': description: Unauthorized '403': description: User not related to listing security: - XAuthToken: [] /v{version}/messages/rental/{id}: put: tags: - Messages summary: Get or create conversation for rental. description: Available since API version 1. Gets existing or creates new conversation for rental between tenant and homeowner. operationId: put_api_v1_messages_get_conversation_by_rental parameters: - name: id in: path description: Rental ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns conversation ID. content: application/json: schema: properties: id: type: integer type: object '401': description: Unauthorized '403': description: User not related to rental security: - XAuthToken: [] /v{version}/messages/conversation/{id}: get: tags: - Messages summary: Get conversation details. description: Available since API version 1. Returns detailed information about a specific conversation. operationId: get_api_v1_conversation parameters: - name: id in: path description: Conversation ID required: true schema: type: integer - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns conversation details. content: application/json: schema: $ref: '#/components/schemas/ConversationResponse' '401': description: Unauthorized '403': description: Access denied to conversation '404': description: Conversation not found security: - XAuthToken: [] /v{version}/messages/{id}: get: tags: - Messages summary: Get messages from conversation. description: Available since API version 1. Returns paginated list of messages from a conversation. operationId: get_api_v1_messages_get_conversation parameters: - name: id in: path description: Conversation ID required: true schema: type: integer pattern: \d+ - name: before in: query description: Get messages before this message ID required: false schema: type: integer - name: limit in: query description: Number of messages to return required: false schema: type: integer default: 20 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns messages from conversation. content: application/json: schema: properties: messages: type: array items: $ref: '#/components/schemas/ConversationMessage' hasMessagesBefore: description: Whether there are more messages before this batch type: boolean type: object '401': description: Unauthorized '403': description: Access denied to conversation security: - XAuthToken: [] post: tags: - Messages summary: Send message to conversation. description: Available since API version 1. Sends a new message to the specified conversation. operationId: post_api_v1_message_create parameters: - name: id in: path description: Conversation ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MessageType' responses: '200': description: Message sent successfully. content: application/json: schema: $ref: '#/components/schemas/ConversationMessage' '400': description: Validation failed '401': description: Unauthorized '403': description: Access denied to conversation security: - XAuthToken: [] /v{version}/newsletter: post: tags: - Newsletter summary: Subscribe user to newsletter. description: Available since API version 1. Subscribes user to newsletter and optionally to MailChimp list. operationId: post_api_v1_newsletter_user_add parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NewsletterUserType' responses: '200': description: User subscribed successfully. content: application/json: schema: $ref: '#/components/schemas/NewsletterUser' '400': description: Validation failed or email already subscribed /v{version}/payments/onboarding/account: post: tags: - Payments summary: Create payment account for onboarding description: Available since API version 1. Creates a Stripe account for the user and returns an onboarding URL to complete setup. operationId: post_api_v1_payments_onboarding_create_account parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Account link URL for completing onboarding content: application/json: schema: description: Stripe onboarding URL type: string example: https://connect.stripe.com/setup/s/acct_1234567890 '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 23005) Illegal Stripe account ID security: - XAuthToken: [] /v{version}/payments/onboarding/finish: post: tags: - Payments summary: Finish payment onboarding description: Available since API version 1. Completes the payment onboarding process for the authenticated user. operationId: post_api_v1_payments_onboarding_finish parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Onboarding completed successfully content: application/json: schema: description: Onboarding completion data type: object '401': description: Unauthorized - Missing or invalid authentication token '405': description: (Real code 23001) User payment account ID not set security: - XAuthToken: [] /v{version}/polygon/search: post: tags: - Search summary: Search polygons by bounds description: Available since API version 1. Searches for polygons (neighborhoods, districts) within specified geographical bounds. Returns neighborhoods only when zoom level is sufficient. operationId: post_api_v1_polygon_search_bounds parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - bounds - zoom properties: bounds: description: Geographical bounds for search properties: north: description: Northern latitude type: number format: float south: description: Southern latitude type: number format: float east: description: Eastern longitude type: number format: float west: description: Western longitude type: number format: float type: object zoom: description: Map zoom level (affects whether neighborhoods are included) type: integer example: 12 type: object responses: '200': description: List of polygons within the specified bounds content: application/json: schema: type: array items: description: Polygon data with geographical information type: object '400': description: Bad request - Validation failed /v{version}/provider/configuration/{provider}: get: tags: - Providers summary: Get provider configuration. description: Available since API version 3. Returns configuration for specified listing provider. operationId: get_api_get_provider_configuration parameters: - name: provider in: path description: Provider name required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns provider configuration. content: application/json: schema: properties: logo: properties: 1x: description: Logo URL 1x type: string 2x: description: Logo URL 2x type: string type: object nullable: true type: object /v{version}/provider/{provider}/logo-{size}: get: tags: - Providers summary: Get provider logo redirect. description: Available since API version 3. Redirects to provider logo URL. operationId: get_api_get_provider_logo parameters: - name: provider in: path description: Provider name required: true schema: type: string - name: size in: path description: Logo size required: true schema: type: string default: 1x enum: - 1x - 2x - name: version in: path required: true schema: type: string pattern: \d+ responses: '302': description: Redirects to logo URL '404': description: Logo not found /v{version}/recommendation: get: tags: - Listings summary: Get recommended listings description: Available since API version 4. Returns paginated list of recommended listings based on specified criteria. operationId: get_api_v4_recommendation_request_get parameters: - name: type in: query description: Type of listing recommendation schema: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - name: transactionType in: query description: Type of transaction schema: type: string enum: - rental - sale - name: provider in: query description: Listing provider filter schema: type: string - name: page in: query description: Page number schema: type: integer default: 1 - name: limit in: query description: Number of items per page schema: type: integer default: 10 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of recommended listings content: application/json: schema: properties: recommendations: type: array items: $ref: '#/components/schemas/Listing' total: description: Total number of recommendations available type: integer type: object /v{version}/rental: get: tags: - Rental summary: Get list of user rentals. description: Returns paginated list of rentals for the authenticated user. Available since API version 1. operationId: get_api_v1_application_rentals_list parameters: - name: limit in: query description: Number of items per page schema: type: integer default: 9 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of rentals returned successfully. '401': description: Unauthorized security: - XAuthToken: [] post: tags: - Rental summary: Create a new rental. description: Creates a new rental and sends invitation to tenant. Available since API version 1. operationId: post_api_v1_rental_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RentalType' responses: '200': description: Rental created successfully. content: application/json: schema: $ref: '#/components/schemas/Rental' '400': description: Validation failed. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/rental/chargeable/{userType}: get: tags: - Rental summary: Get list of chargeable rentals. description: Returns paginated list of chargeable rentals for tenant or homeowner. Available since API version 1. operationId: get_api_v1_chargeable_rentals_list parameters: - name: userType in: path description: User type (tenant or homeowner) required: true schema: type: string default: tenant pattern: tenant|homeowner enum: - tenant - homeowner - name: archived in: query description: Include archived rentals schema: type: boolean default: false - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of chargeable rentals returned successfully. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/rental/{id}: get: tags: - Rental summary: Get rental details. description: Returns detailed information about a specific rental. Available since API version 1. operationId: get_api_v1_rental_get parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ responses: '200': description: Rental details returned successfully. content: application/json: schema: $ref: '#/components/schemas/Rental4' '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] post: tags: - Rental summary: Update an existing rental. description: Updates rental information. Available since API version 1. operationId: post_api_v1_rental_update parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RentalType' responses: '200': description: Rental updated successfully. content: application/json: schema: $ref: '#/components/schemas/Rental' '400': description: Validation failed. '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] /v{version}/rental/activate/{reference}: get: tags: - Rental summary: Activate rental by tenant. description: Activates rental using reference code when tenant accepts invitation. Available since API version 1. operationId: get_api_v1_rental_activate parameters: - name: reference in: path description: Rental reference code required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Rental activated successfully. content: application/json: schema: $ref: '#/components/schemas/Rental' '401': description: Unauthorized '404': description: Rental not found or invalid reference. '409': description: Cannot activate rental in current status. security: - XAuthToken: [] /v{version}/rental/archive/{rental}: post: tags: - Rental summary: Archive a rental. description: Archives rental and changes its status. Available since API version 1. operationId: post_api_v1_rental_archive parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental in: path required: true schema: type: string responses: '200': description: Rental archived successfully. content: application/json: schema: $ref: '#/components/schemas/Rental' '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] /v{version}/rental/invite-homeowner: post: tags: - Rental summary: Send invitation to homeowner. description: Sends email invitation to potential homeowner. Available since API version 1. operationId: post_api_v1_rental_invite_homeowner parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InviteHomeownerType' responses: '204': description: Invitation sent successfully. '400': description: Validation failed. '401': description: Unauthorized /v{version}/rental/invite-tenant/{rental}: post: tags: - Rental summary: Resend invitation to tenant. description: Resends email invitation to tenant for rental. Available since API version 1. operationId: post_api_v1_rental_invite_tenant parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental in: path required: true schema: type: string responses: '204': description: Invitation resent successfully. '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] /v{version}/rental/list: get: tags: - Rental summary: Get short list of user rentals. description: Returns simplified list of rentals for the authenticated user. Available since API version 1. operationId: get_api_v1_rental_list_short parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Short list of rentals returned successfully. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/rental/{id}/document: post: tags: - Rental summary: Upload document to rental. description: Uploads and attaches document to rental. Available since API version 1. operationId: post_api_v1_rental_add_document parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: properties: file: type: string format: binary type: object responses: '200': description: Document uploaded successfully. content: application/json: schema: $ref: '#/components/schemas/UserDocument' '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] /v{version}/rental/{id}/document/download/{document}: get: tags: - Rental summary: Download rental document. description: Downloads document attached to rental. Available since API version 1. operationId: get_api_v1_rental_download_document parameters: - name: document in: path description: Document ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ - name: id in: path required: true schema: type: string pattern: \d+ responses: '200': description: Document downloaded successfully. content: application/octet-stream: [] '401': description: Unauthorized '403': description: Access denied to rental or document. '404': description: Document not found. security: - XAuthToken: [] /v{version}/rental/payment/account/balance: get: tags: - Rental Payments summary: Get account balance description: Available since API version 1. Returns the rental payment account balance for the authenticated user. operationId: get_api_v1_rental_payment_account parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Account balance information content: application/json: schema: $ref: '#/components/schemas/AccountBalanceResponse' '401': description: Unauthorized - Missing or invalid authentication token security: - XAuthToken: [] /v{version}/rental/payment/account/payout: post: tags: - Rental Payments summary: Create payout description: Available since API version 1. Creates a Stripe payout for the authenticated user's rental payment account. operationId: post_api_v1_rental_payment_account_create_payout parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Payout created successfully content: application/json: schema: properties: status: description: Payout status type: string type: object '401': description: Unauthorized - Missing or invalid authentication token '400': description: Bad request - Unable to create payout security: - XAuthToken: [] /v{version}/rental/{rental_id}/payment/stripe: get: tags: - Rentals summary: List payments for rental description: Available since API version 1. Returns paginated list of Stripe payments for a specific rental with notification status. operationId: get_api_v1_rental_payment_list_for_rental_stripe parameters: - name: rental_id in: path description: Rental ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of rental payments content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/RentalPaymentResponseItem' pagination: type: object type: object '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to view this rental security: - XAuthToken: [] post: tags: - Rentals summary: Create Stripe payment description: Available since API version 1. Creates a Stripe payment for a rental and returns clientSecret for frontend payment form. operationId: post_api_v1_rental_payment_stripe parameters: - name: rental_id in: path description: Rental ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - amount properties: amount: description: Payment amount type: number format: float description: description: Payment description type: string type: object responses: '200': description: Payment created successfully content: application/json: schema: $ref: '#/components/schemas/StripePaymentCreatedResponse' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to view this rental security: - XAuthToken: [] /v{version}/rental/payment/{rental_payment_id}/stripe/update: post: tags: - Rentals summary: Update Stripe payment description: Available since API version 1. Updates an existing Stripe payment. operationId: post_api_v1_rental_payment_stripe_update parameters: - name: rental_payment_id in: path description: Rental payment ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: properties: amount: description: Updated payment amount type: number format: float description: description: Updated payment description type: string type: object responses: '200': description: Payment updated successfully content: application/json: schema: $ref: '#/components/schemas/StripePaymentCreatedResponse' '400': description: Bad request - Validation failed '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to update this payment security: - XAuthToken: [] /v{version}/rental/payment/{rental_payment_id}/stripe: delete: tags: - Rentals summary: Cancel Stripe payment description: Available since API version 1. Cancels an existing Stripe payment. operationId: delete_api_v1_rental_payment_stripe_cancel parameters: - name: rental_payment_id in: path description: Rental payment ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Payment cancelled successfully content: application/json: schema: properties: [] type: object example: [] '401': description: Unauthorized - Missing or invalid authentication token '403': description: Forbidden - User does not have permission to cancel this payment security: - XAuthToken: [] /v{version}/rental/{rental_id}/subscription/stripe: post: tags: - Rental Subscription summary: Create a rental subscription with Stripe. description: Creates a new rental subscription and returns client secret for Stripe payment setup. Available since API version 4. operationId: post_api_v4_rental_subscription_stripe parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental_id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RentalPaymentType' responses: '200': description: Subscription created successfully with client secret. content: application/json: schema: $ref: '#/components/schemas/StripeSubscriptionCreatedResponse' '400': description: Validation failed. '401': description: Unauthorized '403': description: Access denied to rental. security: - XAuthToken: [] /v{version}/rental/subscription/{rental_subscription_id}/stripe/update: post: tags: - Rental Subscription summary: Update an existing rental subscription. description: Updates rental subscription payment details. Available since API version 4. operationId: post_api_v4_rental_subscription_stripe_update parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental_subscription_id in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RentalPaymentType' responses: '200': description: Subscription updated successfully. content: application/json: schema: $ref: '#/components/schemas/StripeSubscriptionCreatedResponse' '400': description: Validation failed. '401': description: Unauthorized '403': description: Access denied to subscription. security: - XAuthToken: [] /v{version}/rental/subscription/{rental_subscription_id}/stripe: get: tags: - Rental Subscription summary: Get rental subscription details. description: Retrieves details of a specific rental subscription. Available since API version 4. operationId: get_api_v4_rental_subscription_stripe_get parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental_subscription_id in: path required: true schema: type: string pattern: \d+ responses: '200': description: Subscription details retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/StripeSubscriptionCreatedResponse' '401': description: Unauthorized '403': description: Access denied to subscription. '404': description: Subscription not found. security: - XAuthToken: [] delete: tags: - Rental Subscription summary: Cancel a rental subscription. description: Cancels an active rental subscription. Available since API version 4. operationId: delete_api_v4_rental_subscription_stripe_cancel parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: rental_subscription_id in: path required: true schema: type: string pattern: \d+ responses: '204': description: Subscription cancelled successfully. '401': description: Unauthorized '403': description: Access denied to subscription. '404': description: Subscription not found. security: - XAuthToken: [] /v{version}/resources/state/{country}: get: tags: - Resources summary: Get states by country. description: Available since API version 1. Returns list of states for specified country. operationId: get_api_v1_resources_state parameters: - name: country in: path description: Country code required: true schema: type: string default: US - name: withApartments in: query description: Include only states with apartments required: false schema: type: boolean - name: transactionType in: query description: Transaction type filter required: false schema: type: string default: rental enum: - rental - sale - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns list of states. content: application/json: schema: type: array items: properties: id: type: integer name: type: string shortCode: type: string type: object /v{version}/screening: get: tags: - Screening summary: Get homeowner screening requests description: Available since API version 1. Returns paginated list of screening requests created by the authenticated homeowner. operationId: get_api_v1_screening_request_list parameters: - name: active in: query description: Filter by active status schema: type: boolean default: true - name: page in: query description: Page number schema: type: integer default: 1 - name: limit in: query description: Items per page schema: type: integer - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of screening requests with notifications content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ScreeningResponse' pagination: description: Pagination information type: object type: object '401': description: Unauthorized security: - XAuthToken: [] post: tags: - Screening summary: Create screening requests description: Available since API version 1. Creates screening requests for one or more tenants and sends email invitations. operationId: post_api_v1_screening_request_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScreeningRequestsType' responses: '200': description: Screening requests created successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ScreeningResponse' '400': description: Validation failed '401': description: Unauthorized security: - XAuthToken: [] /v{version}/screening/{reference}: get: tags: - Screening summary: Get screening request by reference description: Available since API version 1. Returns screening request details using reference code from email invitation. operationId: get_api_v1_screening_request_get parameters: - name: reference in: path description: Unique reference code required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Screening request details content: application/json: schema: $ref: '#/components/schemas/ScreeningRequest' '404': description: Screening request not found /v{version}/screening/resend/{id}: post: tags: - Screening summary: Resend screening request email description: Available since API version 1. Resends email invitation to tenant for an existing screening request. operationId: post_api_v1_screening_request_resend parameters: - name: id in: path description: Screening request ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Email resent successfully content: application/json: schema: $ref: '#/components/schemas/ScreeningResponse' '401': description: Unauthorized '403': description: Not your screening request '404': description: (Real code 11001) Request already deleted '405': description: (Real code 11002) Request already canceled '406': description: (Real code 11009) Request already completed security: - XAuthToken: [] /v{version}/screening/{id}: delete: tags: - Screening summary: Cancel screening request description: Available since API version 1. Cancels an active screening request. Cannot cancel completed or paid requests. operationId: delete_api_v1_screening_request_cancel parameters: - name: id in: path description: Screening request ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Request canceled successfully content: application/json: schema: $ref: '#/components/schemas/ScreeningRequest2' '401': description: Unauthorized '403': description: Not your screening request '404': description: (Real code 11001) Request already deleted '405': description: (Real code 11002) Request already canceled '406': description: (Real code 11006) Cannot cancel completed screening '407': description: (Real code 11011) Cannot cancel paid screening security: - XAuthToken: [] /v{version}/screening/screen/{reference}/pay: post: tags: - Screening summary: Pay for screening (deprecated) description: 'Available since API version 1. DEPRECATED: Use Stripe webhook instead. Associates feature ticket with screening request.' operationId: post_api_v1_screening_screen_pay parameters: - name: reference in: path description: Screening reference code required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ requestBody: content: application/json: schema: properties: ticket: description: Feature ticket code type: string type: object responses: '200': description: Payment processed '402': description: Payment required or invalid ticket deprecated: true /v{version}/screening/validate/{reference}: post: tags: - Screening summary: Validate tenant data for screening description: Available since API version 1. Validates tenant personal information before performing actual screening. operationId: post_api_v1_screening_validate_screening_data parameters: - name: reference in: path description: Screening reference code required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountCreditScoreCheckType' responses: '200': description: Data validated successfully '400': description: Validation failed '402': description: Payment required '404': description: (Real code 11001) Request already deleted '405': description: (Real code 11004) Request already processed /v{version}/screening/screen/{reference}: post: tags: - Screening summary: Perform tenant screening description: Available since API version 1. Executes credit and criminal background screening for tenant using validated data. operationId: post_api_v1_screening_screen_user parameters: - name: reference in: path description: Screening reference code required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountCreditScoreCheckType' responses: '200': description: Screening completed successfully '400': description: Validation failed '402': description: Payment required '404': description: (Real code 11007) Request was canceled '405': description: (Real code 11004) Request already processed '406': description: (Real code 11005) Error obtaining screening reports /v{version}/screening/criminal-report/{id}: get: tags: - Screening Reports summary: Get criminal background report (HTML) description: Available since API version 1. Returns HTML criminal background report for completed screening. operationId: get_api_v1_criminal_report parameters: - name: id in: path description: Screening request ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: HTML criminal report content: application/json: schema: properties: report: description: HTML formatted criminal report type: string type: object '401': description: Unauthorized '409': description: (Real code 8009) Cannot view this criminal report '404': description: (Real code 8004) User has no criminal report '403': description: (Real code 8005) Cannot get criminal report security: - XAuthToken: [] /v{version}/screening/credit-score/{id}: get: tags: - Screening Reports summary: Get credit score report (HTML) description: Available since API version 1. Returns HTML credit score report for completed screening. operationId: get_api_v1_credit_score_report parameters: - name: id in: path description: Screening request ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: HTML credit report content: application/json: schema: properties: report: description: HTML formatted credit report type: string type: object '401': description: Unauthorized '409': description: (Real code 8009) Cannot view this credit report '404': description: (Real code 8004) User has no credit report '403': description: (Real code 8005) Cannot view credit report security: - XAuthToken: [] /v{version}/screening/reports-preview/{id}: get: tags: - Screening Reports summary: Get screening reports preview description: Available since API version 1. Returns summary preview of both credit and criminal reports for completed screening. operationId: get_api_v1_reports_preview parameters: - name: id in: path description: Screening request ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Combined screening reports preview content: application/json: schema: properties: criminalReport: oneOf: - $ref: '#/components/schemas/CriminalReportDTO' nullable: true description: Criminal report summary with cases creditReport: oneOf: - $ref: '#/components/schemas/CreditReportDTO' nullable: true description: Credit report summary with score and details tenant: properties: email: type: string example: tenant@example.com firstName: type: string example: John lastName: type: string example: Doe type: object type: object '401': description: Unauthorized '403': description: (Real code 8005) Cannot view screening reports security: - XAuthToken: [] /v{version}/saved-search: post: tags: - Saved Search summary: Save search criteria description: Available since API version 4. Saves search criteria to receive email alerts when new matching listings are found. operationId: post_api_v4_save_search parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SavedSearchType' responses: '200': description: Search saved successfully content: application/json: schema: $ref: '#/components/schemas/SearchData' '400': description: Validation failed - Invalid email or search data /v{version}/saved-search/disable/{hash}: post: tags: - Saved Search summary: Disable saved search description: Available since API version 4. Disables an active saved search using its unique hash to stop receiving email alerts. operationId: post_api_v4_disable_save_search parameters: - name: hash in: path description: Unique hash identifier of the saved search required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Search disabled successfully '404': description: Saved search not found or already disabled /v{version}/apartment/search/ids: post: tags: - Search summary: Get listings by IDs description: Available since API version 2. Retrieves specific listings by their IDs with optional sorting and location-based relevance. operationId: post_api_v2_apartment_search_by_ids parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchIdsType' responses: '200': description: Listings retrieved successfully content: application/json: schema: $ref: '#/components/schemas/IdsResponse' '400': description: Validation failed - Invalid IDs or parameters /v{version}/apartment/search/similar-apartment/{id}: get: tags: - Search summary: Get similar listings description: Available since API version 1. Returns listings similar to the specified one based on location, price, and features. operationId: get_api_v1_apartment_search_similar_apartments parameters: - name: id in: path description: Listing ID to find similar properties for required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: page in: query description: Page number for pagination schema: type: integer default: 1 - name: limit in: query description: Number of results per page schema: type: integer default: 10 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Similar listings found content: application/json: schema: $ref: '#/components/schemas/SimilarResponse' '404': description: Original listing not found /v{version}/search-filter-config/{countryCode}/{transactionType}: get: tags: - Search summary: Get search filter configuration description: Available since API version 4. Returns available filter options for search based on country and transaction type (rental/sale). operationId: get_api_v4_search_filter parameters: - name: countryCode in: path description: ISO country code (e.g., US, CA, GB) required: true schema: type: string pattern: ^[A-Z]{2}$ example: US - name: transactionType in: path description: Type of property transaction required: true schema: type: string enum: - rental - sale example: rental - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Filter configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SearchFilterConfig' '404': description: No configuration found for this country and transaction type /v{version}/apartment/search/place-mobile: post: tags: - Mobile Search summary: Search listings by place (mobile) description: Available since API version 2. Mobile-optimized search for listings by place/address with amenities support. Supports legacy amenities format conversion. operationId: post_api_v2_apartment_search_place_mobile parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchPlaceMobileType' responses: '200': description: Search results for place-based mobile search content: application/json: schema: $ref: '#/components/schemas/PlaceResponse' '400': description: Validation failed - Invalid search parameters /v{version}/apartment/search/bounds-mobile: post: tags: - Mobile Search summary: Search listings by map bounds (mobile) description: Available since API version 2. Mobile-optimized search for listings within specified map boundaries (northeast/southwest coordinates). operationId: post_api_v2_apartment_search_bounds_mobile parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchBoundsMobileType' responses: '200': description: Search results for bounds-based mobile search content: application/json: schema: $ref: '#/components/schemas/BoundsResponse' '400': description: Validation failed - Invalid map bounds or search parameters /v{version}/apartment/search/nearby-mobile: post: tags: - Mobile Search summary: Search nearby listings (mobile) description: Available since API version 2. Mobile-optimized search for listings near specific coordinates with radius-based filtering. operationId: post_api_v2_apartment_search_nearby parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchNearbyMobileType' responses: '200': description: Search results for nearby mobile search content: application/json: schema: $ref: '#/components/schemas/NearbyResponse' '400': description: Validation failed - Invalid coordinates or search parameters /v{version}/apartment/search/init: post: tags: - Search summary: Initialize Search description: Available since API version 4. Initializes search parameters from URL and returns initial search data with map configuration. operationId: post_api_v4_apartment_search_init parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InitType' responses: '200': description: Search initialized successfully with parsed parameters and initial data content: application/json: schema: description: Initial search response with parsed URL parameters type: object '400': description: Bad request - Invalid URL or search parameters '404': description: Place not found in search URL '405': description: (Real code 13001) Search place could not be resolved /v{version}/apartment/search/place: post: tags: - Search summary: Search listings by place (web) description: Available since API version 4. Web-optimized search for listings by specific place or address with full filtering capabilities. operationId: post_api_v4_apartment_search_place parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchPlaceWebType' responses: '200': description: Search results for place-based Search content: application/json: schema: $ref: '#/components/schemas/SearchResponse' '400': description: Bad request - Invalid search parameters '404': description: No results found or search window too large /v{version}/apartment/search/bounds: post: tags: - Search summary: Search listings by map bounds (web) description: Available since API version 4. Web-optimized search for listings within specified rectangular map area defined by coordinates. operationId: post_api_v4_apartment_search_bounds parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSearchBoundsWebType' responses: '200': description: Search results for bounds-based Search content: application/json: schema: $ref: '#/components/schemas/SearchResponse' '400': description: Bad request - Invalid map bounds or search parameters '404': description: No results found or search window too large /v{version}/apartment/search/buckets: post: tags: - Search summary: Get search buckets description: Available since API version 1. Returns aggregated data buckets for search faceting and filtering (DEPRECATED - consider using newer search endpoints). operationId: post_api_v1_apartment_search_buckets parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: content: application/json: schema: properties: url: description: Search URL to parse type: string mapWidth: description: Map width for bounds calculation type: integer mapHeight: description: Map height for bounds calculation type: integer type: object responses: '200': description: Search buckets data '400': description: Bad request - Missing or invalid URL deprecated: true /v{version}/apartment/search/price-settings: post: tags: - Search summary: Get price settings description: Available since API version 4. Returns recommended price ranges and settings for search filters based on location and market data. operationId: post_api_v4_listing_search_price_settings parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PriceSettingsType' responses: '200': description: Price settings and recommendations content: application/json: schema: description: Price range recommendations and market data type: object '400': description: Bad request - Invalid parameters '404': description: Location not found for price analysis /v{version}/apartment/search/content: get: tags: - Search summary: Get search content description: Available since API version 4. Returns SEO content and metadata for search results pages based on search URL. operationId: get_api_v4_listing_search_content parameters: - name: url in: query description: Search URL to generate content for schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: SEO content and metadata for search page content: application/json: schema: description: SEO content including title, description, and structured data type: object post: tags: - Search summary: Get search content (POST) description: Available since API version 4. Returns SEO content and metadata for search results pages based on search URL. operationId: post_api_v4_listing_search_content parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/URLRequest' responses: '200': description: SEO content and metadata for search page content: application/json: schema: description: SEO content including title, description, and structured data type: object /v{version}/apartment/search/related-content: get: tags: - Search summary: Get related search content description: Available since API version 4. Returns related search suggestions and content recommendations based on current search URL. operationId: get_api_v4_listing_search_related_content parameters: - name: url in: query description: Current search URL to find related content for schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Related search content and suggestions content: application/json: schema: description: Related searches and content recommendations type: object post: tags: - Search summary: Get related search content (POST) description: Available since API version 4. Returns related search suggestions and content recommendations based on current search URL. operationId: post_api_v4_listing_search_related_content parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/URLRequest' responses: '200': description: Related search content and suggestions content: application/json: schema: description: Related searches and content recommendations type: object /v{version}/seo_redirect_url/{id}/hit: post: tags: - SEO Redirects summary: Track redirect hit description: Available since API version 1. Records a hit/click for the specified redirect URL for analytics and tracking purposes. operationId: post_api_v1_seo_redirect_url_hit parameters: - name: id in: path description: Redirect ID to track required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '204': description: Hit recorded successfully '404': description: Redirect not found /v{version}/seo_redirect_url: get: tags: - SEO Redirects summary: Get all active redirects description: Available since API version 1. Returns list of all active SEO redirects with their URLs and configuration. operationId: get_api_v1_seo_redirect_url_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: List of active redirects content: application/json: schema: type: array items: $ref: '#/components/schemas/Redirect' /v{version}/search_seo_url: post: tags: - SEO URLs summary: Generate SEO-optimized search URL description: Available since API version 1. Generates canonical, SEO-friendly URLs for search pages based on location and search parameters. operationId: post_api_v1_apartment_seo_url parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ListingSeoUrl' responses: '200': description: SEO URL generated successfully content: application/json: schema: properties: url: description: Generated SEO-friendly search URL type: string example: /apartments-for-rent/new-york-ny type: object '400': description: Bad request - Validation failed '404': description: Location not found or cannot be geocoded /v{version}/sms: post: tags: - SMS summary: Send SMS message description: Available since API version 1. Sends SMS message to specified phone number. Used for promotional messages like app download links. operationId: post_api_v1_complain_sms_send parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: required: - type - to properties: type: description: Type of SMS message to send type: string enum: - downloadApplication example: downloadApplication to: description: Phone number to send SMS to (without + prefix) type: integer example: 1234567890 type: object responses: '200': description: SMS sent successfully content: application/json: schema: properties: [] type: object example: [] '400': description: Bad request - Invalid phone number or SMS type '401': description: Unauthorized - Authentication required security: - XAuthToken: [] /v{version}/stripe/connected/webhook: post: operationId: post_api_v1_stripe_connected_webhook parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/stripe/direct/webhook: post: operationId: post_api_v1_stripe_direct_webhook parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/subscription: get: tags: - Subscriptions summary: Get user subscription preferences description: Available since API version 1. Returns current subscription status for all notification groups. Can be accessed via JWT token from email unsubscribe links. operationId: get_api_v1_subscription_list parameters: - name: reference in: query description: JWT token for accessing subscriptions without authentication (from email links) schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: User subscription preferences content: application/json: schema: type: object additionalProperties: description: Subscription status for each notification group type: boolean example: groupNewMessages: true groupApplicationTenant: false groupProperties: true weaklyDigestNews: true '401': description: Unauthorized - Invalid or missing authentication '403': description: Access denied - Invalid JWT reference token security: - XAuthToken: [] post: tags: - Subscriptions summary: Update user subscription preferences description: Available since API version 1. Updates subscription preferences for specific notification groups. Can be accessed via JWT token from email unsubscribe links. operationId: post_api_v1_subscription_list_edit parameters: - name: reference in: query description: JWT token for accessing subscriptions without authentication (from email links) schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: type: object additionalProperties: description: New subscription status for notification groups type: boolean example: groupNewMessages: true groupApplicationTenant: false weaklyDigestNews: true responses: '200': description: Subscriptions updated successfully content: application/json: schema: type: object additionalProperties: type: boolean '400': description: Bad request - Invalid subscription data '401': description: Unauthorized - Invalid or missing authentication '403': description: Access denied - Invalid JWT reference token security: - XAuthToken: [] /v{version}/subscription/type-status/{groupType}/toggle: post: tags: - Subscriptions summary: Toggle subscription type (SMS/Email) description: Available since API version 1. Toggles all notifications of specified type (SMS or Email) on/off. Returns new subscription status. operationId: post_api_v1_subscription_type_toggle parameters: - name: groupType in: path description: Type of notifications to toggle required: true schema: type: string pattern: sms|email enum: - sms - email - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Subscription status after toggle content: application/json: schema: description: True if subscribed, false if unsubscribed type: boolean '401': description: Unauthorized - Authentication required security: - XAuthToken: [] /v{version}/subscription/type-status: get: tags: - Subscriptions summary: Get subscription type statuses description: Available since API version 1. Returns overall subscription status for SMS and Email notification types. operationId: get_api_v1_subscription_type parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Subscription type statuses content: application/json: schema: properties: sms: description: SMS notifications enabled type: boolean email: description: Email notifications enabled type: boolean type: object example: sms: true email: false '401': description: Unauthorized - Authentication required security: - XAuthToken: [] /v{version}/translation/listing/{id}: post: tags: - Translation summary: Translate listing name and description description: Available since API version 4. Translates listing title and description to the specified target locale using AI translation service. operationId: post_api_v4_listing_translate parameters: - name: id in: path description: Listing ID to translate required: true schema: type: integer maximum: 2147483646 pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Translation completed successfully content: application/json: schema: $ref: '#/components/schemas/ListingTranslation' '404': description: Listing not found '405': description: (Real code 24001) Translation service error - content could not be translated /v{version}/user/feature/payment/{id}: get: tags: - Features summary: Get feature payment details. description: Available since API version 1. Returns details of a specific feature payment. operationId: get_api_v1_feature_payment_view parameters: - name: id in: path description: Payment ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns feature payment details. content: application/json: schema: $ref: '#/components/schemas/FeaturePayment' '404': description: Payment not found /v{version}/user/feature/{type}: get: tags: - Features summary: Get feature information. description: Available since API version 1. Returns feature status and availability for the current user. operationId: get_api_v1_feature_view parameters: - name: type in: path description: Feature type required: true schema: type: string pattern: \w+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns feature information. content: application/json: schema: properties: isActive: description: Whether feature is active for user type: boolean isLocked: description: Whether feature is locked for user type: boolean type: object '404': description: Feature type not found /v{version}/user/feature/{type}/ticket: get: tags: - Features summary: Get unused feature ticket. description: Available since API version 1. Returns unused feature ticket for the specified type. operationId: get_api_v1_feature_view_ticket parameters: - name: type in: path description: Feature type required: true schema: type: string pattern: \w+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns feature ticket or null. content: application/json: schema: $ref: '#/components/schemas/FeatureTicket' '401': description: Unauthorized security: - XAuthToken: [] /v{version}/user/feature/price/{currency}: get: tags: - Features summary: Get feature prices for currency. description: Available since API version 1. Returns feature prices for the specified currency. operationId: get_api_v1_feature_view_prices parameters: - name: currency in: path description: Currency code (e.g., USD, EUR) required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns feature prices. content: application/json: schema: type: object '400': description: Invalid currency /v{version}/user/feature/payment/stripe/feature/{type}: post: tags: - Features - Payments summary: Create Stripe payment for feature. description: Available since API version 1. Creates a Stripe payment intent for purchasing a feature. operationId: post_api_v1_feature_create_stripe_payment parameters: - name: type in: path description: Feature type required: true schema: type: string pattern: \w+ - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: false content: application/json: schema: properties: screening_reference: description: Screening request reference (required for screening feature) type: string type: object responses: '200': description: Payment intent created successfully. content: application/json: schema: properties: stripe_payment: $ref: '#/components/schemas/StripePayment' feature_payment: $ref: '#/components/schemas/FeaturePayment' clientSecret: description: Stripe client secret for payment confirmation type: string type: object '400': description: Invalid feature type '404': description: Screening request not found '409': description: Screening request already paid /v{version}/user: get: tags: - User summary: Get the current authenticated user profile. description: Available since API version 1. operationId: get_api_v1_user_me_get parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns the authenticated user profile. content: application/json: schema: $ref: '#/components/schemas/User2' '401': description: Unauthorized security: - XAuthToken: [] post: tags: - User summary: Update the profile of the current authenticated user. description: Available since API version 1. operationId: post_api_v1_user_update parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountProfileType' responses: '200': description: Profile updated successfully. content: application/json: schema: $ref: '#/components/schemas/User2' '400': description: Validation failed. '401': description: Unauthorized security: - XAuthToken: [] delete: tags: - User summary: Delete a user account (admin only). description: Available since API version 3. operationId: delete_api_v3_user_delete parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '204': description: User deleted. '400': description: Cannot delete account with active rentals '401': description: Unauthorized '403': description: Forbidden security: - XAuthToken: [] /v{version}/user/local: post: tags: - User summary: Update local settings of the authenticated user. description: Available since API version 4. operationId: post_api_v4_user_update_local_settings parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountLocalSettingsType' responses: '200': description: Local settings updated successfully. content: application/json: schema: $ref: '#/components/schemas/User2' '400': description: Validation failed. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/user/picture: post: tags: - User summary: Update the profile picture of the authenticated user. description: Available since API version 1. operationId: post_api_v1_user_picture parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountProfilePictureType' responses: '204': description: Profile picture updated. '400': description: Invalid image. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/user/{id}: get: tags: - User summary: Get public profile of a user. description: Available since API version 1. operationId: get_api_v1_user_get parameters: - name: id in: path description: User ID required: true schema: type: integer pattern: \d+ - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns public user profile. content: application/json: schema: $ref: '#/components/schemas/User8' '401': description: Unauthorized '404': description: User not found security: - XAuthToken: [] /v{version}/user/email-verify/{reference}: post: tags: - User summary: Verify user email with reference token. description: Available since API version 1. operationId: post_api_v1_user_set_verify_email parameters: - name: reference in: path description: Email verification reference token required: true schema: type: string - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Email verified successfully. content: application/json: schema: $ref: '#/components/schemas/User2' '401': description: Unauthorized '400': description: Invalid reference token security: - XAuthToken: [] /v{version}/user/email-verify: put: tags: - User summary: Mark email verification reminder as shown. description: Available since API version 1. operationId: put_api_v1_user_verify_email_shown parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Reminder marked as shown. '401': description: Unauthorized security: - XAuthToken: [] post: tags: - User summary: Resend email verification message. description: Available since API version 1. operationId: post_api_v1_user_verify_email_resend parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Verification email resent. '401': description: Unauthorized '400': description: Email already verified or rate limited security: - XAuthToken: [] /v{version}/user/location/info: get: tags: - User summary: Get user location information based on IP. description: Available since API version 4. Returns IP address and country information based on request headers. operationId: get_api_v1_user_location_info parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns user location information. content: application/json: schema: properties: ip: description: User IP address type: string nullable: true country: description: Country code from CloudFlare type: string nullable: true type: object /v{version}/user/{id}/profile-apartment-list: get: tags: - User - Listings summary: Get user profile apartment listings. description: Available since API version 1. Returns paginated list of apartments for a specific user profile. operationId: get_api_v1_user_profile_apartment_list parameters: - name: id in: path description: User ID required: true schema: type: integer pattern: \d+ - name: page in: query description: Page number for pagination required: false schema: type: integer default: 1 - name: limit in: query description: Items per page required: false schema: type: integer default: 10 - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns paginated list of user apartments. content: application/json: schema: properties: items: type: array items: $ref: '#/components/schemas/ProfileListingResponse' total: description: Total number of items type: integer page: description: Current page number type: integer type: object '401': description: Unauthorized '404': description: User not found security: - XAuthToken: [] /v{version}/user/settings: get: tags: - User Settings summary: Get user settings by keys. description: Available since API version 1. Returns user settings values for specified keys. operationId: get_api_v1_user_settings_get parameters: - name: keys in: query description: Comma-separated list of setting keys to retrieve required: true schema: type: string example: theme,language,notifications - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns user settings as key-value pairs. content: application/json: schema: type: object '401': description: Unauthorized '400': description: Invalid keys parameter security: - XAuthToken: [] post: tags: - User Settings summary: Set user settings. description: Available since API version 1. Sets user settings with provided key-value pairs. operationId: post_api_v1_user_settings_set parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: type: object example: theme: dark language: en notifications: enabled responses: '204': description: Settings updated successfully. '401': description: Unauthorized security: - XAuthToken: [] /v{version}/user/status/type/activate: post: tags: - User Status summary: Activate user premium or VIP status. description: Available since API version 1. Activates pending premium or VIP user status. operationId: post_api_v1_user_status_activate parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Status activated successfully. content: application/json: schema: $ref: '#/components/schemas/User2' '401': description: Unauthorized '400': description: No pending status to activate security: - XAuthToken: [] /v{version}/user/verify/callback: post: tags: - User Verification summary: Handle IDology verification callback. description: Available since API version 1. Webhook endpoint for IDology verification service callbacks. operationId: post_api_v1_user_verify_callback parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: description: IDology callback payload type: object responses: '200': description: Callback processed successfully. '400': description: Invalid callback payload /v{version}/user/verify: post: tags: - User Verification summary: Start user verification process (US only). description: Available since API version 1. Step 1 of US user verification process using IDology. operationId: post_api_v1_user_verify parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountVerifyType' responses: '200': description: Verification started successfully. content: application/json: schema: properties: user: $ref: '#/components/schemas/User2' status: type: boolean questions: type: boolean transactionId: type: integer questionsData: type: array items: type: object type: object '400': description: Validation failed or phone not verified '401': description: Unauthorized '409': description: Already verified or max attempts reached security: - XAuthToken: [] /v{version}/user/verify/verify-init: post: tags: - User Verification summary: Initialize verification process (non-US). description: Available since API version 1. Step 1 of international user verification process. operationId: post_api_v1_user_verify_init parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifyInitType' responses: '200': description: Verification initialized successfully. content: application/json: schema: properties: transactionId: description: Transaction ID for document upload type: integer type: object '400': description: Validation failed or phone not verified '401': description: Unauthorized '409': description: Already verified or has pending request security: - XAuthToken: [] /v{version}/user/verify/verify-by-documents: post: tags: - User Verification summary: Upload documents for verification (non-US). description: Available since API version 1. Step 2 of international user verification process. operationId: post_api_v1_user_verify_by_documents parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/VerifyByDocumentsType' responses: '200': description: Documents uploaded successfully. '400': description: Invalid documents or validation failed '401': description: Unauthorized '409': description: Already verified or has pending request security: - XAuthToken: [] /v{version}/user/verify/verify-document-status: get: tags: - User Verification summary: Check document verification status (non-US). description: Available since API version 1. Step 3 of international user verification - check processing status. operationId: get_api_v1_user_verify_document_status parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: '200': description: Returns verification status. content: application/json: schema: properties: status: description: Verification status or null if no request type: string nullable: true type: object '401': description: Unauthorized '403': description: Verification violated security: - XAuthToken: [] /v{version}/user/verify/answer: post: tags: - User Verification summary: Submit verification question answers (US only). description: Available since API version 1. Step 2 of US user verification process. operationId: post_api_v1_user_verify_answers parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnswersVerifyQuestionsType' responses: '200': description: Answers submitted successfully. content: application/json: schema: properties: user: $ref: '#/components/schemas/User2' status: description: Verification status type: boolean type: object '400': description: Invalid answers or validation failed '401': description: Unauthorized '409': description: Already verified security: - XAuthToken: [] /v{version}/user/phone: post: tags: - User Phone Verification summary: Change user phone number and send verification code. description: Available since API version 1. Updates user phone number and sends SMS verification code. operationId: post_api_v1_user_phone_change parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountPhoneType' responses: '200': description: Verification code sent successfully. '400': description: Validation failed, recaptcha failed, or phone already verified '401': description: Unauthorized '429': description: Rate limit exceeded security: - XAuthToken: [] /v{version}/user/phone/code: post: tags: - User Phone Verification summary: Validate phone verification code. description: Available since API version 1. Validates the SMS verification code and marks phone as verified. operationId: post_api_v1_user_phone_code_validate parameters: - name: version in: path required: true schema: type: string pattern: \d+ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneVerificationRequest' responses: '200': description: Phone verified successfully. content: application/json: schema: $ref: '#/components/schemas/User2' '400': description: Invalid verification code or phone already verified '401': description: Unauthorized '500': description: Internal server error security: - XAuthToken: [] /v{version}/email/render/{type}: post: operationId: post_email_render_preview parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: type in: path required: true schema: type: string responses: default: description: '' /v{version}/email/types: get: operationId: get_get_email_types parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/email/parameters/{type}: get: operationId: get_get_email_parameters parameters: - name: version in: path required: true schema: type: string pattern: \d+ - name: type in: path required: true schema: type: string responses: default: description: '' /v{version}/email/send: post: operationId: post_email_test_send parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/push-testing-helper/notifications-list: get: operationId: get_api_v1_notification_test_helper_list parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/push-testing-helper/notification-send: post: operationId: post_api_v1_notification_test_helper_send parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-apartment: post: operationId: post_api_v1_test_helper_apartment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-rented-apartment: post: operationId: post_api_v1_test_helper_rented_apartment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-inactive-apartment: post: operationId: post_api_v1_test_helper_inactive_apartment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-apples-apartment: post: operationId: post_api_v1_test_helper_apples_apartment_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-declined-application: post: operationId: post_api_v1_test_helper_declined_application_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-roommates-application: post: operationId: post_api_v1_test_helper_roommates_application_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-application: post: operationId: post_api_v1_test_helper_application_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/create-application-proof-income: post: operationId: post_api_v1_test_helper_application_proof_create parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/update-contract-status: post: operationId: post_api_v1_test_helper_update_contract_status parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' /v{version}/testing-helper/update-apartment-listed-at: post: operationId: post_api_v1_test_helper_update_apartment_listed_at parameters: - name: version in: path required: true schema: type: string pattern: \d+ responses: default: description: '' components: schemas: ApplicantAttachmentType: required: - proofIncomeFile - applicantId properties: proofIncomeFile: [] applicantId: type: integer type: object ApplicantAttachment: properties: id: type: integer fileName: type: string mimeType: type: string size: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Company: properties: id: type: integer name: type: string maxLength: 255 minLength: 1 phone: type: integer maxLength: 15 minLength: 7 website: type: string maxLength: 255 minLength: 1 logoThumbs: type: string email: type: string maxLength: 255 minLength: 1 city: type: string maxLength: 255 minLength: 1 countryCode: type: string maxLength: 2 minLength: 2 provider: type: string externalId: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object UserOauthProvider: properties: id: type: integer provider: type: string providerId: type: string connectId: type: string nameFirst: type: string nameLast: type: string pictureUrl: type: string appId: type: string type: object State: properties: id: type: integer shortName: type: string default: null maxLength: 200 minLength: 1 nullable: true name: type: string default: null maxLength: 255 minLength: 1 nullable: true description: type: string type: object UserAddress: required: - street - houseNumber - city - zip properties: street: type: string maxLength: 255 minLength: 1 houseNumber: type: string maxLength: 255 minLength: 1 streetType: type: string maxLength: 10 nullable: true city: type: string maxLength: 255 minLength: 3 state: $ref: '#/components/schemas/State' zip: type: string maxLength: 9 minLength: 5 type: object UserCreditScore: properties: score: type: integer creditScoreUpdatedAt: type: string format: date-time alert: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object UserCriminalReport: properties: criminalRecordFound: type: boolean default: false status: type: integer maxLength: 10 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object User: required: - nameFirst - nameLast - username - phone - birthday properties: hasPassword: type: boolean phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 company: $ref: '#/components/schemas/Company' companyName: type: string maxLength: 255 minLength: 1 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 birthday: type: string format: date-time bio: type: string maxLength: 1500 oauthProviders: type: array items: $ref: '#/components/schemas/UserOauthProvider' address: $ref: '#/components/schemas/UserAddress' creditScore: $ref: '#/components/schemas/UserCreditScore' criminalReport: $ref: '#/components/schemas/UserCriminalReport' stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer' active: type: boolean default: true fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true emailNotVerifiedAfter: type: string format: date-time lastActiveAt: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending authToken: type: string rentalHistory: type: array items: $ref: '#/components/schemas/UserRentalHistory' deleted: type: boolean default: false rentalPaymentAccount: $ref: '#/components/schemas/RentalPaymentAccount' newsletterSubscription: type: boolean default: false premiumPartner: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft isRaiUser: type: boolean default: false type: object UserStripeCustomer: properties: customerId: type: string user: $ref: '#/components/schemas/User' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object UserRentalHistory: required: - address - city - homeownerPhone properties: id: type: integer user: $ref: '#/components/schemas/User' applicantId: type: integer address: type: string maxLength: 255 minLength: 3 city: type: string maxLength: 255 minLength: 3 price: type: integer term: type: integer homeownerPhone: type: integer maxLength: 15 minLength: 7 type: object RentalPaymentAccount: properties: stripeAccountId: type: string isStripeOnboardingFinished: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Price: properties: [] type: object ListingPicture: required: - id properties: id: type: integer imageThumbs: type: string order: type: integer type: type: string default: picture type: object VirtualTour: required: - url properties: id: type: integer url: type: string isMain: type: boolean default: false duration: type: integer thumbnailUrl: type: string publishedAt: type: string format: date-time type: object AdminLevelCollection: properties: [] type: object Coordinates: properties: latitude: type: number format: float longitude: type: number format: float type: object Bounds: properties: northeast: $ref: '#/components/schemas/Coordinates' southwest: $ref: '#/components/schemas/Coordinates' type: object Country: properties: shortCode: title: 'ISO 3166-1 alpha-2 Use in geocoding responses from Google.' type: string longCode: title: ISO 3166-1 alpha-3. type: string name: type: string phone: type: string type: object ListingAddress: properties: latitude: type: number format: float default: 0 longitude: type: number format: float default: 0 apartmentNumber: type: string maxLength: 64 minLength: 1 state: $ref: '#/components/schemas/State' providedBy: type: string providerId: type: string default: null nullable: true adminLevels: default: null nullable: true oneOf: - $ref: '#/components/schemas/AdminLevelCollection' coordinates: default: null nullable: true oneOf: - $ref: '#/components/schemas/Coordinates' bounds: default: null nullable: true oneOf: - $ref: '#/components/schemas/Bounds' streetNumber: type: string default: null maxLength: 64 minLength: 1 nullable: true streetName: type: string default: null maxLength: 255 minLength: 1 nullable: true postalCode: type: string default: null nullable: true locality: type: string default: null maxLength: 255 minLength: 1 nullable: true sublocality: type: string default: null maxLength: 255 minLength: 1 nullable: true country: default: null nullable: true oneOf: - $ref: '#/components/schemas/Country' timezone: type: string default: null nullable: true shortAddress: type: string exposeAddress: type: boolean default: true type: object ListingApplication: properties: deposit: type: string minimum: 0 accepted: title: for iOs compatibility. type: boolean declined: title: for iOs compatibility. type: boolean expired: title: for iOs compatibility. type: boolean deleted: title: for iOs compatibility. type: boolean id: type: integer listing: $ref: '#/components/schemas/Listing' price: type: string minimum: 1 term: type: integer moveIn: type: string format: date-time rental: $ref: '#/components/schemas/Rental' applicants: type: array items: $ref: '#/components/schemas/Applicant' declinedReason: type: string maxLength: 255 minLength: 1 new: type: boolean default: true showNotification: type: boolean default: false status: type: string default: draft notes: type: string maxLength: 1000 minLength: 1 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object OpenHouseApplication: properties: id: type: integer user: $ref: '#/components/schemas/User' phone: type: integer confirmed: type: boolean default: false declined: type: boolean default: false expired: type: boolean default: false declineReason: type: string date: type: string format: date-time message: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Listing: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string hasVirtualTour: type: boolean originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress' apartmentApplies: type: array items: $ref: '#/components/schemas/ListingApplication' openHouseApplications: type: array items: $ref: '#/components/schemas/OpenHouseApplication' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving maintenance: type: array items: $ref: '#/components/schemas/Maintenance' amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Maintenance: required: - description properties: id: type: integer listing: $ref: '#/components/schemas/Listing' user: $ref: '#/components/schemas/User' description: type: string maxLength: 255 minLength: 2 priority: type: integer type: object Rental: properties: listing: $ref: '#/components/schemas/Listing' apartmentId: title: for iOs compatibility. type: integer latestPayment: $ref: '#/components/schemas/RentalPayment' activeSubscription: $ref: '#/components/schemas/RentalSubscription' id: type: integer application: $ref: '#/components/schemas/ListingApplication' moveIn: type: string format: date-time moveOut: type: string format: date-time firstPaymentDate: type: string format: date-time monthlyRentAmount: type: string maximum: 9999999 minimum: 1 monthlyDueDate: type: integer tenantFirstName: type: string tenantLastName: type: string tenantEmail: type: string address: type: string unit: type: string homeowner: $ref: '#/components/schemas/User' tenant: $ref: '#/components/schemas/User' status: type: string default: pending isChargeable: type: boolean default: false documents: type: array items: $ref: '#/components/schemas/UserDocument' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object RentalPaymentUnit: properties: paymentAmount: type: string id: type: integer type: type: string amount: type: string type: object StripePayment: properties: id: type: integer amount: type: string default: '0' status: type: string cancellationReason: type: string errorMessage: type: string internalType: type: string last4Digits: type: string paymentMethod: type: string default: card createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object RentalSubscription: properties: id: type: integer amount: type: string default: '0' commissionFee: type: string default: '0' amountTotal: type: string default: '0' currency: type: string comment: type: string status: type: string default: incomplete paymentMethod: type: string default: card createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object RentalPayment: properties: amount: type: string default: '0' expireAt: type: string format: date-time id: type: integer rental: $ref: '#/components/schemas/Rental' user: $ref: '#/components/schemas/User' units: type: array items: $ref: '#/components/schemas/RentalPaymentUnit' comment: type: string currency: type: string paymentCurrency: type: string rate: type: string commissionFee: type: string default: '0' amountTotal: type: string default: '0' status: type: string default: created stripePayment: $ref: '#/components/schemas/StripePayment' rentalSubscription: $ref: '#/components/schemas/RentalSubscription' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object UserDocument: required: - name properties: id: type: integer name: type: string mimeType: type: string size: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Applicant: required: - employmentType properties: id: type: integer apartmentApply: $ref: '#/components/schemas/ListingApplication' user: $ref: '#/components/schemas/User' references: type: array items: $ref: '#/components/schemas/ApplicantReference' attachments: type: array items: $ref: '#/components/schemas/ApplicantAttachment' creator: type: boolean default: false active: type: boolean default: false rentalHistory: type: array items: $ref: '#/components/schemas/UserRentalHistory' employmentType: type: string enum: - employed - unemployed - student employmentName: type: string maxLength: 255 minLength: 1 employmentTitle: type: string maxLength: 255 minLength: 1 employmentSourceIncome: type: string maxLength: 255 minLength: 1 employmentIncome: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ApplicantReference: required: - name - relationship - phone properties: id: type: integer applicant: $ref: '#/components/schemas/Applicant' name: type: string maxLength: 255 minLength: 1 relationship: type: string maxLength: 255 minLength: 1 email: type: string phone: type: integer maxLength: 15 minLength: 7 type: object ApplicantReferencesType: required: - name - phone - relationship - email properties: name: type: string phone: type: integer relationship: type: string email: type: string type: object ApplicantAttachmentsType: required: - id properties: id: type: integer type: object ApplicantRentalHistoryType: required: - address - city - term properties: address: type: string city: type: string price: type: integer term: type: integer type: object ApplicantFormType: required: - term - moveIn - notes - references - proofIncomes - rentalHistory - employmentType - employmentIncome - employmentTitle - employmentName - employmentSourceIncome properties: term: type: integer moveIn: type: integer notes: type: string references: type: array items: $ref: '#/components/schemas/ApplicantReferencesType' proofIncomes: type: array items: $ref: '#/components/schemas/ApplicantAttachmentsType' rentalHistory: type: array items: $ref: '#/components/schemas/ApplicantRentalHistoryType' employmentType: type: string enum: - employed - unemployed - student employmentIncome: type: integer employmentTitle: type: string employmentName: type: string employmentSourceIncome: type: string type: object ApplyResponse: properties: apartmentApplyStatus: type: string apartmentApplyPricingStatus: type: string apartmentApplyWaitingFlag: type: boolean type: object State2: properties: id: type: integer shortName: type: string default: null maxLength: 200 minLength: 1 nullable: true name: type: string default: null maxLength: 255 minLength: 1 nullable: true type: object UserAddress2: required: - street - houseNumber - city - zip properties: street: type: string maxLength: 255 minLength: 1 houseNumber: type: string maxLength: 255 minLength: 1 streetType: type: string maxLength: 10 nullable: true city: type: string maxLength: 255 minLength: 3 state: $ref: '#/components/schemas/State2' zip: type: string maxLength: 9 minLength: 5 type: object UserStripeCustomer2: properties: customerId: type: string user: $ref: '#/components/schemas/User2' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object User2: required: - nameFirst - nameLast - username - phone - birthday properties: hasPassword: type: boolean phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 company: $ref: '#/components/schemas/Company' companyName: type: string maxLength: 255 minLength: 1 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 birthday: type: string format: date-time bio: type: string maxLength: 1500 oauthProviders: type: array items: $ref: '#/components/schemas/UserOauthProvider' address: $ref: '#/components/schemas/UserAddress2' creditScore: $ref: '#/components/schemas/UserCreditScore' criminalReport: $ref: '#/components/schemas/UserCriminalReport' stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer2' active: type: boolean default: true fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true emailNotVerifiedAfter: type: string format: date-time lastActiveAt: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending authToken: type: string deleted: type: boolean default: false rentalPaymentAccount: $ref: '#/components/schemas/RentalPaymentAccount' newsletterSubscription: type: boolean default: false premiumPartner: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft isRaiUser: type: boolean default: false type: object UserAuthResponseV3: required: - nameFirst - nameLast - username - phone - birthday properties: hasPassword: type: boolean phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 company: $ref: '#/components/schemas/Company' companyName: type: string maxLength: 255 minLength: 1 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 birthday: type: string format: date-time bio: type: string maxLength: 1500 oauthProviders: type: array items: $ref: '#/components/schemas/UserOauthProvider' address: $ref: '#/components/schemas/UserAddress2' creditScore: $ref: '#/components/schemas/UserCreditScore' criminalReport: $ref: '#/components/schemas/UserCriminalReport' stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer2' active: type: boolean default: true fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true emailNotVerifiedAfter: type: string format: date-time lastActiveAt: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending authToken: type: string deleted: type: boolean default: false rentalPaymentAccount: $ref: '#/components/schemas/RentalPaymentAccount' newsletterSubscription: type: boolean default: false premiumPartner: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft isRaiUser: type: boolean default: false intercomSecret: type: string type: object union: [] UserAuthResponse: properties: id: type: integer hasPassword: type: boolean locale: type: string nameFirst: type: string nameMiddle: type: string nameLast: type: string companyName: type: string username: type: string statusType: type: string phone: type: integer birthday: type: string format: date-time bio: type: string fromNotBerryForbiddenCountry: type: boolean active: type: boolean verified: type: boolean emailVerified: type: boolean phoneVerified: type: boolean registered: type: boolean emailNotVerifiedAfter: type: string format: date-time lastActiveAt: type: string format: date-time createdAt: type: string format: date-time authToken: type: string phoneCountryCode: $ref: '#/components/schemas/union' roles: $ref: '#/components/schemas/union' currency: type: string lengthUnit: type: string profilePictureThumbs: type: string rentalPaymentAccount: $ref: '#/components/schemas/RentalPaymentAccount' intercomSecret: type: string type: object OAuthUserUser: properties: id: type: integer nameFirst: type: string nameLast: type: string username: type: string phone: type: string pictureUrl: type: string type: object OAuthUserResponse: properties: userData: $ref: '#/components/schemas/OAuthUserUser' action: type: string accessToken: type: string oauthProvider: type: string oauthConnectId: type: string type: object ComplainUserType: required: - toId properties: toId: type: integer type: object ComplainUser: properties: id: type: integer userFrom: $ref: '#/components/schemas/User' userTo: $ref: '#/components/schemas/User' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ComplainListingType: required: - toId properties: toId: type: integer type: object ComplainApartment: properties: id: type: integer userFrom: $ref: '#/components/schemas/User' apartmentTo: $ref: '#/components/schemas/Listing' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object User3: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer3' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object UserStripeCustomer3: properties: customerId: type: string user: $ref: '#/components/schemas/User3' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ContractSignature: properties: isOwner: type: boolean default: false id: type: integer status: type: integer providerId: type: string signerEmail: type: string signerName: type: string user: $ref: '#/components/schemas/User3' userId: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingAddress2: properties: latitude: type: number format: float default: 0 longitude: type: number format: float default: 0 apartmentNumber: type: string maxLength: 64 minLength: 1 state: $ref: '#/components/schemas/State2' providedBy: type: string providerId: type: string default: null nullable: true adminLevels: default: null nullable: true oneOf: - $ref: '#/components/schemas/AdminLevelCollection' coordinates: default: null nullable: true oneOf: - $ref: '#/components/schemas/Coordinates' bounds: default: null nullable: true oneOf: - $ref: '#/components/schemas/Bounds' streetNumber: type: string default: null maxLength: 64 minLength: 1 nullable: true streetName: type: string default: null maxLength: 255 minLength: 1 nullable: true postalCode: type: string default: null nullable: true locality: type: string default: null maxLength: 255 minLength: 1 nullable: true sublocality: type: string default: null maxLength: 255 minLength: 1 nullable: true country: default: null nullable: true oneOf: - $ref: '#/components/schemas/Country' timezone: type: string default: null nullable: true shortAddress: type: string exposeAddress: type: boolean default: true type: object Listing2: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User3' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress2' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Applicant2: properties: id: type: integer user: $ref: '#/components/schemas/User3' creator: type: boolean default: false active: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingApplication2: properties: deposit: type: string minimum: 0 accepted: title: for iOs compatibility. type: boolean declined: title: for iOs compatibility. type: boolean expired: title: for iOs compatibility. type: boolean deleted: title: for iOs compatibility. type: boolean id: type: integer price: type: string minimum: 1 term: type: integer moveIn: type: string format: date-time applicants: type: array items: $ref: '#/components/schemas/Applicant2' declinedReason: type: string maxLength: 255 minLength: 1 new: type: boolean default: true showNotification: type: boolean default: false status: type: string default: draft createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Rental2: properties: listing: $ref: '#/components/schemas/Listing2' apartmentId: title: for iOs compatibility. type: integer activeSubscription: $ref: '#/components/schemas/RentalSubscription' id: type: integer application: $ref: '#/components/schemas/ListingApplication2' moveIn: type: string format: date-time moveOut: type: string format: date-time firstPaymentDate: type: string format: date-time monthlyRentAmount: type: string maximum: 9999999 minimum: 1 monthlyDueDate: type: integer tenantFirstName: type: string tenantLastName: type: string tenantEmail: type: string address: type: string unit: type: string homeowner: $ref: '#/components/schemas/User3' tenant: $ref: '#/components/schemas/User3' status: type: string default: pending isChargeable: type: boolean default: false documents: type: array items: $ref: '#/components/schemas/UserDocument' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Contract: properties: isEmail: title: Indicates that process of signing must be done via email (not HelloSign embedded way). type: boolean contractSignatures: type: array items: $ref: '#/components/schemas/ContractSignature' user: $ref: '#/components/schemas/User3' id: type: integer providerId: type: string name: type: string signerName: type: string signerEmail: type: string providerTemplateId: type: string status: type: integer enum: - 1 - 2 - 3 createdBy: type: integer rental: $ref: '#/components/schemas/Rental2' userNotificationsCount: type: integer default: 0 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ContractSignature2: properties: isOwner: type: boolean default: false id: type: integer status: type: integer providerId: type: string signerEmail: type: string signerName: type: string user: $ref: '#/components/schemas/User' userId: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Contract2: properties: isEmail: title: Indicates that process of signing must be done via email (not HelloSign embedded way). type: boolean contractSignatures: type: array items: $ref: '#/components/schemas/ContractSignature2' user: $ref: '#/components/schemas/User' id: type: integer providerId: type: string name: type: string signerName: type: string signerEmail: type: string providerTemplateId: type: string status: type: integer enum: - 1 - 2 - 3 createdBy: type: integer rental: $ref: '#/components/schemas/Rental' userNotificationsCount: type: integer default: 0 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ContractTemplate: properties: id: type: integer fileName: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Device: properties: id: type: integer firebaseToken: type: string deviceToken: type: string deviceModel: type: string deviceId: type: string deviceOs: type: string deviceOsVersion: type: string type: object VirtualTour2: type: object State3: type: object Country2: type: object ListingAddress3: properties: apartmentNumber: type: string maxLength: 64 minLength: 1 state: $ref: '#/components/schemas/State3' streetNumber: type: string default: null maxLength: 64 minLength: 1 nullable: true streetName: type: string default: null maxLength: 255 minLength: 1 nullable: true postalCode: type: string default: null nullable: true locality: type: string default: null maxLength: 255 minLength: 1 nullable: true sublocality: type: string default: null maxLength: 255 minLength: 1 nullable: true country: default: null nullable: true oneOf: - $ref: '#/components/schemas/Country2' type: object Listing3: required: - name - type properties: price: type: number format: float priceTerm: type: string currency: type: string hasVirtualTour: type: boolean id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour2' address: $ref: '#/components/schemas/ListingAddress3' name: type: string maxLength: 255 minLength: 1 space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deleted: type: boolean default: false bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer type: object FavoriteApartmentsUsers: properties: apartment: $ref: '#/components/schemas/Listing3' id: type: integer type: object InquiryType: required: - price - deposit - name - email - phone - message properties: price: type: number deposit: type: integer name: type: string email: type: string phone: type: integer message: type: string type: object Inquiry: required: - name - email - phone properties: id: type: integer name: type: string maxLength: 255 email: type: string phone: type: string maxLength: 15 minLength: 7 message: type: string maxLength: 1000 status: type: integer default: 1 price: type: string minimum: 0 deposit: type: integer maximum: 2147483647 minimum: 0 openHouseDate: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object IntegrationRequest: properties: id: type: integer name: type: string companyName: type: string email: type: string phone: type: string message: type: string nullable: true createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingWithCountersResponse: properties: [] type: object ListingAddressType: required: - apartmentNumber - longitude - latitude - formattedAddress properties: apartmentNumber: type: string longitude: type: string latitude: type: string formattedAddress: type: string type: object ListingPictureType: required: - id - imageFile - apartmentId - cover - order - type properties: id: type: integer imageFile: [] apartmentId: type: integer cover: type: boolean order: type: integer type: type: string enum: - floorPlan - picture type: object VirtualTourType: required: - url properties: url: type: string type: object ListingType: required: - name - space - price - deposit - description - available - address - apartmentPictures - bedrooms - baths - type - depositPet - amenities - customAmenities - virtualTours - cat - dog - autorenew properties: name: type: string space: type: integer price: type: number deposit: type: integer description: type: string available: type: integer address: $ref: '#/components/schemas/ListingAddressType' apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPictureType' bedrooms: type: integer baths: type: number type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other depositPet: type: integer amenities: type: array items: type: string enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - newConstruction - securitySystem customAmenities: type: array items: type: string virtualTours: type: array items: $ref: '#/components/schemas/VirtualTourType' cat: type: string dog: type: string autorenew: type: string type: object User4: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer4' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object UserStripeCustomer4: properties: customerId: type: string user: $ref: '#/components/schemas/User4' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Listing4: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User4' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress2' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Listing5: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object PicturesIdsType: required: - picturesIds properties: picturesIds: type: array items: type: integer type: object User5: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer5' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object UserStripeCustomer5: properties: customerId: type: string user: $ref: '#/components/schemas/User5' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Listing6: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User5' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress2' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Rental3: properties: listing: $ref: '#/components/schemas/Listing6' apartmentId: title: for iOs compatibility. type: integer activeSubscription: $ref: '#/components/schemas/RentalSubscription' id: type: integer application: $ref: '#/components/schemas/ListingApplication3' moveIn: type: string format: date-time moveOut: type: string format: date-time firstPaymentDate: type: string format: date-time monthlyRentAmount: type: string maximum: 9999999 minimum: 1 monthlyDueDate: type: integer tenantFirstName: type: string tenantLastName: type: string tenantEmail: type: string address: type: string unit: type: string homeowner: $ref: '#/components/schemas/User5' tenant: $ref: '#/components/schemas/User5' status: type: string default: pending isChargeable: type: boolean default: false documents: type: array items: $ref: '#/components/schemas/UserDocument' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Applicant3: properties: id: type: integer user: $ref: '#/components/schemas/User5' creator: type: boolean default: false active: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingApplication3: properties: deposit: type: string minimum: 0 accepted: title: for iOs compatibility. type: boolean declined: title: for iOs compatibility. type: boolean expired: title: for iOs compatibility. type: boolean deleted: title: for iOs compatibility. type: boolean id: type: integer price: type: string minimum: 1 term: type: integer moveIn: type: string format: date-time rental: $ref: '#/components/schemas/Rental3' applicants: type: array items: $ref: '#/components/schemas/Applicant3' declinedReason: type: string maxLength: 255 minLength: 1 new: type: boolean default: true showNotification: type: boolean default: false status: type: string default: draft notes: type: string maxLength: 1000 minLength: 1 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ConversationMessage: required: - body properties: id: type: integer conversationId: type: integer userId: type: integer body: type: string maxLength: 1000 minLength: 1 readed: type: boolean default: false viewed: type: boolean default: false notified: type: boolean default: false notifiedAt: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ConversationResponse: properties: conversationId: type: integer lastMessage: $ref: '#/components/schemas/ConversationMessage' partner: $ref: '#/components/schemas/User' apartmentId: type: integer isViewed: type: boolean topicType: type: string apartmentAddress: $ref: '#/components/schemas/ListingAddress' countUnreaded: type: integer countUnviewed: type: integer apartmentUrl: type: string type: object MessageType: required: - body properties: body: type: string type: object NewsletterUserType: required: - email - type properties: email: type: string type: type: string enum: - newsLetter - newsLetterHomeowner type: object NewsletterUser: required: - email properties: email: type: string maxLength: 255 minLength: 1 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object RentalType: required: - moveIn - moveOut - firstPaymentDate - monthlyRentAmount - monthlyDueDate - tenantFirstName - tenantLastName - tenantEmail - address - unit properties: moveIn: type: integer moveOut: type: integer firstPaymentDate: type: integer monthlyRentAmount: type: number monthlyDueDate: type: integer tenantFirstName: type: string tenantLastName: type: string tenantEmail: type: string address: type: string unit: type: string type: object User6: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer6' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending rentalHistory: type: array items: $ref: '#/components/schemas/UserRentalHistory2' deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object UserStripeCustomer6: properties: customerId: type: string user: $ref: '#/components/schemas/User6' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object UserRentalHistory2: required: - address - city - homeownerPhone properties: id: type: integer user: $ref: '#/components/schemas/User6' applicantId: type: integer address: type: string maxLength: 255 minLength: 3 city: type: string maxLength: 255 minLength: 3 price: type: integer term: type: integer homeownerPhone: type: integer maxLength: 15 minLength: 7 type: object Listing7: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User6' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress2' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Applicant4: required: - employmentType properties: id: type: integer user: $ref: '#/components/schemas/User6' references: type: array items: $ref: '#/components/schemas/ApplicantReference2' attachments: type: array items: $ref: '#/components/schemas/ApplicantAttachment' creator: type: boolean default: false active: type: boolean default: false rentalHistory: type: array items: $ref: '#/components/schemas/UserRentalHistory2' employmentType: type: string enum: - employed - unemployed - student employmentName: type: string maxLength: 255 minLength: 1 employmentTitle: type: string maxLength: 255 minLength: 1 employmentSourceIncome: type: string maxLength: 255 minLength: 1 employmentIncome: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ApplicantReference2: required: - name - relationship - phone properties: id: type: integer applicant: $ref: '#/components/schemas/Applicant4' name: type: string maxLength: 255 minLength: 1 relationship: type: string maxLength: 255 minLength: 1 email: type: string phone: type: integer maxLength: 15 minLength: 7 type: object ListingApplication4: properties: deposit: type: string minimum: 0 accepted: title: for iOs compatibility. type: boolean declined: title: for iOs compatibility. type: boolean expired: title: for iOs compatibility. type: boolean deleted: title: for iOs compatibility. type: boolean id: type: integer listing: $ref: '#/components/schemas/Listing7' price: type: string minimum: 1 term: type: integer moveIn: type: string format: date-time applicants: type: array items: $ref: '#/components/schemas/Applicant4' declinedReason: type: string maxLength: 255 minLength: 1 new: type: boolean default: true showNotification: type: boolean default: false status: type: string default: draft notes: type: string maxLength: 1000 minLength: 1 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object Rental4: properties: listing: $ref: '#/components/schemas/Listing7' apartmentId: title: for iOs compatibility. type: integer activeSubscription: $ref: '#/components/schemas/RentalSubscription' id: type: integer application: $ref: '#/components/schemas/ListingApplication4' moveIn: type: string format: date-time moveOut: type: string format: date-time firstPaymentDate: type: string format: date-time monthlyRentAmount: type: string maximum: 9999999 minimum: 1 monthlyDueDate: type: integer tenantFirstName: type: string tenantLastName: type: string tenantEmail: type: string address: type: string unit: type: string homeowner: $ref: '#/components/schemas/User6' tenant: $ref: '#/components/schemas/User6' status: type: string default: pending isChargeable: type: boolean default: false documents: type: array items: $ref: '#/components/schemas/UserDocument' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object InviteHomeownerType: required: - email properties: email: type: string type: object AccountBalanceResponse: properties: [] type: object NotificationsState: properties: readed: type: boolean viewed: type: boolean type: object RentalPaymentResponseItem: properties: rentalPayment: $ref: '#/components/schemas/RentalPayment' notificationsState: $ref: '#/components/schemas/NotificationsState' type: object StripePaymentCreatedResponse: properties: clientSecret: type: string rentalPaymentId: type: integer amount: type: string amountTotal: type: string commissionFee: type: string currency: type: string paymentMethod: type: string stripePaymentIntentId: type: string type: object RentalPaymentType: required: - comment - amount - paymentMethod properties: comment: type: string amount: type: number paymentMethod: type: string type: object StripeSubscriptionCreatedResponse: properties: clientSecret: type: string rentalSubscriptionId: type: integer amount: type: string amountTotal: type: string commissionFee: type: string status: type: string currency: type: string paymentMethod: type: string stripeSubscriptionId: type: string type: object ScreeningResponse: properties: [] type: object ScreeningRequestCreateType: required: - tenantNameFirst - tenantNameLast - tenantEmail properties: tenantNameFirst: type: string tenantNameLast: type: string tenantEmail: type: string type: object ScreeningRequestsType: required: - users properties: users: type: array items: $ref: '#/components/schemas/ScreeningRequestCreateType' type: object User7: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer7' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object UserStripeCustomer7: properties: customerId: type: string user: $ref: '#/components/schemas/User7' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object FeatureTicket: properties: id: type: integer code: type: string type: type: string usedAt: type: string format: date-time isUsed: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ScreeningRequest: properties: id: type: integer homeowner: $ref: '#/components/schemas/User7' status: type: integer default: 1 active: type: boolean default: true deleted: type: boolean default: false tenantEmail: type: string tenantNameFirst: type: string tenantNameLast: type: string reference: type: string creditScore: $ref: '#/components/schemas/UserCreditScore' criminalReport: $ref: '#/components/schemas/UserCriminalReport' expiredAt: type: string format: date-time featureTicket: $ref: '#/components/schemas/FeatureTicket' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ScreeningRequest2: properties: id: type: integer homeowner: $ref: '#/components/schemas/User' status: type: integer default: 1 active: type: boolean default: true deleted: type: boolean default: false tenantEmail: type: string tenantNameFirst: type: string tenantNameLast: type: string reference: type: string creditScore: $ref: '#/components/schemas/UserCreditScore' criminalReport: $ref: '#/components/schemas/UserCriminalReport' expiredAt: type: string format: date-time featureTicket: $ref: '#/components/schemas/FeatureTicket' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object AccountAddressType: required: - street - houseNumber - city - zip - stateId properties: street: type: string houseNumber: type: string streetType: type: string city: type: string zip: type: string stateId: type: integer type: object AccountCreditScoreType: required: - ssn properties: ssn: type: string type: object AccountCreditScoreCheckType: required: - nameFirst - nameMiddle - nameLast - phone - birthday - address - creditScore - pinCode properties: nameFirst: type: string nameMiddle: type: string nameLast: type: string phone: type: integer birthday: type: integer address: $ref: '#/components/schemas/AccountAddressType' creditScore: $ref: '#/components/schemas/AccountCreditScoreType' pinCode: type: string type: object CriminalReportDTO: properties: reportId: type: string criminalReportFound: type: boolean status: type: string default: NO STATUS type: object CreditReportDTO: properties: reportId: type: string score: type: integer collectionsCount: type: number format: float inquiriesCount: type: number format: float openAccounts: type: integer totalCreditLimitAmount: type: number format: float totalCreditBalanceAmount: type: number format: float delinquencies: type: integer publicRecords: type: integer availablePercent: type: integer alert: type: string status: type: string type: object SavedSearchFilterType: required: - types - minPrice - maxPrice - formattedAddress - transactionType - bedrooms properties: types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other minPrice: type: integer maxPrice: type: integer formattedAddress: type: string transactionType: type: string enum: - rental - sale bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 type: object SavedSearchType: required: - email - filter - originalCurrency properties: email: type: string filter: $ref: '#/components/schemas/SavedSearchFilterType' originalCurrency: type: string type: object SearchData: required: - email properties: id: type: integer email: type: string status: type: integer reminderSent: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingSearchIdsType: required: - ids - sort - latitude - longitude - transactionType properties: ids: type: array items: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc latitude: type: number longitude: type: number transactionType: type: string enum: - rental - sale type: object IdsResponse: properties: [] type: object SimilarResponse: properties: total: type: integer searchRoute: type: string default: null nullable: true type: object SearchFilterConfig: required: - transactionType properties: id: type: integer country: $ref: '#/components/schemas/Country' transactionType: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingSearchPlaceMobileType: required: - formattedAddress - transactionType - minPrice - maxPrice - minPriceOriginal - maxPriceOriginal - originalCurrency - currency - bedrooms - baths - types - isFilterChanged - cat - dog - page - sort - hasVirtualTour - mapView - googleId - mapWidth - mapHeight - mapScale properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale minPrice: type: integer maxPrice: type: integer minPriceOriginal: type: integer maxPriceOriginal: type: integer originalCurrency: type: string currency: type: string bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 baths: type: array items: type: number enum: - 1 - 2 - 3 - 4 - 5 types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other isFilterChanged: type: string cat: type: string dog: type: string page: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc hasVirtualTour: type: string mapView: type: string googleId: type: string mapWidth: type: number mapHeight: type: number mapScale: type: number type: object PlaceResponse: type: object ListingSearchBoundsMobileType: required: - formattedAddress - transactionType - minPrice - maxPrice - minPriceOriginal - maxPriceOriginal - originalCurrency - currency - bedrooms - baths - types - isFilterChanged - cat - dog - page - sort - hasVirtualTour - mapView - zoom - seLatitude - seLongitude - nwLatitude - nwLongitude properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale minPrice: type: integer maxPrice: type: integer minPriceOriginal: type: integer maxPriceOriginal: type: integer originalCurrency: type: string currency: type: string bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 baths: type: array items: type: number enum: - 1 - 2 - 3 - 4 - 5 types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other isFilterChanged: type: string cat: type: string dog: type: string page: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc hasVirtualTour: type: string mapView: type: string zoom: type: number seLatitude: type: string seLongitude: type: string nwLatitude: type: string nwLongitude: type: string type: object BoundsResponse: type: object ListingSearchNearbyMobileType: required: - formattedAddress - transactionType - minPrice - maxPrice - minPriceOriginal - maxPriceOriginal - originalCurrency - currency - bedrooms - baths - types - isFilterChanged - cat - dog - page - sort - hasVirtualTour - mapView - latitude - longitude properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale minPrice: type: integer maxPrice: type: integer minPriceOriginal: type: integer maxPriceOriginal: type: integer originalCurrency: type: string currency: type: string bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 baths: type: array items: type: number enum: - 1 - 2 - 3 - 4 - 5 types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other isFilterChanged: type: string cat: type: string dog: type: string page: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc hasVirtualTour: type: string mapView: type: string latitude: type: number longitude: type: number type: object NearbyResponse: type: object InitType: required: - url - mapWidth - mapHeight - mapView properties: url: type: string mapWidth: type: number mapHeight: type: number mapView: type: string type: object ListingSearchPlaceWebType: required: - formattedAddress - transactionType - minPrice - maxPrice - minPriceOriginal - maxPriceOriginal - originalCurrency - currency - bedrooms - baths - types - isFilterChanged - cat - dog - page - sort - hasVirtualTour - mapView - googleId - mapWidth - mapHeight - mapScale - url - amenities properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale minPrice: type: integer maxPrice: type: integer minPriceOriginal: type: integer maxPriceOriginal: type: integer originalCurrency: type: string currency: type: string bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 baths: type: array items: type: number enum: - 1 - 2 - 3 - 4 - 5 types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other isFilterChanged: type: string cat: type: string dog: type: string page: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc hasVirtualTour: type: string mapView: type: string googleId: type: string mapWidth: type: number mapHeight: type: number mapScale: type: number url: type: string amenities: type: array items: type: string enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - newConstruction - securitySystem type: object SearchResponse: type: object ListingSearchBoundsWebType: required: - formattedAddress - transactionType - minPrice - maxPrice - minPriceOriginal - maxPriceOriginal - originalCurrency - currency - bedrooms - baths - types - isFilterChanged - cat - dog - page - sort - hasVirtualTour - mapView - zoom - seLatitude - seLongitude - nwLatitude - nwLongitude - url - amenities properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale minPrice: type: integer maxPrice: type: integer minPriceOriginal: type: integer maxPriceOriginal: type: integer originalCurrency: type: string currency: type: string bedrooms: type: array items: type: number enum: - 0 - 1 - 2 - 3 - 4 baths: type: array items: type: number enum: - 1 - 2 - 3 - 4 - 5 types: type: array items: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other isFilterChanged: type: string cat: type: string dog: type: string page: type: integer sort: type: string enum: - newest - relevance - price:asc - price:desc hasVirtualTour: type: string mapView: type: string zoom: type: number seLatitude: type: string seLongitude: type: string nwLatitude: type: string nwLongitude: type: string url: type: string amenities: type: array items: type: string enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - newConstruction - securitySystem type: object PriceSettingsType: required: - url - mapWidth - mapHeight - minPrice - maxPrice properties: url: type: string mapWidth: type: number mapHeight: type: number minPrice: type: number maxPrice: type: number type: object ParameterBag: properties: [] type: object InputBag: properties: [] type: object ServerBag: properties: [] type: object FileBag: properties: [] type: object HeaderBag: properties: [] type: object Closure: type: object Request: properties: httpMethodParameterOverride: type: boolean default: false attributes: title: Custom parameters. default: [] oneOf: - $ref: '#/components/schemas/ParameterBag' request: title: Request body parameters ($_POST). default: [] oneOf: - $ref: '#/components/schemas/InputBag' query: title: Query string parameters ($_GET). default: [] oneOf: - $ref: '#/components/schemas/InputBag' server: title: Server and execution environment parameters ($_SERVER). default: [] oneOf: - $ref: '#/components/schemas/ServerBag' files: title: Uploaded files ($_FILES). default: [] oneOf: - $ref: '#/components/schemas/FileBag' cookies: title: Cookies ($_COOKIE). default: [] oneOf: - $ref: '#/components/schemas/InputBag' headers: title: Headers (taken from the $_SERVER). oneOf: - $ref: '#/components/schemas/HeaderBag' pathInfo: type: string requestUri: type: string baseUrl: type: string basePath: type: string method: type: string format: type: string session: $ref: '#/components/schemas/union' locale: type: string defaultLocale: type: string default: en requestFactory: $ref: '#/components/schemas/Closure' preferredFormat: type: string isHostValid: type: boolean default: true isForwardedValid: type: boolean default: true isSafeContentPreferred: type: boolean trustedHeaderSet: type: integer default: -1 isIisRewrite: type: boolean default: false type: object URLRequest: required: - url properties: url: type: string originalRequest: $ref: '#/components/schemas/Request' type: object Redirect: required: - url - urlFrom properties: id: type: integer url: type: string maxLength: 512 urlFrom: type: string maxLength: 512 saveGetString: type: boolean default: false httpStatus: type: integer default: 301 enum: - 301 - 302 - 303 - 307 - 308 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object ListingSeoUrl: required: - formattedAddress - transactionType - mapView properties: formattedAddress: type: string transactionType: type: string enum: - rental - sale mapView: type: string type: object ListingTranslation: properties: description: type: string title: type: string language: type: string default: en_US type: object FeaturePayment: properties: id: type: integer amount: type: string currency: type: string status: type: integer default: 1 type: type: string nullable: true ticket: $ref: '#/components/schemas/FeatureTicket' createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object AccountProfileType: required: - companyName - nameFirst - nameMiddle - nameLast - facebookUrl - linkedinUrl - birthday - bio - plainPassword - oldPassword - profilePictureFile properties: companyName: type: string nameFirst: type: string nameMiddle: type: string nameLast: type: string facebookUrl: type: string linkedinUrl: type: string birthday: type: integer bio: type: string plainPassword: type: string format: password oldPassword: type: string format: password profilePictureFile: [] type: object AccountLocalSettingsType: required: - locale - currency - lengthUnit properties: locale: type: string currency: type: string lengthUnit: type: string type: object AccountProfilePictureType: required: - profilePictureFile properties: profilePictureFile: [] type: object User8: required: - nameFirst - nameLast - username - phone properties: phoneCountryCode: type: string id: type: integer nameFirst: type: string maxLength: 255 minLength: 2 nameMiddle: type: string maxLength: 255 minLength: 1 nameLast: type: string maxLength: 255 minLength: 2 username: type: string maxLength: 255 minLength: 1 profilePictureThumbs: type: string phone: type: string maxLength: 15 minLength: 7 stripeCustomer: $ref: '#/components/schemas/UserStripeCustomer' fromNotBerryForbiddenCountry: type: boolean default: false verified: type: boolean default: false emailVerified: type: boolean default: false phoneVerified: type: boolean default: false registered: type: boolean default: true statusType: type: string default: regular enum: - regular - premium - premium_pending - vip - vip_pending deleted: type: boolean default: false locale: type: string default: en_US enum: - en_US - es_ES currency: type: string lengthUnit: type: string enum: - m - ft type: object ProfileListingResponse: required: - name - type - description - externalKey properties: openHousesEnabled: type: boolean leadUrl: type: boolean price: type: number format: float priceTerm: type: string user: $ref: '#/components/schemas/User' active: type: boolean rented: type: boolean providerType: type: string editedByUser: title: legacy. type: boolean expired: type: boolean promoted: type: boolean currency: type: string company: $ref: '#/components/schemas/Company' expireAt: type: integer listingStatus: type: string hasVirtualTour: type: boolean originalPrice: $ref: '#/components/schemas/Price' rooms: title: legacy. type: integer traffic: title: legacy. type: integer rentDuration: title: legacy. type: integer unitNumber: title: legacy. type: string levelId: title: legacy. type: integer shapeId: title: legacy. type: string panoramaId: title: legacy. type: string occupant: title: legacy. type: string id: type: integer apartmentPictures: type: array items: $ref: '#/components/schemas/ListingPicture' virtualTours: type: array items: $ref: '#/components/schemas/VirtualTour' address: $ref: '#/components/schemas/ListingAddress' apartmentApplies: type: array items: $ref: '#/components/schemas/ListingApplication' openHouseApplications: type: array items: $ref: '#/components/schemas/OpenHouseApplication' name: type: string maxLength: 255 minLength: 1 available: type: string format: date-time space: type: integer maximum: 99999 lengthUnit: type: string enum: - ft - m type: type: string enum: - apartment - house - condo - townhouse - duplex - loft - room - land - other deposit: type: integer maximum: 999999999 minimum: 0 utilitiesPrice: type: integer maximum: 999999999 minimum: 0 description: type: string maxLength: 10000 isAIDescription: type: boolean default: false deleted: type: boolean default: false syndicated: type: boolean default: false externalUrl: type: string maxLength: 2048 seoUrl: type: string externalKey: type: string listedAt: type: string format: date-time publishedAt: title: Date when listing was published on MLS. type: string format: date-time provider: type: string default: rentberry enum: - rentberry - apartmentlist - apts - avail - bondnewyork - bostonapartments - collegestudentapartments - commercialpropertykenya - eurovilla - expedia - findroommate - flatio - fourstay - foreclosure - fultongrace - goplaceit - harlington - hemavi - homestay - housinganywhere - housestay - huurstunt - inlife - joivy - junehome - krn - levit - livinfrance - mapaprop - morningcroissant - mystate - navent - onthemarket - openimmo - padfinders - padsplit - parisattitude - pepehousing - pin - realbird - reallyo - realtymx - realtyww - rentalsource - rentengine - renthia - rentinsingapore - rentola - roomless - roomster - samtrygg - siamrealestate - speedhome - spotahome - 3dapartment - turbotenant - uniplaces - wunderflats - yourrentals - yucalive - xml2u - ziptoss - cheznestor - coliving - domaingroup - erasmusu - explorastay - rentcatalogue - homelike - hyrenbostad - lejebolig - listhub - properstar - studentsglobalrelocation - zappyrent - zeusliving maintenance: type: array items: $ref: '#/components/schemas/Maintenance' amenities: type: array items: enum: - gym - pool - garden - parking - doorman - storage - balcony - elevator - fireplace - highRise - roofDeck - furnished - dishwasher - beachView - washerUnit - hardwoodFloors - airConditioning - wheelchairAccessible - attic - basement - bbqArea - deck - disabledAccess - garageParking - greenhouse - intercom - lawn - new - secondarySuite - security - waterfront - wired - newConstruction - securitySystem - hotTube - studentFriendly - utilitiesIncluded - energyEfficient - solarPowered - kitchen - privateKitchen - sharedKitchen - internet - wifi - tv - localTv - cableTv - computer - laptopWorkspace - hotTube - tub - iron - towels - ironingBoard - toiletries - guestToilet - buzzerWirelessIntercom - privateEntrance - hairDryer - suitableForEvents - centralizedHeating - autonomousHeating - busStop - trainStation - airport - bicyclesForUse - library - shoppingCenter - hospital - park - golf - museums - healthClub - amusementPark - cinema - restaurant - gamesRoom - horseStables - bowling - smokeAlarm - smokeAlarmEachFloor - sportsArena - coDetector - cellar - blankets - pillows - bedClothes - broom - floorWiper - shower - toaster - microwave - fridge - coffee - kettle - cutlery - vacuumCleaner - stove - detergents - bidet - hourSecurity24 - fishing - waterSports - creditApplication - smokingFriendly - brokerFee - garbageDisposer - iceMaker - trashCompactor - warmingDrawer - coffeeSystem - coffeeSystemRoughIn - cooktop - cooktopElectric - cooktopElectric2Burner - cooktopElectric6Burner - cooktopGas - cooktopGas2Burner - cooktopGas5Burner - cooktopGas6Burner - cooktopGasCustom - cooktopInduction - cooktopInduction2Burner - cooktopInduction6Burner - dishwasherDrawer - dishwasherTwoOrMore - dryer - dryerDualFuel - dryerElectric110v - dryerElectric220v - dryerGas - dryerGasRoughIn - oven - ovenConvection - ovenDouble - ovenDoubleElectric - ovenDoubleGas - ovenGas - ovenGas3Wide - ovenSelfCleaning - ovenSteam - ovenTwin - ovenTwinElectric - ovenTwinGas - ovenTwinGas3Wide - ovenTwinMixed - range - rangeBuiltIn - rangeDual - rangeDual10Burner - rangeDual6Burner - rangeDual8Burner - rangeElectric - rangeGas - rangeGas10Burner - rangeGas6Burner - rangeGas8Burner - rangeInduction - rangeOther - rangetopElectric - rangetopElectric2Burner - rangetopElectric6Burner - rangetopGas - rangetopGas10Burner - rangetopGas2Burner - rangetopGas4BurnerCompact - rangetopGas6Burner - rangetopGas8Burner - rangetopGasCustom - rangetopInduction - rangetopInduction2Burner - rangetopInduction6Burner - freezer - freezerCompact - freezerUpright - refrigerator - refrigeratorBar - refrigeratorBuiltIn - refrigeratorBuiltInWithPlumbing - refrigeratorDrawer - refrigeratorSideBySide - refrigeratorUndercounter - refrigeratorWineStorage - refrigeratorWithPlumbing - vacuumSystem - vacuumSystemRoughIn - ventHood - ventHood10Burner - ventHood6Burner - ventHood8Burner - washer - washerFrontLoad - washerSteamer - washerTopLoad - washerDryerCombo - washerDryerStack - waterFilter - waterInstantHot - waterPurifier - waterSoftener - architectureAFrame - architectureArtDeco - architectureBungalow - architectureCapeCod - architectureColonial - architectureContemporary - architectureConventional - architectureCottage - architectureCraftsman - architectureCreole - architectureDome - architectureDutchColonial - architectureEnglish - architectureFederal - architectureFrench - architectureFrenchProvincial - architectureGeorgian - architectureGothicRevival - architectureGreekRevival - architectureHighRise - architectureHistorical - architectureInternational - architectureItalianate - architectureLoft - architectureMansion - architectureMediterranean - architectureModern - architectureMonterey - architectureMountain - architectureNational - architectureNeoclassical - architectureNewTraditional - architecturePrairie - architecturePueblo - architectureQueenAnne - architectureRambler - architectureRanch - architectureRegency - architectureRustic - architectureSaltbox - architectureSantaFe - architectureSecondEmpire - architectureShed - architectureShingle - architectureShotgun - architectureSpanish - architectureSpanishEclectic - architectureSplitLevel - architectureStick - architectureTudor - architectureVictorian - coolingAtticFan - coolingCeilingFan - coolingCentralAC - coolingCentralEvaporative - coolingCentralFan - coolingChilledWater - coolingDehumidifiers - coolingDessicantCooler - coolingEvaporative - coolingHeatPumps - coolingPartial - coolingRadiantFloor - coolingRadiantFloorGroundLoop - coolingRefrigeratorEvaporative - coolingSolarAcActive - coolingSolarAcPassive - coolingWallUnitAc - coolingWallUnitEvaporative - coolingWindowUnitAc - coolingWindowUnitEvaporative - coolingZonedAc - exteriorAdobe - exteriorAluminumSiding - exteriorAsbestos - exteriorAsphalt - exteriorBlock - exteriorBoardAndBatten - exteriorBrick - exteriorBrickAndWood - exteriorBrickVeneer - exteriorCedarSiding - exteriorComb - exteriorComposition - exteriorCompositionShingles - exteriorConcrete - exteriorConcreteBlock - exteriorEifs - exteriorFiberglass - exteriorGlass - exteriorHardboard - exteriorLog - exteriorLogSiding - exteriorMasonite - exteriorMasonry - exteriorMetal - exteriorMetalSiding - exteriorPouredConcrete - exteriorShinglesNotWood - exteriorStone - exteriorStoneVeneer - exteriorStucco - exteriorStuccoSynthetic - exteriorTile - exteriorTiltUpPreCastConcrete - exteriorVinylSiding - exteriorWood - exteriorWoodShingle - exteriorWoodSiding - coveringFloorBamboo - coveringFloorBrick - coveringFloorCarpet - coveringFloorCarpetFull - coveringFloorCarpetPartial - coveringFloorConcrete - coveringFloorConcreteBare - coveringFloorConcretePainted - coveringFloorCork - coveringFloorDrainage - coveringFloorEngineeredWood - coveringFloorGlass - coveringFloorGranite - coveringFloorHardwood - coveringFloorLaminate - coveringFloorLinoleum - coveringFloorLoadRestriction - coveringFloorMarble - coveringFloorParquetWood - coveringFloorRoughIn - coveringFloorSlate - coveringFloorSoftWood - coveringFloorSolidWood - coveringFloorSpecialty - coveringFloorSpecialtyConcrete - coveringFloorTile - coveringFloorTileCeramic - coveringFloorTilePorcelain - coveringFloorTileStone - coveringFloorTileOrStone - coveringFloorVinyl - coveringFloorWood - fuelHeatingButaneGas - fuelHeatingCoal - fuelHeatingElectric - fuelHeatingGeothermal - fuelHeatingKerosene - fuelHeatingNaturalGas - fuelHeatingOil - fuelHeatingPassiveHeatPump - fuelHeatingPassiveSolar - fuelHeatingPellet - fuelHeatingPropaneGas - fuelHeatingSolar - fuelHeatingSolarPanel - fuelHeatingWood - heatingBaseboard - heatingCentralFurnace - heatingElectricAirFilter - heatingFireplace - heatingFireplaceInsert - heatingFloorFurnace - heatingFloorWall - heatingForcedAir - heatingGeothermal - heatingGravityAir - heatingGravityHotWater - heatingHeatPump - heatingHotWater - heatingHotWaterRadiantFloor - heatingHumidifier - heatingPelletStove - heatingRadiant - heatingRadiantCeiling - heatingRadiantFloor - heatingRadiator - heatingSwChangeover - heatingSolarActive - heatingSolarActiveAndPassive - heatingSolarPassive - heatingSpaceHeater - heatingSteam - heatingWallUnit - heatingZoned - parkingAlley - parkingAssigned - parkingBoat - parkingBuiltIn - parkingCarport - parkingCommercial - parkingCovered - parkingDriveway - parkingFee - parkingFenced - parkingGarage - parkingGarageAttached - parkingGarageDetached - parkingGated - parkingGolfCart - parkingGuest - parkingHeated - parkingLeased - parkingMechanics - parkingMeter - parkingOffAlley - parkingOffStreet - parkingOffsite - parkingOnStreet - parkingOpen - parkingOversized - parkingOwned - parkingParkingLot - parkingParkingStructure - parkingPavedOrSurfaced - parkingPole - parkingPorteCochere - parkingPullThrough - parkingRamp - parkingRv - parkingSecured - parkingSideApron - parkingSideBySide - parkingSpecialNeeds - parkingStacked - parkingTandem - parkingTuckUnder - parkingUnassigned - parkingUndergroundBasement - parkingUnimproved - parkingValet - parkingWorkshop - parkingZonedPermit - roofAluminum - roofAsbestos - roofAsphalt - roofBuiltUp - roofClayTile - roofCompositionShingle - roofConcreteTile - roofCopper - roofCorrugatedMetal - roofGreen - roofMasoniteOrCementShake - roofMembrane - roofMetal - roofSlate - roofSolarPanel - roofStandingSeam - roofSteel - roofTarAndGravel - roofThatched - roofTile - roofUrethane - roofWoodShake - roofWoodShingle - viewAirport - viewAverage - viewBluff - viewBridge - viewCanyon - viewCity - viewDesert - viewForest - viewGolfCourse - viewHarbor - viewHills - viewLake - viewMarina - viewMountain - viewOcean - viewPanorama - viewPark - viewRavine - viewRiver - viewTerritorial - viewValley - viewVista - viewWater - studentFriendly - utilitiesIncluded default: [] transactionType: title: Property transaction type - "rental" or "sale". type: string default: rental enum: - rental - sale openHouse: title: Just text field (specifically needed for sale apartments). type: string status: type: string default: draft originalLanguage: type: string bedrooms: type: integer baths: type: number format: float floors: type: integer buildingUnitCount: title: legacy. type: integer parking: title: legacy. type: integer cooling: title: legacy. type: string heating: title: legacy. type: string yearBuilt: type: integer yearUpdated: title: legacy. type: integer lotSize: title: legacy. type: integer cat: type: boolean dog: type: boolean depositPet: type: integer maximum: 9999999 minimum: 0 autorenew: type: boolean section: title: legacy. type: string default: residential createdAt: type: string format: date-time updatedAt: type: string format: date-time type: object AccountVerifyType: required: - nameFirst - nameLast - birthday - ssn - address properties: nameFirst: type: string nameLast: type: string birthday: type: integer ssn: type: string address: $ref: '#/components/schemas/AccountAddressType' type: object VerifyInitType: required: - nameFirst - nameLast properties: nameFirst: type: string nameLast: type: string type: object VerifyByDocumentsType: required: - image - backImage - faceImage - queryId - countryCode - documentType properties: image: [] backImage: [] faceImage: [] queryId: type: string countryCode: type: string documentType: type: string enum: - driverLicense - idCard - passport type: object VerifyAnswerType: required: - type - answer properties: type: type: string answer: type: string type: object AnswersVerifyQuestionsType: required: - idNumber - answers properties: idNumber: type: integer answers: type: array items: $ref: '#/components/schemas/VerifyAnswerType' type: object AccountPhoneType: required: - phone properties: phone: type: integer type: object PhoneVerificationRequest: required: - phone - code properties: phone: type: integer code: type: integer maximum: 9999 minimum: 1000 type: object tags: - name: Applications description: Applications - name: Auth description: Auth - name: Notifications description: Notifications - name: Registration description: Registration - name: OAuth description: OAuth - name: Breadcrumbs description: Breadcrumbs - name: Complaints description: Complaints - name: Contracts description: Contracts - name: Contract Templates description: Contract Templates - name: Devices description: Devices - name: Events description: Events - name: Landing Pages description: Landing Pages - name: Landing Statistics description: Landing Statistics - name: Listings description: Listings - name: Integration Requests description: Integration Requests - name: Leads description: Leads - name: Listing Pictures description: Listing Pictures - name: Virtual Tours description: Virtual Tours - name: Location description: Location - name: Messages description: Messages - name: Newsletter description: Newsletter - name: Payments description: Payments - name: Search description: Search - name: Providers description: Providers - name: Rental description: Rental - name: Rental Payments description: Rental Payments - name: Rentals description: Rentals - name: Rental Subscription description: Rental Subscription - name: Resources description: Resources - name: Screening description: Screening - name: Screening Reports description: Screening Reports - name: Saved Search description: Saved Search - name: Mobile Search description: Mobile Search - name: SEO Redirects description: SEO Redirects - name: SEO URLs description: SEO URLs - name: SMS description: SMS - name: Subscriptions description: Subscriptions - name: Translation description: Translation - name: Features description: Features - name: User description: User - name: User Settings description: User Settings - name: User Status description: User Status - name: User Verification description: User Verification - name: User Phone Verification description: User Phone Verification