Rentberry API

Versioned REST API behind the Rentberry rental marketplace, described by an OpenAPI 3.0.0 document published in the Swagger UI at https://api.rentberry.com/docs. 188 paths / 220 operations across 44 tags covering rental applications and applicant attachments, authentication and social OAuth (Google, Apple) login, listings and listing pictures, virtual tours, search and saved searches, contracts and contract templates with e-signing, screening and screening reports, payments, rentals and rental subscriptions, messaging, notifications and subscriptions, user profile / settings / verification, geolocation, SEO URLs and translation. Requests are authenticated with an X-Auth-Token style bearer token issued by the auth/token operation.

OpenAPI Specification

rentberry-openapi.yml Raw ↑
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 ne

# --- truncated at 32 KB (545 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentberry/refs/heads/main/openapi/rentberry-openapi.yml